diff --git a/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C b/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C index 2b70f305685f60a509b88349497b35b4950ded1e..4729ac3bf34bac88c1d97c8367d5fb3f185dc765 100644 --- a/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C +++ b/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C @@ -45,33 +45,37 @@ int main(int argc, char *argv[]) #include "createTime.H" #include "createMesh.H" - IOdictionary dict + const dictionary NURBSdict ( - IOobject + IOdictionary ( - "dynamicMeshDict", - mesh.time().constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) + IOobject + ( + "dynamicMeshDict", + mesh.time().constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE, + false + ) + ).subDict("volumetricBSplinesMotionSolverCoeffs") ); + // Read box names and allocate size + wordList controlBoxes(NURBSdict.toc()); - const dictionary& coeffDict = - dict.subDict("volumetricBSplinesMotionSolverCoeffs"); - - wordList controlBoxes(coeffDict.get<wordList>("controlBoxes")); - - forAll(controlBoxes, iNURB) + for (const word& boxName : controlBoxes) { - // Creating an object writes the control points in the - // constructor - NURBS3DVolume::New - ( - coeffDict.subDict(controlBoxes[iNURB]), - mesh, - false // do not compute parametric coordinates - ); + if (NURBSdict.isDict(boxName)) + { + // Creating an object writes the control points in the + // constructor + NURBS3DVolume::New + ( + NURBSdict.subDict(boxName), + mesh, + false // do not compute parametric coordinates + ); + } } Info<< "End\n" << endl; diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethod/displacementMethod.C b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethod/displacementMethod.C index db9a4565312f194bb2c5d0a720789e00fd16868a..9ac5a2812c5fa73243e0ec374e929a64c984a0e9 100644 --- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethod/displacementMethod.C +++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethod/displacementMethod.C @@ -75,12 +75,11 @@ Foam::autoPtr<Foam::displacementMethod> Foam::displacementMethod::New false ) ); - word motionSolverName(dynamicMeshDict.get<word>("solver")); - word modelType("displacementMethod" + motionSolverName); + word solverType(dynamicMeshDict.get<word>("solver")); - Info<< "displacementMethod type : " << modelType << endl; + Info<< "displacementMethod type : " << solverType << endl; - auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType); + auto cstrIter = dictionaryConstructorTablePtr_->cfind(solverType); if (!cstrIter.found()) { @@ -88,9 +87,9 @@ Foam::autoPtr<Foam::displacementMethod> Foam::displacementMethod::New ( dynamicMeshDict, "solver", - modelType, + solverType, *dictionaryConstructorTablePtr_ - ) << exit(FatalError); + ) << exit(FatalIOError); } return autoPtr<displacementMethod>(cstrIter()(mesh, patchIDs)); } diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethoddisplacementLaplacian/displacementMethoddisplacementLaplacian.H b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethoddisplacementLaplacian/displacementMethoddisplacementLaplacian.H index 2a4c30245b1640a5792c4a5d4208bd4dc5fb81a7..d9f2f3faef57f1b0d31810380e50bcd94beaca18 100644 --- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethoddisplacementLaplacian/displacementMethoddisplacementLaplacian.H +++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethoddisplacementLaplacian/displacementMethoddisplacementLaplacian.H @@ -82,7 +82,7 @@ private: public: //- Runtime type information - TypeName("displacementMethoddisplacementLaplacian"); + TypeName("displacementLaplacian"); // Constructors diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodelasticityMotionSolver/displacementMethodelasticityMotionSolver.H b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodelasticityMotionSolver/displacementMethodelasticityMotionSolver.H index a4123641601f7350fbf7438f6edf4bc8c94b8e62..50b8ec4df825bfab82c9f6b1a51075b49497b4e4 100644 --- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodelasticityMotionSolver/displacementMethodelasticityMotionSolver.H +++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodelasticityMotionSolver/displacementMethodelasticityMotionSolver.H @@ -86,7 +86,7 @@ private: public: //- Runtime type information - TypeName("displacementMethodelasticityMotionSolver"); + TypeName("elasticityMotionSolver"); // Constructors diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodlaplacianMotionSolver/displacementMethodlaplacianMotionSolver.H b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodlaplacianMotionSolver/displacementMethodlaplacianMotionSolver.H index 294c0ddd2262b0a5fc3bbb2d0336cc66040bcfd0..083ab095893b01209457aa1b5733ac12c6e13b07 100644 --- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodlaplacianMotionSolver/displacementMethodlaplacianMotionSolver.H +++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodlaplacianMotionSolver/displacementMethodlaplacianMotionSolver.H @@ -83,7 +83,7 @@ private: public: //- Runtime type information - TypeName("displacementMethodlaplacianMotionSolver"); + TypeName("laplacianMotionSolver"); // Constructors diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvelocityLaplacian/displacementMethodvelocityLaplacian.H b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvelocityLaplacian/displacementMethodvelocityLaplacian.H index 1f109009e08ecb594b37525add0d16250db72f2f..d2bea03b438f88f257712cd88b473f6d88d18c2a 100644 --- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvelocityLaplacian/displacementMethodvelocityLaplacian.H +++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvelocityLaplacian/displacementMethodvelocityLaplacian.H @@ -84,7 +84,7 @@ private: public: //- Runtime type information - TypeName("displacementMethodvelocityLaplacian"); + TypeName("velocityLaplacian"); // Constructors diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.H b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.H index e82a17dd0f5d99d40aefb988b46d027aa6754bc5..283769544fa5e428534f8f0aef11c8108038fa9c 100644 --- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.H +++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.H @@ -77,7 +77,7 @@ private: public: //- Runtime type information - TypeName("displacementMethodvolumetricBSplinesMotionSolver"); + TypeName("volumetricBSplinesMotionSolver"); // Constructors diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovement/optMeshMovement.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovement/optMeshMovement.C index 794ad1b04e9a5f799e46694c27cd0ab9958d142e..e217065b30086f3eefd5eac1beec382b97a4d3eb 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovement/optMeshMovement.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovement/optMeshMovement.C @@ -110,7 +110,7 @@ Foam::autoPtr<Foam::optMeshMovement> Foam::optMeshMovement::New "type", modelType, *dictionaryConstructorTablePtr_ - ) << exit(FatalError); + ) << exit(FatalIOError); } return autoPtr<optMeshMovement>(cstrIter()(mesh, dict, patchIDs)); @@ -156,9 +156,10 @@ void Foam::optMeshMovement::writeMeshQualityMetrics() if (writeMeshQualityMetrics_) { cellQuality cellQualityEngine(mesh_); - tmp<scalarField> cellNonOrtho = cellQualityEngine.nonOrthogonality(); - tmp<scalarField> cellSkewness = cellQualityEngine.skewness(); - Info<< "Average, Max cell non - orthogonality " << gAverage(cellNonOrtho()) + tmp<scalarField> cellNonOrtho(cellQualityEngine.nonOrthogonality()); + tmp<scalarField> cellSkewness(cellQualityEngine.skewness()); + Info<< "Average, Max cell non - orthogonality " + << gAverage(cellNonOrtho()) << " " << gMax(cellNonOrtho()) << endl; Info<< "Average, Max cell skewness " << gAverage(cellSkewness()) << " " << gMax(cellSkewness()) << endl; diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/BFGS/BFGS.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/BFGS/BFGS.C index 26b80e1803d01a2e51fd293a110b6b44db27b63e..9cd0671d9da768d0a92579c32d66b673d23e6149 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/BFGS/BFGS.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/BFGS/BFGS.C @@ -51,11 +51,7 @@ void Foam::BFGS::allocateMatrices() // Set active design variables, if necessary if (activeDesignVars_.empty()) { - activeDesignVars_.setSize(correction_.size()); - forAll(activeDesignVars_, dvI) - { - activeDesignVars_[dvI] = dvI; - } + activeDesignVars_ = identity(objectiveDerivatives_.size()); } // Set previous HessianInv to be a diagonal matrix @@ -155,9 +151,14 @@ void Foam::BFGS::readFromDict() optMethodIODict_.readEntry("counter", counter_); optMethodIODict_.readEntry("eta", eta_); - label n = HessianInvOld_.n(); + const label n(HessianInvOld_.n()); HessianInv_ = SquareMatrix<scalar>(n, Zero); correction_ = scalarField(correctionOld_.size(), Zero); + + if (activeDesignVars_.empty()) + { + activeDesignVars_ = identity(n); + } } } diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/DBFGS/DBFGS.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/DBFGS/DBFGS.C index 0e5f0fe06c889a84ce47f1dfa318f1803f7b5636..fb38d03d126c9effebba96e84621bfa25dc53a10 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/DBFGS/DBFGS.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/DBFGS/DBFGS.C @@ -51,11 +51,7 @@ void Foam::DBFGS::allocateMatrices() // Set active design variables, if necessary if (activeDesignVars_.empty()) { - activeDesignVars_.setSize(correction_.size()); - forAll(activeDesignVars_, dvI) - { - activeDesignVars_[dvI] = dvI; - } + activeDesignVars_ = identity(objectiveDerivatives_.size()); } // Set previous Hessian to be a diagonal matrix @@ -162,6 +158,11 @@ void Foam::DBFGS::readFromDict() label n = HessianOld_.n(); Hessian_ = SquareMatrix<scalar>(n, Zero); correction_ = scalarField(correctionOld_.size(), Zero); + + if (activeDesignVars_.empty()) + { + activeDesignVars_ = identity(n); + } } } diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/LBFGS/LBFGS.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/LBFGS/LBFGS.C index c60d094b9fb452ef9df5078028c7ad9a8e40268e..5478281842ab518ba7b10d5108bd6ebf193b7ee5 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/LBFGS/LBFGS.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/LBFGS/LBFGS.C @@ -51,11 +51,7 @@ void Foam::LBFGS::allocateMatrices() // Set active design variables, if necessary if (activeDesignVars_.empty()) { - activeDesignVars_.setSize(objectiveDerivatives_.size()); - forAll(activeDesignVars_, dvI) - { - activeDesignVars_[dvI] = dvI; - } + activeDesignVars_ = identity(objectiveDerivatives_.size()); } // Allocate vectors @@ -184,6 +180,11 @@ void Foam::LBFGS::readFromDict() optMethodIODict_.readEntry("correctionOld", correctionOld_); correction_ = scalarField(correctionOld_.size(), Zero); + + if (activeDesignVars_.empty()) + { + activeDesignVars_ = identity(derivativesOld_.size()); + } } } diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SQP/SQP.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SQP/SQP.C index 8f91c5e2272f8d71e2a3170935086e6858b825e7..9d988abe83c7f3fc6882c10ccec83be079304e30 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SQP/SQP.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SQP/SQP.C @@ -58,11 +58,7 @@ void Foam::SQP::allocateMatrices() // Set active design variables, if necessary if (activeDesignVars_.empty()) { - activeDesignVars_.setSize(correction_.size()); - forAll(activeDesignVars_, dvI) - { - activeDesignVars_[dvI] = dvI; - } + activeDesignVars_ = identity(objectiveDerivatives_.size()); } // Set previous Hessian to be a diagonal matrix @@ -269,6 +265,11 @@ void Foam::SQP::readFromDict() optMethodIODict_.readEntry("eta", eta_); correction_ = scalarField(correctionOld_.size(), Zero); + + if (activeDesignVars_.empty()) + { + activeDesignVars_ = identity(correction_.size()); + } } } diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SR1/SR1.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SR1/SR1.C index 69c98a54cbc492092553b3c1e548bb15958e5a1d..b582b57a24924de2e464726f691ad41d542f0324 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SR1/SR1.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SR1/SR1.C @@ -51,11 +51,7 @@ void Foam::SR1::allocateMatrices() // Set active design variables, if necessary if (activeDesignVars_.empty()) { - activeDesignVars_.setSize(correction_.size()); - forAll(activeDesignVars_, dvI) - { - activeDesignVars_[dvI] = dvI; - } + activeDesignVars_ = identity(objectiveDerivatives_.size()); } // Set previous HessianInv to be a diagonal matrix @@ -146,9 +142,14 @@ void Foam::SR1::readFromDict() optMethodIODict_.readEntry("counter", counter_); optMethodIODict_.readEntry("eta", eta_); - label n = HessianInvOld_.n(); + const label n(HessianInvOld_.n()); HessianInv_ = SquareMatrix<scalar>(n, Zero); correction_ = scalarField(correctionOld_.size(), Zero); + + if (activeDesignVars_.empty()) + { + activeDesignVars_ = identity(n); + } } } diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/conjugateGradient/conjugateGradient.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/conjugateGradient/conjugateGradient.C index 629ba8221e5e182842bf883120eed3ddcb5cc2ff..3e8ca3747ad646a4a1a6b7c01d167b17e233cbdb 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/conjugateGradient/conjugateGradient.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/conjugateGradient/conjugateGradient.C @@ -51,11 +51,7 @@ void Foam::conjugateGradient::allocateFields() // Set active design variables, if necessary if (activeDesignVars_.empty()) { - activeDesignVars_.setSize(objectiveDerivatives_.size()); - forAll(activeDesignVars_, dvI) - { - activeDesignVars_[dvI] = dvI; - } + activeDesignVars_ = identity(objectiveDerivatives_.size()); } // Allocate old fields @@ -75,6 +71,11 @@ void Foam::conjugateGradient::readFromDict() label nDVs = optMethodIODict_.get<label>("nDVs"); correction_ = scalarField(nDVs, Zero); + + if (activeDesignVars_.empty()) + { + activeDesignVars_ = identity(nDVs); + } } } diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/U b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/U new file mode 100644 index 0000000000000000000000000000000000000000..07d059bcacff8d226279db43918fdb5847109d2b --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/U @@ -0,0 +1,55 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 1 -1 0 0 0 0 ]; + +internalField uniform ( 3.95 0 0 ); + +boundaryField +{ + frontBack + { + type empty; + } + sideWall + { + type fixedValue; + value uniform ( 0 0 0 ); + } + lower + { + type fixedValue; + value uniform ( 0 0 0 ); + } + upper + { + type fixedValue; + value uniform ( 0 0 0 ); + } + Inlet + { + type fixedValue; + value uniform ( 3.95 0 0 ); + } + Outlet + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/Ua b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/Ua new file mode 100644 index 0000000000000000000000000000000000000000..465d3a935b64036c27b30823b986336a172c23b0 --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/Ua @@ -0,0 +1,56 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object Ua; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 1 -1 0 0 0 0 ]; + +internalField uniform ( 0 0 0 ); + +boundaryField +{ + frontBack + { + type empty; + } + sideWall + { + type adjointWallVelocity; + value uniform ( 0 0 0 ); + } + upper + { + type adjointWallVelocity; + value uniform ( 0 0 0 ); + } + Inlet + { + type adjointInletVelocity; + value uniform ( 0 0 0 ); + } + Outlet + { + type adjointOutletVelocity; + value uniform ( 0 0 0 ); + } + lower + { + type adjointWallVelocity; + value uniform ( 0 0 0 ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuTilda b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuTilda new file mode 100644 index 0000000000000000000000000000000000000000..a7f8dfed2e494eefdf2459ff049f3c04cb494768 --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuTilda @@ -0,0 +1,55 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nuTilda; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -1 0 0 0 0 ]; + +internalField uniform 4.5e-05; + +boundaryField +{ + frontBack + { + type empty; + } + sideWall + { + type fixedValue; + value uniform 0; + } + upper + { + type fixedValue; + value uniform 0; + } + lower + { + type fixedValue; + value uniform 0; + } + Inlet + { + type fixedValue; + value uniform 4.5e-05; + } + Outlet + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuaTilda b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuaTilda new file mode 100644 index 0000000000000000000000000000000000000000..24b5f41f45be4e145f0081743274225df58dfa94 --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuaTilda @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nuaTilda; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 0 -1 0 0 0 0 ]; + +internalField uniform 0; + +boundaryField +{ + frontBack + { + type empty; + } + sideWall + { + type fixedValue; + value uniform 0; + } + upper + { + type fixedValue; + value uniform 0; + } + lower + { + type fixedValue; + value uniform 0; + } + Inlet + { + type adjointInletNuaTilda; + value uniform 0; + } + Outlet + { + type adjointOutletNuaTilda; + value uniform 0; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nut b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nut new file mode 100644 index 0000000000000000000000000000000000000000..206a8db7631a52be4f930c14695dd5b244e22a5e --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nut @@ -0,0 +1,55 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -1 0 0 0 0 ]; + +internalField uniform 3.15e-06; + +boundaryField +{ + frontBack + { + type empty; + } + sideWall + { + type nutLowReWallFunction; + value uniform 0; + } + upper + { + type nutLowReWallFunction; + value uniform 0; + } + lower + { + type nutLowReWallFunction; + value uniform 0; + } + Inlet + { + type fixedValue; + value uniform 3.15e-06; + } + Outlet + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/p b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/p new file mode 100644 index 0000000000000000000000000000000000000000..7c186dde34e43174fae60aa9dcb49846e3d8530a --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/p @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0; + +boundaryField +{ + frontBack + { + type empty; + } + lower + { + type zeroGradient; + } + upper + { + type zeroGradient; + } + sideWall + { + type zeroGradient; + } + Inlet + { + type zeroGradient; + } + Outlet + { + type fixedValue; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/pa b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/pa new file mode 100644 index 0000000000000000000000000000000000000000..59938b12cd7971054952e0092b760fa44b919c2f --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/pa @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object pa; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0; + +boundaryField +{ + frontBack + { + type empty; + } + sideWall + { + type zeroGradient; + } + upper + { + type zeroGradient; + } + Inlet + { + type zeroGradient; + } + Outlet + { + type adjointOutletPressure; + value uniform 0; + } + lower + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allclean b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allclean new file mode 100755 index 0000000000000000000000000000000000000000..dbf18a2bf75c48ecce68d0dd7500eb55d7e792b7 --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allclean @@ -0,0 +1,10 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions +#------------------------------------------------------------------------------ + +cleanCase +sed -i 's/endTime 10/endTime 5/g' system/controlDict +sed -i 's/fromFile/axisAligned/g' constant/dynamicMeshDict + +#------------------------------------------------------------------------------ diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allrun b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allrun new file mode 100755 index 0000000000000000000000000000000000000000..5fe5d93d73435e9038c5b1af9c8872e56913bd2d --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allrun @@ -0,0 +1,17 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions +#------------------------------------------------------------------------------ + +resourcesDir=$FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/resources + +\cp -r $resourcesDir/meshes/sbend/polyMesh constant +runApplication decomposePar +runParallel $(getApplication) +mv log.adjointOptimisationFoam log.adjointOptimisationFoamFirstPhase +sed -i 's/endTime 5/endTime 10/g' system/controlDict +sed -i 's/axisAligned/fromFile/g' constant/dynamicMeshDict +runParallel $(getApplication) +runParallel cumulativeDisplacement + +#------------------------------------------------------------------------------ diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/adjointRASProperties b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/adjointRASProperties new file mode 100644 index 0000000000000000000000000000000000000000..290360691b955b2d0160a3e869b683d51e7c5a08 --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/adjointRASProperties @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object adjointTurbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +adjointRASModel adjointSpalartAllmaras; + +adjointTurbulence on; + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/dynamicMeshDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/dynamicMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..2fb565e7979d8671ac300768922a2ee64f4d4cb3 --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/dynamicMeshDict @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object dynamicMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solver volumetricBSplinesMotionSolver; + +volumetricBSplinesMotionSolverCoeffs +{ + duct + { + type cartesian; + nCPsU 9; + nCPsV 5; + nCPsW 3; + degreeU 3; + degreeV 3; + degreeW 2; + + controlPointsDefinition axisAligned; + lowerCpBounds (-1.1 -0.21 -0.05); + upperCpBounds ( 1.1 0.39 0.15); + + confineX1movement false; + confineX2movement false; + confineX3movement true; + confineBoundaryControlPoints false; + + boundUMinCPs ( (true true true) (true true true) ); + boundUMaxCPs ( (true true true) (true true true) ); + boundWMinCPs ( (true true true) ); + boundWMaxCPs ( (true true true) ); + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/transportProperties b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..d0211f908ee1cb5850acfbc10c50a65e1de1ad25 --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/transportProperties @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +transportModel Newtonian; + +nu nu [0 2 -1 0 0 0 0] 1.5e-05; + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/turbulenceProperties b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/turbulenceProperties new file mode 100644 index 0000000000000000000000000000000000000000..2dfe5cd0e9b00a770c6651aaed1befbcfac0d378 --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/turbulenceProperties @@ -0,0 +1,28 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel SpalartAllmaras; + + turbulence on; + + printCoeffs on; +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/controlDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..d72b1e2f212da35ffd6927da933935e07c35c214 --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/controlDict @@ -0,0 +1,57 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application adjointOptimisationFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 5; + +deltaT 1; + +writeControl timeStep; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 16; + +writeCompression true; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +functions +{ + yPlus + { + type yPlus; + libs ("libfieldFunctionObjects.so"); + writeControl writeTime; + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/decomposeParDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..614d8914884920a71739102b95ff691cfe7768dd --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/decomposeParDict @@ -0,0 +1,26 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 4; + +method hierarchical; + +coeffs +{ + n (4 1 1); +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSchemes b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..ed618ddb42612ba707e87283ee4f19fa0cfbd5aa --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSchemes @@ -0,0 +1,71 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default steadyState; +} + +gradSchemes +{ + default Gauss linear; + gradDConv cellLimited Gauss linear 1; +} + +divSchemes +{ + default Gauss linear; + + div(phi,U) bounded Gauss linearUpwind gradUConv; + div(phi,nuTilda) bounded Gauss linearUpwind gradNuTildaConv; + div(yPhi,yWall) Gauss linearUpwind gradDConv; + div(-phi,Ua) bounded Gauss linearUpwind gradUaConv; + div(-phi,nuaTilda) bounded Gauss linearUpwind gradNuaTildaConv; + div(-yPhi,da) Gauss linearUpwind gradDaConv; + + div((nuEff*dev(grad(U).T()))) Gauss linear; + div((nuEff*dev(grad(Ua).T()))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear limited 0.333; + +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +wallDist +{ + method advectionDiffusion; + advectionDiffusionCoeffs + { + method meshWave; + tolerance 3.e-6; + maxIter 1000; + epsilon 0.1; + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSolution b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..6e36a45a3444701bf99e7df57c37f58b47bd5129 --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSolution @@ -0,0 +1,65 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +SIMPLE +{ + nNonOrthogonalCorrectors 0; +} + +solvers +{ + "p|pa" + { + solver PCG; + preconditioner DIC; + tolerance 1e-9; + relTol 0.01; + }; + "m|ma" + { + solver PCG; + preconditioner DIC; + tolerance 1e-9; + relTol 0.01; + }; + "U|Ua|nuTilda|nuaTilda|yWall|da" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-9; + relTol 0.1; + }; +} + +relaxationFactors +{ + fields + { + p 0.5; + pa 0.5; + } + equations + { + U 0.7; + Ua 0.7; + nuTilda 0.7; + nuaTilda 0.7; + yWall 0.7; + da 0.7; + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/optimisationDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/optimisationDict new file mode 100644 index 0000000000000000000000000000000000000000..dd37fade2ad19f94dc233494da3674980fde524b --- /dev/null +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/optimisationDict @@ -0,0 +1,136 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object optimisationDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +optimisationManager steadyOptimisation; + +primalSolvers +{ + p1 + { + active true; + type incompressible; + solver simple; + solutionControls + { + nIters 3000; + residualControl + { + "p.*" 1.e-7; + "U.*" 1.e-7; + "nuTilda.*" 1.e-7; + } + } + } +} + +adjointManagers +{ + am1 + { + primalSolver p1; + adjointSolvers + { + as1 + { + // choose adjoint solver + //---------------------- + active true; + type incompressible; + solver adjointSimple; + + // manage objectives + //------------------ + objectives + { + type incompressible; + objectiveNames + { + losses + { + weight 1; + type PtLosses; + patches (Inlet Outlet); + } + } + } + + // ATC treatment + //-------------- + ATCModel + { + ATCModel standard; + } + + // solution control + //------------------ + solutionControls + { + nIters 3000; + residualControl + { + "pa.*" 1.e-7; + "Ua.*" 1.e-7; + } + } + } + } + } +} + +optimisation +{ + optimisationType + { + type shapeOptimisation; + writeEachMesh true; + } + + sensitivities + { + type volumetricBSplinesFI; + patches (lower upper); + } + updateMethod + { + method BFGS; + BFGS + { + etaHessian 0.8; + scaleFirstHessian true; + /* + activeDesignVariables + ( + 141 142 144 145 147 148 + 150 151 153 154 168 169 + 171 172 174 175 177 178 + 180 181 195 196 198 199 + 201 202 204 205 207 208 + 222 223 225 226 228 229 + 231 232 234 235 249 250 + 252 253 255 256 258 259 + 261 262 + ); + */ + } + } + meshMovement + { + type volumetricBSplines; + maxAllowedDisplacement 2.e-3; + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun index 69abef2dca90fc3a6a3609090bf40641043b3d53..7c9b06005f0815e4c4bc9f4bae1045921a226851 100755 --- a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun @@ -7,6 +7,7 @@ resourcesDir=$FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/resources \cp $resourcesDir/param/sbend/* 0 \cp -r $resourcesDir/meshes/sbend/polyMesh constant +runApplication writeMorpherCPs runApplication decomposePar runParallel $(getApplication)