39 StoredParameters(
int argc,
char* argv[]);
44 return ithacaLibraryParameters;
47 const Foam::HashTable<Foam::label, Foam::word>& get_nModes()
const
49 return PODConfiguration_->nModes();
52 const Foam::HashTable<Foam::word, Foam::word>& get_hilbertSpacePOD()
const
54 return PODConfiguration_->hilbertSpacePOD();
57 Foam::word get_pathHilbertSpace_fromHS(Foam::word hilbertSp);
58 const double& get_weightH1()
const
60 return PODConfiguration_->weightH1();
62 const double& get_weightPOD()
const
64 return PODConfiguration_->weightBC();
66 const Foam::word& get_patchBC()
const
68 return PODConfiguration_->patchBC();
70 const Foam::fileName& get_casenameData()
const
72 return snapshotConfiguration_->get_casenameData();
75 const Foam::label& get_startTime()
const
77 return snapshotConfiguration_->get_startTime();
79 const Foam::label& get_endTime()
const
81 return snapshotConfiguration_->get_endTime();
83 const Foam::label& get_nSnapshots()
const
85 return snapshotConfiguration_->get_nSnapshots();
88 const Foam::label& get_endTimeSimulation()
const
90 return snapshotConfiguration_->get_endTimeSimulation();
92 const Foam::label& get_nSnapshotsSimulation()
const
94 return snapshotConfiguration_->get_nSnapshotsSimulation();
97 const Foam::label& get_nBlocks()
const
99 return solverConfiguration_->get_nBlocks();
102 bool get_centeredOrNot()
const
104 return solverConfiguration_->get_centeredOrNot();
106 int get_precision()
const
108 return solverConfiguration_->get_precision();
110 const std::_Ios_Fmtflags& get_outytpe()
const
112 return solverConfiguration_->get_outytpe();
115 const Foam::word& get_eigensolver()
const
117 return solverConfiguration_->get_eigensolver();
120 Foam::fvMesh& get_mesh()
const
122 return meshConfig_->get_mesh();
125 const Foam::label& get_nCells()
const
127 return meshConfig_->get_nCells();
130 const Foam::volVectorField& get_template_field_U()
const
132 return fieldTemplates_->get_U();
134 const Foam::volScalarField& get_template_field_p()
const
136 return fieldTemplates_->get_p();
138 const Foam::volScalarField& get_template_field_nut()
const
140 return fieldTemplates_->get_nut();
142 const Foam::volScalarField& get_template_field_omega()
const
144 return fieldTemplates_->get_omega();
146 const Foam::volScalarField& get_template_field_k()
const
148 return fieldTemplates_->get_k();
150 const Foam::volVectorField& get_template_field_fullStressFunction()
const
152 return fieldTemplates_->get_fullStressFunction();
154 void set_template_field_fullStressFunction(volVectorField& templateSmag)
156 fieldTemplates_->set_fullStressFunction(templateSmag);
160 const double& get_saveTime()
const
162 return snapshotConfiguration_->get_writeInterval();
165 const word& get_HRMethod()
const
167 return HyperreductionConfiguration_->HRMethod();
169 const Foam::word& get_DEIMInterpolatedField()
const
171 return HyperreductionConfiguration_->HRInterpolatedField();
173 const word& get_HRSnapshotsField()
const
175 return HyperreductionConfiguration_->HRSnapshotsField();
177 const word& get_ECPAlgo()
const
179 return HyperreductionConfiguration_->ECPAlgo();
181 Eigen::VectorXd get_deltaWeight()
const
183 return HyperreductionConfiguration_->deltaWeight();
186 void set_centeredOrNot(
const bool b)
188 solverConfiguration_->set_centeredOrNot(b);
194 PODConfiguration_->set_eigenValues_U(input_eigenValues_U);
196 void set_lambda(
const Eigen::VectorXd& input_lambda)
198 PODConfiguration_->set_lambda(input_lambda);
201 void set_nModes(
const Foam::word& field_name,
const Foam::label& n)
203 PODConfiguration_->insert_nModes(field_name, n);
205 void set_resolvedVaryingEnergy(
const Foam::word& field_name,
const double& n)
207 PODConfiguration_->set_resolvedVaryingEnergy(field_name, n);
209 void set_varyingEnergy(
const Foam::word& field_name,
const double& n)
211 PODConfiguration_->set_varyingEnergy(field_name, n);
213 void set_meanEnergy(
const Foam::word& field_name,
const double& n)
215 PODConfiguration_->insert_meanEnergy(field_name, n);
217 void set_hilbertSpacePOD(
const Foam::word& field_name,
218 const Foam::word& hilbertSp)
220 PODConfiguration_->insert_hilbertSpacePOD(field_name, hilbertSp);
222 void set_weightH1(
const double& c)
224 PODConfiguration_->set_weightH1(c);
227 const wordList& get_fieldlist()
const {
return PODConfiguration_->fieldlist(); }
228 const HashTable<double, word>& get_resolvedVaryingEnergy()
const {
return PODConfiguration_->resolvedVaryingEnergy(); }
229 const HashTable<double, word>& get_varyingEnergy()
const {
return PODConfiguration_->varyingEnergy(); }
230 const HashTable<double, word>& get_meanEnergy()
const {
return PODConfiguration_->meanEnergy(); }
231 Foam::word get_pathHilbertSpace(Foam::word fieldName);
233 const List<word>& get_field_name()
const {
return PODConfiguration_->field_name(); }
234 const List<word>& get_field_type()
const {
return PODConfiguration_->field_type(); }
237 const Foam::Vector<double>& get_F_0()
const;
238 void compute_F_mask();
240 const PressureResolutionKind& get_pressureResolutionKind() {
return ROMExecutionConfig_->pressureResolutionKind(); }
242 const word& get_ROMTemporalScheme()
const {
return ROMExecutionConfig_->ROMTemporalScheme(); }
244 const double& get_initialTime()
const {
return snapshotConfiguration_->get_initialTime(); }
245 const double& get_initialTimeSimulation()
const
247 return snapshotConfiguration_->get_finalTime();
249 const double& get_finalTime()
const
251 return snapshotConfiguration_->get_finalTime();
253 const double& get_finalTimeSimulation()
const
255 return snapshotConfiguration_->get_finalTimeSimulation();
258 bool get_interpFieldCenteredOrNot()
const {
return HyperreductionConfiguration_->interpFieldCentered(); }
260 bool get_exportPython()
const {
return SimulationFlags_->exportPython(); }
261 bool get_exportMatlab()
const {
return SimulationFlags_->exportMatlab(); }
262 bool get_exportTxt()
const {
return SimulationFlags_->exportTxt(); }
264 const word& get_useSOTA()
const {
return ROMExecutionConfig_->useSOTA(); }
266 const dimensionedScalar& get_nu()
const {
return ROMExecutionConfig_->nu(); }
268 const Eigen::VectorXd& get_eigenValues_U()
const {
return PODConfiguration_->eigenValues_U(); }
269 const Eigen::VectorXd& get_eigenValues_p()
const {
return PODConfiguration_->eigenValues_p(); }
270 const Eigen::VectorXd& get_lambda()
const {
return PODConfiguration_->lambda(); }
272 const label& get_nSimu()
const {
return snapshotConfiguration_->get_nSimu(); }
273 bool get_forcingOrNot()
const {
return SimulationFlags_->forcing(); }
274 bool get_symDiff()
const {
return SimulationFlags_->symDiff(); }
283 bool get_useDNS()
const {
return SimulationFlags_->useDNS(); }
287 const float& get_Ck()
const {
return HyperreductionConfiguration_->Ck(); }
288 const float& get_Ce()
const {
return HyperreductionConfiguration_->Ce(); }
289 const label& get_nMagicPoints()
const {
return HyperreductionConfiguration_->nMagicPoints(); }
290 const word& get_folder_DEIM()
const {
return HyperreductionConfiguration_->folderDEIM(); }
292 const PtrList<volVectorField>& get_tracerGradOfModesOnMagicNeighborhoods()
const {
return HyperreductionConfiguration_->tracerGradOnMagicNeighborhoods(); }
293 const PtrList<volVectorField>& get_tracerGradOfModesOnMagicPoints()
const {
return HyperreductionConfiguration_->tracerGradOnMagicPoints(); }
294 const PtrList<volTensorField>& get_deformationTensorOfModesOnMagicNeighborhoods()
const {
return HyperreductionConfiguration_->deformationTensorOnMagicNeighborhoods(); }
295 const PtrList<volTensorField>& get_deformationTensorOfModesOnMagicPoints()
const {
return HyperreductionConfiguration_->deformationTensorOnMagicPoints(); }
296 const List<label>& get_magicPoints()
const {
return HyperreductionConfiguration_->magicPoints(); }
297 const List<label>& get_localMagicPoints()
const {
return HyperreductionConfiguration_->localMagicPoints(); }
298 const Eigen::MatrixXd& get_projected_K_DEIM()
const {
return HyperreductionConfiguration_->projectedK_DEIM(); }
299 const Eigen::MatrixXd& get_projected_MK_DEIM()
const {
return HyperreductionConfiguration_->projectedMK_DEIM(); }
300 const volScalarField& get_delta()
const {
return meshConfig_->get_delta(); }
301 const volScalarField& get_magicDelta()
const {
return HyperreductionConfiguration_->get_magicDelta(); }
302 const fvMesh& get_submesh()
const {
return HyperreductionConfiguration_->get_submesh(); }
303 const volScalarField& get_volume()
const {
return meshConfig_->get_volume(); }
304 const double& get_totalVolume()
const {
return meshConfig_->get_totalVolume(); }
305 const volVectorField& get_meanU()
const {
return *ROMExecutionConfig_->meanU(); }
306 const volVectorField& get_meanVectorDEIM()
const {
return *HyperreductionConfiguration_->meanVectorDEIM(); }
307 const volScalarField& get_meanScalarDEIM()
const {
return *HyperreductionConfiguration_->meanScalarDEIM(); }
308 void get_meanDEIM(volVectorField& meanVectorDEIM_out) { meanVectorDEIM_out = get_meanVectorDEIM(); }
309 void get_meanDEIM(volScalarField& meanVectorDEIM_out) { meanVectorDEIM_out = get_meanScalarDEIM(); }
310 const volVectorField& get_meanVectorDEIMMagic()
const {
return *HyperreductionConfiguration_->meanVectorDEIMMagic(); }
311 const volScalarField& get_meanScalarDEIMMagic()
const {
return *HyperreductionConfiguration_->meanScalarDEIMMagic(); }
313 const Eigen::Tensor<double, 3>& get_xi_onMagicPts()
const {
return HyperreductionConfiguration_->xiOnMagicPts(); }
314 const Eigen::Tensor<double, 3>& get_M_xi_onMagicPts()
const {
return HyperreductionConfiguration_->M_xiOnMagicPts(); }
317 const Eigen::MatrixXd&
get_K_DEIM()
const {
return HyperreductionConfiguration_->K_DEIM(); }
318 void set_K_DEIM(Eigen::MatrixXd& K) { HyperreductionConfiguration_->setK_DEIM(K); }
322 void set_nSnapshots(
const label& input_nSnapshots) { snapshotConfiguration_->set_nSnapshots(input_nSnapshots); }
323 void set_nSnapshotsSimulation(
const label& input_nSnapshotsSimulation) { snapshotConfiguration_->set_nSnapshotsSimulation(input_nSnapshotsSimulation); }
324 void set_eigenValues_p(
const Eigen::VectorXd& input_eigenValues_p) { PODConfiguration_->set_eigenValues_p(input_eigenValues_p); }
325 void set_saveTime(
const double& input_saveTime) { snapshotConfiguration_->set_writeInterval(input_saveTime); }
326 void set_xi_onMagicPts(
const Eigen::Tensor<double, 3> xi) { HyperreductionConfiguration_->setXiOnMagicPts(xi); }
327 void set_M_xi_onMagicPts(
const Eigen::Tensor<double, 3> M_xi) { HyperreductionConfiguration_->setM_XiOnMagicPts(M_xi); }
328 void set_useSOTA(word& input_useSOTA) { ROMExecutionConfig_->setUseSOTA(input_useSOTA); }
331 void set_useDDES(
const bool& a) { SimulationFlags_->set_useDDES(a); }
334 void set_useDNS(
const bool& c) { SimulationFlags_->set_useDNS(c); }
338 void set_nMagicPoints(
const label& n) { HyperreductionConfiguration_->setNMagicPoints(n); }
339 void set_Ck(
const float& c) { HyperreductionConfiguration_->setCk(c); }
340 void set_Ce(
const float& c) { HyperreductionConfiguration_->setCe(c); }
341 void set_useDEIM(
const bool& b) { SimulationFlags_->set_useDEIM(b); }
343 void set_magicPoints(
const List<label>& nn) { HyperreductionConfiguration_->setMagicPoints(nn); }
344 void set_localMagicPoints(
const List<label>& nn) { HyperreductionConfiguration_->setLocalMagicPoints(nn); }
345 void set_projected_K_DEIM(
const Eigen::MatrixXd& K_input) { HyperreductionConfiguration_->setProjectedK_DEIM(K_input); }
346 void set_deformationTensorOfModesOnMagicNeighborhoods(PtrList<volVectorField>& defT)
348 HyperreductionConfiguration_->setTracerGradOnMagicNeighborhoods(defT, get_nModes()[
"U"] + 1);
351 void set_deformationTensorOfModesOnMagicPoints(PtrList<volVectorField>& defT)
353 HyperreductionConfiguration_->setTracerGradOnMagicPoints(defT, get_nModes()[
"U"] + 1);
356 void set_deformationTensorOfModesOnMagicNeighborhoods(PtrList<volTensorField>& defT)
358 HyperreductionConfiguration_->setDeformationTensorOnMagicNeighborhoods(defT, get_nModes()[
"U"] + 1);
361 void set_deformationTensorOfModesOnMagicPoints(PtrList<volTensorField>& defT)
363 HyperreductionConfiguration_->setDeformationTensorOnMagicPoints(defT, get_nModes()[
"U"] + 1);
366 void set_projected_MK_DEIM(
const Eigen::MatrixXd& proj_MK_input) { HyperreductionConfiguration_->setProjectedMK_DEIM(proj_MK_input); }
367 void set_magicDelta(
const volScalarField& mD) { HyperreductionConfiguration_->set_magicDelta(mD); }
368 void set_submesh(fvMesh& s) { HyperreductionConfiguration_->set_submesh(s); }
371 void set_meanU(
const volVectorField& mm) { ROMExecutionConfig_->setMeanU(mm); }
372 void set_meanDEIM(
const volVectorField& mm) { HyperreductionConfiguration_->setMeanVectorDEIM(mm); }
373 void set_meanDEIM(
const volScalarField& mm) { HyperreductionConfiguration_->setMeanScalarDEIM(mm); }
374 void set_meanDEIMMagic(
const volVectorField& mm)
376 HyperreductionConfiguration_->setMeanVectorDEIMMagic(mm);
378 void set_meanDEIMMagic(
const volScalarField& mm)
380 HyperreductionConfiguration_->setMeanScalarDEIMMagic(mm);
382 void set_deltaWeight(Eigen::VectorXd dw) { HyperreductionConfiguration_->setDeltaWeight(dw); }
386 std::unique_ptr<MeshConfiguration> meshConfig_;
387 std::unique_ptr<FieldTemplates> fieldTemplates_;
388 std::unique_ptr<SnapshotConfiguration> snapshotConfiguration_;
389 std::unique_ptr<SolverConfiguration> solverConfiguration_;
390 std::unique_ptr<HyperreductionConfiguration> HyperreductionConfiguration_;
391 std::unique_ptr<ROMExecutionConfig> ROMExecutionConfig_;
392 std::unique_ptr<SimulationFlags> SimulationFlags_;
393 std::unique_ptr<PODConfiguration> PODConfiguration_;
395 void initializeFieldConfiguration();
399 autoPtr<argList> _args;
400 autoPtr<Time> runTime0;
401 Foam::Time* runTimeData;
405 ITHACAparameters* ithacaLibraryParameters;
406 IOdictionary* ITHACAdict;