From 3376b9016029ed671cca4e406719189342dbf125 Mon Sep 17 00:00:00 2001 From: valetinnkana Date: Fri, 14 Feb 2025 19:05:29 +0100 Subject: [PATCH 01/93] Adding a ROM tutorial for a flow around an oscillating cylinder --- src/ITHACA_CORE/Containers/Modes.C | 1 + src/ITHACA_CORE/Containers/Modes.H | 1 + src/ITHACA_CORE/Foam2Eigen/Foam2Eigen.C | 41 +- src/ITHACA_CORE/Foam2Eigen/Foam2Eigen.H | 2 + src/ITHACA_CORE/ITHACAPOD/ITHACAPOD.C | 14 + src/ITHACA_CORE/ITHACAstream/ITHACAstream.C | 194 +- .../ITHACAutilities/ITHACAassign.C | 134 + .../ITHACAutilities/ITHACAassign.H | 40 + .../ITHACAutilities/ITHACAcoeffsMass.C | 50 +- src/ITHACA_FOMPROBLEMS/Fsi/CylinderMotion.H | 65 + src/ITHACA_FOMPROBLEMS/Fsi/UEqn.H | 55 + src/ITHACA_FOMPROBLEMS/Fsi/correctPhi.H | 11 + .../Fsi/createDynamicFvMesh.H | 36 + src/ITHACA_FOMPROBLEMS/Fsi/createFields.H | 206 + src/ITHACA_FOMPROBLEMS/Fsi/createFvOptions.H | 31 + src/ITHACA_FOMPROBLEMS/Fsi/createPhi.H | 54 + src/ITHACA_FOMPROBLEMS/Fsi/createTime.H | 29 + src/ITHACA_FOMPROBLEMS/Fsi/createUf.H | 76 + .../Fsi/createUfIfPresent.H | 58 + src/ITHACA_FOMPROBLEMS/Fsi/fsiBasic.C | 272 + src/ITHACA_FOMPROBLEMS/Fsi/fsiBasic.H | 152 + src/ITHACA_FOMPROBLEMS/Fsi/pEqn.H | 107 + src/ITHACA_FOMPROBLEMS/Make/files | 2 +- src/ITHACA_FOMPROBLEMS/Make/options | 2 + src/ITHACA_ROMPROBLEMS/Make/files | 1 + src/ITHACA_ROMPROBLEMS/Make/options | 2 + .../ReducedFsi/CylinderMotion.H | 65 + .../ReducedFsi/ReducedFsi.C | 321 + .../ReducedFsi/ReducedFsi.H | 118 + tutorials/CFD/02thermalBlock/Make/options | 4 + tutorials/CFD/03steadyNS/Make/options | 4 + tutorials/CFD/04unsteadyNS/Make/options | 4 + tutorials/CFD/05PODI/Make/options | 3 + tutorials/CFD/06POD_RBF/Make/options | 3 + .../07NonIsothermalMixingElbow/Make/options | 3 + tutorials/CFD/08DEIM/Make/options | 3 + tutorials/CFD/09DEIM_ROM/Make/options | 3 + .../CFD/10unsteadyBB_enclosed/Make/options | 3 + tutorials/CFD/11UnsteadyBBOpen/Make/options | 3 + tutorials/CFD/12simpleSteadyNS/Make/options | 3 + tutorials/CFD/14DMDexample/Make/options | 3 + tutorials/CFD/15MSR_cavity/Make/options | 3 + tutorials/CFD/16MSR_FOMSA/Make/options | 3 + tutorials/CFD/17YJunction/Make/options | 3 + tutorials/CFD/18simpleTurbNS/Make/options | 3 + .../CFD/19UnsteadyNSExplicit/Make/options | 3 + tutorials/CFD/20incrementalPOD/Make/options | 3 + .../CFD/21unsteadyNSTurb_RBF/Make/options | 3 + .../CFD/22datadriven_corrections/Make/options | 3 + tutorials/CFD/23burgers/Make/options | 3 + tutorials/CFD/24Moving_Cylinder/0/U | 11702 + tutorials/CFD/24Moving_Cylinder/0/motionScale | 24496 + tutorials/CFD/24Moving_Cylinder/0/p | 11701 + .../CFD/24Moving_Cylinder/0/pointDisplacement | 56 + .../CFD/24Moving_Cylinder/CylinderMotion.H | 65 + tutorials/CFD/24Moving_Cylinder/Make/files | 3 + tutorials/CFD/24Moving_Cylinder/Make/options | 48 + .../CFD/24Moving_Cylinder/Moving_Cylinder.C | 229 + .../constant/0riGdynamicMeshDict | 88 + .../24Moving_Cylinder/constant/RASProperties | 24 + .../constant/dynamicMeshDict | 104 + tutorials/CFD/24Moving_Cylinder/constant/g | 21 + .../constant/polyMesh/boundary | 62 + .../constant/polyMesh/cellLevel | 124425 +++++ .../constant/polyMesh/cellZones | 21 + .../constant/polyMesh/faceZones | 21 + .../24Moving_Cylinder/constant/polyMesh/faces | 47176 ++ .../constant/polyMesh/level0Edge | 23 + .../constant/polyMesh/neighbour | 23291 + .../24Moving_Cylinder/constant/polyMesh/owner | 47177 ++ .../constant/polyMesh/pointLevel | 148819 ++++++ .../constant/polyMesh/pointZones | 21 + .../constant/polyMesh/points | 24464 + .../constant/polyMesh/surfaceIndex | 397045 +++++++++++++++ .../constant/transportProperties | 21 + .../constant/turbulenceProperties | 21 + tutorials/CFD/24Moving_Cylinder/par | 1 + .../CFD/24Moving_Cylinder/system/ITHACAdict | 54 + .../system/ITHACAdict (copy) | 54 + .../24Moving_Cylinder/system/blockMeshDict | 116 + .../CFD/24Moving_Cylinder/system/controlDict | 76 + .../24Moving_Cylinder/system/decomposeParDict | 27 + .../CFD/24Moving_Cylinder/system/ensightWrite | 27 + .../CFD/24Moving_Cylinder/system/fvSchemes | 70 + .../CFD/24Moving_Cylinder/system/fvSchemes2 | 73 + .../CFD/24Moving_Cylinder/system/fvSolution | 113 + .../CFD/24Moving_Cylinder/system/fvSolution2 | 100 + .../NN/01simpleTurbGeomClosed/Make/options | 3 + tutorials/UQ/01enKF/Make/options | 3 + .../02enKF_1DinverseHeatTransfer/Make/options | 3 + .../IHTP01inverseLaplacian/Make/options | 3 + 91 files changed, 863974 insertions(+), 79 deletions(-) create mode 100644 src/ITHACA_FOMPROBLEMS/Fsi/CylinderMotion.H create mode 100755 src/ITHACA_FOMPROBLEMS/Fsi/UEqn.H create mode 100644 src/ITHACA_FOMPROBLEMS/Fsi/correctPhi.H create mode 100644 src/ITHACA_FOMPROBLEMS/Fsi/createDynamicFvMesh.H create mode 100755 src/ITHACA_FOMPROBLEMS/Fsi/createFields.H create mode 100755 src/ITHACA_FOMPROBLEMS/Fsi/createFvOptions.H create mode 100644 src/ITHACA_FOMPROBLEMS/Fsi/createPhi.H create mode 100755 src/ITHACA_FOMPROBLEMS/Fsi/createTime.H create mode 100644 src/ITHACA_FOMPROBLEMS/Fsi/createUf.H create mode 100644 src/ITHACA_FOMPROBLEMS/Fsi/createUfIfPresent.H create mode 100644 src/ITHACA_FOMPROBLEMS/Fsi/fsiBasic.C create mode 100755 src/ITHACA_FOMPROBLEMS/Fsi/fsiBasic.H create mode 100755 src/ITHACA_FOMPROBLEMS/Fsi/pEqn.H create mode 100644 src/ITHACA_ROMPROBLEMS/ReducedFsi/CylinderMotion.H create mode 100644 src/ITHACA_ROMPROBLEMS/ReducedFsi/ReducedFsi.C create mode 100644 src/ITHACA_ROMPROBLEMS/ReducedFsi/ReducedFsi.H create mode 100644 tutorials/CFD/24Moving_Cylinder/0/U create mode 100644 tutorials/CFD/24Moving_Cylinder/0/motionScale create mode 100644 tutorials/CFD/24Moving_Cylinder/0/p create mode 100755 tutorials/CFD/24Moving_Cylinder/0/pointDisplacement create mode 100644 tutorials/CFD/24Moving_Cylinder/CylinderMotion.H create mode 100644 tutorials/CFD/24Moving_Cylinder/Make/files create mode 100644 tutorials/CFD/24Moving_Cylinder/Make/options create mode 100755 tutorials/CFD/24Moving_Cylinder/Moving_Cylinder.C create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/0riGdynamicMeshDict create mode 100755 tutorials/CFD/24Moving_Cylinder/constant/RASProperties create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/dynamicMeshDict create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/g create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/boundary create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/cellLevel create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/cellZones create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/faceZones create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/faces create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/level0Edge create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/neighbour create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/owner create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/pointLevel create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/pointZones create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/points create mode 100644 tutorials/CFD/24Moving_Cylinder/constant/polyMesh/surfaceIndex create mode 100755 tutorials/CFD/24Moving_Cylinder/constant/transportProperties create mode 100755 tutorials/CFD/24Moving_Cylinder/constant/turbulenceProperties create mode 100755 tutorials/CFD/24Moving_Cylinder/par create mode 100755 tutorials/CFD/24Moving_Cylinder/system/ITHACAdict create mode 100755 tutorials/CFD/24Moving_Cylinder/system/ITHACAdict (copy) create mode 100755 tutorials/CFD/24Moving_Cylinder/system/blockMeshDict create mode 100755 tutorials/CFD/24Moving_Cylinder/system/controlDict create mode 100755 tutorials/CFD/24Moving_Cylinder/system/decomposeParDict create mode 100755 tutorials/CFD/24Moving_Cylinder/system/ensightWrite create mode 100755 tutorials/CFD/24Moving_Cylinder/system/fvSchemes create mode 100755 tutorials/CFD/24Moving_Cylinder/system/fvSchemes2 create mode 100755 tutorials/CFD/24Moving_Cylinder/system/fvSolution create mode 100755 tutorials/CFD/24Moving_Cylinder/system/fvSolution2 diff --git a/src/ITHACA_CORE/Containers/Modes.C b/src/ITHACA_CORE/Containers/Modes.C index acc060b58..98b376e65 100644 --- a/src/ITHACA_CORE/Containers/Modes.C +++ b/src/ITHACA_CORE/Containers/Modes.C @@ -489,3 +489,4 @@ void Modes::operator=(const template class Modes; template class Modes; template class Modes; +template class Modes; \ No newline at end of file diff --git a/src/ITHACA_CORE/Containers/Modes.H b/src/ITHACA_CORE/Containers/Modes.H index c250bf23f..4b8aa5cb6 100755 --- a/src/ITHACA_CORE/Containers/Modes.H +++ b/src/ITHACA_CORE/Containers/Modes.H @@ -253,6 +253,7 @@ class Modes : public PtrList> typedef Modes volScalarModes; typedef Modes volVectorModes; typedef Modes surfaceScalarModes; +typedef Modes pointVectorModes; #endif diff --git a/src/ITHACA_CORE/Foam2Eigen/Foam2Eigen.C b/src/ITHACA_CORE/Foam2Eigen/Foam2Eigen.C index 9fa659e84..baa0f2015 100644 --- a/src/ITHACA_CORE/Foam2Eigen/Foam2Eigen.C +++ b/src/ITHACA_CORE/Foam2Eigen/Foam2Eigen.C @@ -140,16 +140,34 @@ List Foam2Eigen::field2EigenBC( label size = field.boundaryField().size(); Out.resize(size); - for (label i = 0; i < size; i++) - { - label sizei = field.boundaryField()[i].size(); - Out[i].resize(sizei * 3); + constexpr bool check_vol = std::is_same::value || std::is_same::value; + if constexpr(check_vol){ + for (label i = 0; i < size; i++ ) + { + label sizei = field.boundaryField()[i].size(); + Out[i].resize(sizei * 3); + + for (label k = 0; k < sizei ; k++) + { + Out[i](k) = field.boundaryField()[i][k][0]; + Out[i](k + sizei) = field.boundaryField()[i][k][1]; + Out[i](k + 2 * sizei) = field.boundaryField()[i][k][2]; + } + } + } - for (label k = 0; k < sizei; k++) + else if constexpr(std::is_same::value){ + for (label i = 0; i < size; i++ ) { - Out[i](k) = field.boundaryField()[i][k][0]; - Out[i](k + sizei) = field.boundaryField()[i][k][1]; - Out[i](k + 2 * sizei) = field.boundaryField()[i][k][2]; + label sizei = field.boundaryField()[i].size(); + Out[i].resize(sizei * 3); + + for (label k = 0; k < sizei ; k++) + { + Out[i](k) = field.boundaryField()[i].patchInternalField()()[k][0]; + Out[i](k + sizei) = field.boundaryField()[i].patchInternalField()()[k][1]; + Out[i](k + 2 * sizei) = field.boundaryField()[i].patchInternalField()()[k][2]; + } } } @@ -278,6 +296,8 @@ List Foam2Eigen::PtrList2EigenBC( template List Foam2Eigen::PtrList2EigenBC( PtrList& fields, label Nfields); +template List Foam2Eigen::PtrList2EigenBC( +PtrList& fields, label Nfields); template