|
| | CFINSForcing (const std::string &object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, SAMRAI::tbox::Pointer< IBTK::CartGridFunction > u_fcn, SAMRAI::tbox::Pointer< SAMRAI::geom::CartesianGridGeometry< NDIM > > grid_geometry, SAMRAI::tbox::Pointer< IBAMR::AdvDiffSemiImplicitHierarchyIntegrator > adv_diff_integrator, SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > > visit_data_writer) |
| | This constructor creates Variable and VariableContext objects for storing the viscoleastic stresses at the centers of the Cartesian grid. Sets up the advection diffusion solver to use the velocity function prescribed. The initial and boundary conditions should be specified on the quantity being solved for (e.g. Conformation tensor or square root or logarithm of the conformation tensor). More...
|
| |
| | CFINSForcing (const std::string &object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > app_initializer, const SAMRAI::tbox::Pointer< IBAMR::INSHierarchyIntegrator > fluid_solver, SAMRAI::tbox::Pointer< SAMRAI::geom::CartesianGridGeometry< NDIM > > grid_geometry, SAMRAI::tbox::Pointer< IBAMR::AdvDiffSemiImplicitHierarchyIntegrator > adv_diff_integrator, SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > > visit_data_writer) |
| | This constructor creates Variable and VariableContext objects for storing the viscoleastic stresses at the centers of the Cartesian grid. Sets up the advection diffusion solver to use the fluid velocity from the fluid solver. Note that this function must be registered with the fluid solver as a forcing function for the viscoelastic stress to effect the fluid velocity. The initial and boundary conditions should be specified on the quantity being solved for (e.g. Conformation tensor or square root or logarithm of the conformation tensor). More...
|
| |
| | ~CFINSForcing () |
| | Deallocates draw data and deletes boundary conditions. More...
|
| |
| SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > | getVariable () |
| | This function returns a pointer to the cell variable that stores the viscoelastic stress. More...
|
| |
| int | getVariableIdx () |
| | This function returns the patch data index used to store the viscoelastic stress. More...
|
| |
| void | registerCFStrategy (SAMRAI::tbox::Pointer< CFStrategy > rhs) |
| | This function registers a strategy with the class. More...
|
| |
|
| SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > | d_C_cc_var |
| |
| SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContext > | d_context |
| |
| int | d_C_scratch_idx = IBTK::invalid_index |
| |
| SAMRAI::tbox::Pointer< IBTK::muParserCartGridFunction > | d_init_conds |
| |
| SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > | d_conform_var_draw |
| |
| SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > | d_stress_var_draw |
| |
| SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > | d_div_sig_var_draw |
| |
| int | d_conform_idx_draw = IBTK::invalid_index |
| |
| int | d_stress_idx_draw = IBTK::invalid_index |
| |
| int | d_div_sig_idx_draw = IBTK::invalid_index |
| |
| bool | d_conform_draw = true |
| |
| bool | d_stress_draw = true |
| |
| bool | d_div_sig_draw = false |
| |
| std::string | d_fluid_model = "OLDROYDB" |
| |
| std::string | d_interp_type = "LINEAR" |
| |
| bool | d_project_conform = true |
| |
| TensorEvolutionType | d_evolve_type = STANDARD |
| |
| SAMRAI::tbox::Pointer< AdvDiffSemiImplicitHierarchyIntegrator > | d_adv_diff_integrator |
| |
| SAMRAI::tbox::Pointer< CFUpperConvectiveOperator > | d_convec_oper |
| |
| std::vector< std::unique_ptr< SAMRAI::solv::RobinBcCoefStrategy< NDIM > > > | d_conc_bc_coefs |
| |
| std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > | d_conc_bc_coefs_ptrs |
| |
| SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > | d_hierarchy |
| |
| double | d_max_det = std::numeric_limits<double>::quiet_NaN() |
| |
| double | d_min_det = std::numeric_limits<double>::quiet_NaN() |
| |
| bool | d_log_det = false |
| |
| bool | d_log_div_sig = false |
| |
| bool | d_positive_def = true |
| |
| bool | d_error_on_spd = false |
| |
| double | d_min_norm = std::numeric_limits<double>::quiet_NaN() |
| |
| double | d_max_norm = std::numeric_limits<double>::quiet_NaN() |
| |
| SAMRAI::tbox::Array< double > | d_div_sig_rel_thresh |
| |
| SAMRAI::tbox::Array< double > | d_div_sig_abs_thresh |
| |
| bool | d_div_sig_rel_tag = false |
| |
| bool | d_div_sig_abs_tag = false |
| |
| SAMRAI::tbox::Pointer< IBTK::CartGridFunction > | d_u_fcn |
| |
| SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > | d_u_var |
| |
| SAMRAI::tbox::Pointer< CFStrategy > | d_cf_strategy |
| |
| bool | isTimeDependent () const override |
| | Indicates whether the concrete INSStaggeredStochasticForcing object is time-dependent. More...
|
| |
| void | setDataOnPatchHierarchy (const int data_idx, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, const double data_time, const bool initial_time=false, const int coarsest_ln=IBTK::invalid_level_number, const int finest_ln=IBTK::invalid_level_number) override |
| | Compute the divergence of the stress tensor. Also sets up requested visualizations. More...
|
| |
| void | setDataOnPatch (const int data_idx, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, SAMRAI::tbox::Pointer< SAMRAI::hier::Patch< NDIM > > patch, const double data_time, const bool initial_time=false, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > > patch_level=SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > >(nullptr)) override |
| | Evaluate the divergence on the patch interior. More...
|
| |
| void | setDataOnPatchLevel (const int data_idx, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > > level, const double data_time, const bool initial_time) override |
| | Evaluate the divergence on the specified patch level. More...
|
| |
| void | checkPositiveDefinite (const int data_idx, const SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, const double data_time, const bool initial_time) |
| | Check whether the provided patch index stores a positive definite tensor. More...
|
| |
| void | applyGradientDetector (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double error_data_time, int tag_index, bool initial_time, bool) |
| | Tag cells based on the specifications provided in the input database. More...
|
| |
| void | projectTensor (const int data_idx, const SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, const double data_time, const bool initial_time, const bool extended_box) |
| | Projects the symmetric tensor stored in data_idx to the nearest non negative matrix in the L2 norm. More...
|
| |
| SAMRAI::tbox::Pointer< AdvDiffSemiImplicitHierarchyIntegrator > | getAdvDiffHierarchyIntegrator () |
| | Return the advection diffusion integrator used to evolve the conformation tensor. More...
|
| |
| static void | apply_gradient_detector_callback (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double error_data_time, int tag_index, bool initial_time, bool richardson_extrapolation_too, void *ctx) |
| |
| static void | apply_project_tensor_callback (double current_time, double new_time, int cycle_num, void *ctx) |
| |
| void | commonConstructor (const SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > > visit_data_writer, SAMRAI::tbox::Pointer< SAMRAI::geom::CartesianGridGeometry< NDIM > > grid_geometry, std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > vel_bcs) |
| |
| void | findDeterminant (const int data_idx, const SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, const double data_time, const bool initial_time) |
| | Compute the determinant of the symmetric tensor stored in data_idx. Fills in d_max_det and d_min_det. More...
|
| |
| void | squareMatrix (const int data_idx, const SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, const SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, const double data_time, const bool initial_time, const int coarsest_ln, const int finest_ln, const bool extended_box) |
| | Square the symmetric tensor stored in data_idx in place. More...
|
| |
| void | exponentiateMatrix (const int data_idx, const SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, const SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, const double data_time, const bool initial_time, const int coarsest_ln, const int finest_ln, const bool extended_box) |
| | Exponentiate the symmetric tensor stored in data_idx in place. More...
|
| |
| void | setupPlotConformationTensor (int C_cc_idx) |
| | Given the conformation tensor, set up any requested drawing variables. More...
|
| |
Users must register a strategy operator CFStrategy that can compute (1) the relaxation of the stress and (2) the conversion from conformation tensor to stress tensor. One can choose from the pre-programmed models Oldroyd-B, Giesekus, or Rolie-Poly. Optionally, you can also register a your own strategy. The fluid model is specified through the database parameter "fluid_parameter". By specifying "USER_DEFINED", you can register your own strategy operator. This class currently solves for the conformation tensor or the square root or logarithm of the conformation tensor.
Input Database Parameters
-
InitialConditions: Database used for specifying the initial conditions via a muParserCartGridFunction.
-
interp_type: String to determine order used for filling ghost cells. Possible values are:
-
"LINEAR" (default)
-
"QUADRATIC"
-
evolution_type: Parameter specifying the method of evolving the conformation tensor. Possible values are:
-
"STANDARD": Evolve the conformation tensor itself (default).
-
"SQUARE_ROOT": Evolve the square root of the conformation tensor.
-
"LOGARITHM": Evolve the logarithm of the conformation tensor.
-
log_determinant: Boolean on writing the determinant of the conformation tensor (default false).
-
log_divergence: Boolean on writing the divergence of the conformation tensor (default false).
-
fluid_model: Specifies the fluid model. Possible values are:
-
"OLDROYDB" (default)
-
"GIESEKUS"
-
"ROLIEPOLY"
-
"USER_DEFINED": In this case, users must register a relaxation function with registerRelaxationOperator().
-
error_on_spd: Boolean that if true, kills the simulation if the conformation tensor is ever not positive definite (default true).
-
project_conformation_tensor: Boolean that if true, projects the conformation tensor to nearest non-negative definite tensor (default true).
-
output_conformation_tensor: Boolean that if true, writes the conformation tensor to visualization files (default true).
-
output_stress_tensor: Boolean that if true, writes the resulting stress tensor to visualization files (default true).
-
output_divergence: Boolean that if true, writes the divergence of the conformation tensor to visualization files (default false).
-
divergence_rel_tagging: Boolean that if true, tags cells for refinement if the divergence of the conformation tensor exceeds some relative threshold, specified by the array divergence_rel_thresh (default false).
-
divergence_abs_tagging: Boolean that if true, tags cells for refinement if the divergence of the conformation tensor exceeds some absolute threshold, specified by the array divergence_abs_thresh (default false).
-
ExtraStressBoundaryConditions_d: Database used for boundary conditions for the evolved tensor. Here, d is a placeholder for the component of the symmetric conformation tensor, specified using Voigt notation (ignored for periodic boundary conditions).
-
convective_operator_type: String for the operator used for computing the advective term.
-
difference_form: String to determine in what form the convective operator is computed. Possible values are:
-
"ADVECTIVE" (default)
-
"CONSERVATIVE"
-
"SKEW_SYMMETRIC"
There are also strategy specific items searched for in the database.