61res_os.open(folder +
"/residuals", std::ios_base::app);
62snaps_os.open(folder +
"/snaps", std::ios_base::app);
63iters.open(folder +
"/iters", std::ios_base::app);
64cpuTimes.open(folder +
"/cpuTimes", std::ios_base::app);
66res_U.open(folder + name(counter) +
"/res_U", std::ios_base::app);
67res_P.open(folder + name(counter) +
"/res_P", std::ios_base::app);
68res_E.open(folder + name(counter) +
"/res_E", std::ios_base::app);
74tolerance = ITHACAdict->lookupOrDefault<scalar>(
"tolerance", 1e-5);
75maxIter = ITHACAdict->lookupOrDefault<scalar>(
"maxIter", 2000);
86 Info <<
"Time = " <<
runTime.timeName() << nl << endl;
90 if (
simple.momentumPredictor())
98 eresidual = Eeqn_global().solve().initialResidual();
103 getRhorAUf(Ueqn_global()));
104 surfaceScalarField phiHbyACalculated = getPhiHbyA(Ueqn_global(),
U,
p);
107 while (
simple.correctNonOrthogonal())
109 getPmatrix(Ueqn_global(),
U,
p);
110 presidual = Peqn_global().solve().initialResidual();
112 if (
simple.finalNonOrthogonalIter())
114 phi = getPhiHbyA(Ueqn_global(),
U,
p) + Peqn_global().flux();
120 U =
HbyA() - (1.0 / Ueqn_global().A()) * getGradP(
p);
121 U.correctBoundaryConditions();
129 / fvc::domainIntegrate(
psi);
134 p.correctBoundaryConditions();
141 Info <<
"\nResidual: " <<
residual << endl << endl;
144 Info <<
"ExecutionTime = " <<
runTime.elapsedCpuTime() <<
" s"
145 <<
" ClockTime = " <<
runTime.elapsedClockTime() <<
" s"
148 std::cout <<
"saver ================== \t" <<
saver << std::endl;
157 auto nut = _mesh().lookupObject<volScalarField>(
"nut");
159 Ufield.append(
U.clone());
160 Pfield.append(
p.clone());
161 Efield.append(E.clone());
162 nutFields.append(
nut.clone());
187 auto nut = _mesh().lookupObject<volScalarField>(
"nut");
195 auto nut = _mesh().lookupObject<volScalarField>(
"nut");
199Ufield.append(
U.clone());
200Pfield.append(
p.clone());
201Efield.append(E.clone());
202auto nut = _mesh().lookupObject<volScalarField>(
"nut");
203nutFields.append(
nut.clone());
dimensionedScalar & initialMass
label saver
Counter to check if the middleStep has been reached or not (for turbulent case only)
Vector< double > uresidual_v(0, 0, 0)
pressureControl & pressureControl
Class for the definition of some general parameters, the parameters must be defined from the file ITH...
static ITHACAparameters * getInstance()
Gets an instance of ITHACAparameters, to be used if the instance is already existing.
void exportSolution(GeometricField< Type, PatchField, GeoMesh > &s, fileName subfolder, fileName folder, word fieldName)
Export a field to file in a certain folder and subfolder.
constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF)
simpleControl simple(mesh)