Loading...
Searching...
No Matches
oldroyd_cavity.cc
Go to the documentation of this file.
#include "rheolef.h"
using namespace rheolef;
using namespace std;
#include "oldroyd_theta_scheme.h"
#include "oldroyd_cavity.h"
int main(int argc, char**argv) {
environment rheolef (argc, argv);
cin >> noverbose;
oldroyd_theta_scheme<oldroyd_cavity> pb;
geo omega (argv[1]);
Float We_incr = (argc > 2) ? atof(argv[2]) : 0.1;
Float We_max = (argc > 3) ? atof(argv[3]) : 0.1;
Float delta_t0 = (argc > 4) ? atof(argv[4]) : 0.005;
string restart = (argc > 5) ? argv[5] : "";
pb.tol = 1e-3;
pb.max_iter = 50000;
pb.alpha = 8./9;
pb.a = 1;
pb.delta_t = delta_t0;
Float delta_t_min = 1e-5;
Float We_incr_min = 1e-5;
dout << catchmark("alpha") << pb.alpha << endl
<< catchmark("a") << pb.a << endl;
branch even ("We", "tau", "u", "p");
field tau_h, uh, ph;
pb.initial (omega, tau_h, uh, ph, restart);
dout << even (pb.We, tau_h, uh, ph);
bool ok = true;
do {
if (ok) pb.We += We_incr;
derr << "# We = " << pb.We << " delta_t = " << pb.delta_t << endl;
field tau_h0 = tau_h, uh0 = uh, ph0 = ph;
ok = pb.solve (tau_h, uh, ph);
if (ok) {
dout << even (pb.We, tau_h, uh, ph);
} else {
pb.delta_t /= 2;
tau_h = tau_h0; uh = uh0; ph = ph0;
if (pb.delta_t < delta_t_min) {
derr << "# solve failed: decreases We_incr and retry..." << endl;
pb.delta_t = delta_t0;
We_incr /= 2;
pb.We -= We_incr;
if (We_incr < We_incr_min) break;
} else {
derr << "# solve failed: decreases delta_t and retry..." << endl;
}
}
derr << endl << endl;
} while (true);
}
Float
see the Float page for the full documentation
branch
see the branch page for the full documentation
field
see the field page for the full documentation
geo
see the geo page for the full documentation
rheolef::catchmark
see the catchmark page for the full documentation
Definition catchmark.h:67
rheolef::environment
see the environment page for the full documentation
Definition environment.h:121
main
int main()
Definition field2bb.cc:58
rheolef
This file is part of Rheolef.
Definition compiler_eigen.h:39
std
STL namespace.
oldroyd_cavity.h
The Oldroyd problem on the driven cavity benchmark – boundary conditions.
oldroyd_theta_scheme.h
The Oldroyd problem by the theta-scheme – class header.
rheolef.h
rheolef - reference manual
oldroyd_theta_scheme
Definition oldroyd_theta_scheme.h:26
oldroyd_theta_scheme::a
Float a
Definition oldroyd_theta_scheme.h:42
oldroyd_theta_scheme::We
Float We
Definition oldroyd_theta_scheme.h:42
oldroyd_theta_scheme::delta_t
Float delta_t
Definition oldroyd_theta_scheme.h:42
oldroyd_theta_scheme::alpha
Float alpha
Definition oldroyd_theta_scheme.h:42
oldroyd_theta_scheme::tol
Float tol
Definition oldroyd_theta_scheme.h:42
oldroyd_theta_scheme::solve
bool solve(field &tau_h, field &uh, field &ph)
Definition oldroyd_theta_scheme2.h:26
oldroyd_theta_scheme::initial
void initial(const geo &omega, field &tau_h, field &uh, field &ph, string restart)
Definition oldroyd_theta_scheme2.h:47
oldroyd_theta_scheme::max_iter
size_t max_iter
Definition oldroyd_theta_scheme.h:43