This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
More...
|
| HeatTransfer (const NonlinearSolverOptions nonlinear_opts, const LinearSolverOptions lin_opts, const serac::TimesteppingOptions timestepping_opts, const std::string &physics_name, std::string mesh_tag, std::vector< std::string > parameter_names={}, int cycle=0, double time=0.0, bool checkpoint_to_disk=false) |
| Construct a new heat transfer object. More...
|
|
| HeatTransfer (std::unique_ptr< serac::EquationSolver > solver, const serac::TimesteppingOptions timestepping_opts, const std::string &physics_name, std::string mesh_tag, std::vector< std::string > parameter_names={}, int cycle=0, double time=0.0, bool checkpoint_to_disk=false) |
| Construct a new heat transfer object. More...
|
|
| HeatTransfer (const HeatTransferInputOptions &input_options, const std::string &physics_name, const std::string &mesh_tag, int cycle=0, double time=0.0) |
| Construct a new Nonlinear HeatTransfer Solver object. More...
|
|
void | initializeThermalStates () |
| Non virtual method to reset thermal states to zero. This does not reset design parameters or shape. More...
|
|
void | resetStates (int cycle=0, double time=0.0) override |
| Method to reset physics states to zero. This does not reset design parameters or shape. More...
|
|
void | setTemperatureBCs (const std::set< int > &temp_bdr, std::function< double(const mfem::Vector &x, double t)> temp) |
| Set essential temperature boundary conditions (strongly enforced) More...
|
|
void | advanceTimestep (double dt) override |
| Advance the heat conduction physics module in time. More...
|
|
template<int... active_parameters, typename MaterialType > |
void | setMaterial (DependsOn< active_parameters... >, MaterialType material) |
| Set the thermal material model for the physics solver. More...
|
|
template<typename MaterialType > |
void | setMaterial (MaterialType material) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
void | setTemperature (std::function< double(const mfem::Vector &x, double t)> temp) |
| Set the underlying finite element state to a prescribed temperature. More...
|
|
void | setTemperature (const FiniteElementState temp) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
template<int... active_parameters, typename SourceType > |
void | setSource (DependsOn< active_parameters... >, SourceType source_function, const std::optional< Domain > &optional_domain=std::nullopt) |
| Set the thermal source function. More...
|
|
template<typename SourceType > |
void | setSource (SourceType source_function, const std::optional< Domain > &optional_domain=std::nullopt) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
template<int... active_parameters, typename FluxType > |
void | setFluxBCs (DependsOn< active_parameters... >, FluxType flux_function, const std::optional< Domain > &optional_domain=std::nullopt) |
| Set the thermal flux boundary condition. More...
|
|
template<typename FluxType > |
void | setFluxBCs (FluxType flux_function, const std::optional< Domain > &optional_domain=std::nullopt) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
void | setShapeDisplacement (std::function< void(const mfem::Vector &x, mfem::Vector &shape_disp)> shape_disp) |
| Set the underlying finite element state to a prescribed shape displacement. More...
|
|
void | setShapeDisplacement (FiniteElementState &shape_disp) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
const serac::FiniteElementState & | temperature () const |
| Get the temperature state. More...
|
|
const serac::FiniteElementState & | temperatureRate () const |
| Get the temperature rate of change state. More...
|
|
const FiniteElementState & | state (const std::string &state_name) const override |
| Accessor for getting named finite element state primal solution from the physics modules. More...
|
|
void | setState (const std::string &state_name, const FiniteElementState &state) override |
| Set the primal solution field (temperature) for the underlying heat transfer solver. More...
|
|
virtual std::vector< std::string > | stateNames () const override |
| Get a vector of the finite element state primal solution names. More...
|
|
template<int... active_parameters, typename callable > |
void | addCustomBoundaryIntegral (DependsOn< active_parameters... >, callable qfunction, const std::optional< Domain > &optional_domain=std::nullopt) |
| register a custom boundary integral calculation as part of the residual More...
|
|
const FiniteElementState & | adjoint (const std::string &state_name) const override |
| Accessor for getting named finite element state adjoint solution from the physics modules. More...
|
|
void | completeSetup () override |
| Complete the initialization and allocation of the data structures. More...
|
|
virtual void | setAdjointLoad (std::unordered_map< std::string, const serac::FiniteElementDual & > loads) override |
| Set the loads for the adjoint reverse timestep solve. More...
|
|
void | reverseAdjointTimestep () override |
| Solve the adjoint problem. More...
|
|
std::unordered_map< std::string, FiniteElementState > | getCheckpointedStates (int cycle_to_load) const override |
| Accessor for getting named finite element state primal solution from the physics modules at a given checkpointed cycle index. More...
|
|
FiniteElementDual & | computeTimestepSensitivity (size_t parameter_field) override |
| Compute the implicit sensitivity of the quantity of interest used in defining the load for the adjoint problem with respect to the parameter field for the last computed adjoint timestep. More...
|
|
FiniteElementDual & | computeTimestepShapeSensitivity () override |
| Compute the implicit sensitivity of the quantity of interest used in defining the load for the adjoint problem with respect to the shape displacement field for the last computed adjoint timestep. More...
|
|
const std::unordered_map< std::string, const serac::FiniteElementDual & > | computeInitialConditionSensitivity () override |
| Compute the implicit sensitivity of the quantity of interest with respect to the initial temperature. More...
|
|
virtual | ~HeatTransfer ()=default |
| Destroy the Thermal Solver object.
|
|
| BasePhysics (std::string physics_name, std::string mesh_tag, int cycle=0, double time=0.0, bool checkpoint_to_disk=false) |
| Empty constructor. More...
|
|
| BasePhysics (BasePhysics &&other)=default |
| Construct a new Base Physics object (copy constructor) More...
|
|
virtual double | time () const |
| Get the current forward-solution time. More...
|
|
virtual int | cycle () const |
| Get the current forward-solution cycle iteration number. More...
|
|
virtual double | maxTime () const |
| Get the maximum time reached by the forward solver. More...
|
|
virtual double | minTime () const |
| Get the initial time used by the forward solver. More...
|
|
virtual int | maxCycle () const |
| The maximum cycle (timestep iteration number) reached by the forward solver. More...
|
|
virtual int | minCycle () const |
| Get the initial cycle (timestep iteration number) used by the forward solver. More...
|
|
bool | isQuasistatic () const |
| Check if the physics is setup as quasistatic. More...
|
|
virtual std::vector< double > | timesteps () const |
| Get a vector of the timestep sizes (i.e. \(\Delta t\)s) taken by the forward solver. More...
|
|
virtual std::vector< std::string > | adjointNames () const |
| Get a vector of the finite element state adjoint solution names. More...
|
|
const FiniteElementState & | shapeDisplacement () const |
| Accessor for getting the shape displacement field from the physics modules. More...
|
|
const FiniteElementState & | parameter (const std::string ¶meter_name) const |
| Accessor for getting named finite element state parameter fields from the physics modules. More...
|
|
const FiniteElementState & | parameter (std::size_t parameter_index) const |
| Accessor for getting indexed finite element state parameter fields from the physics modules. More...
|
|
std::vector< std::string > | parameterNames () |
| Get a vector of the finite element state parameter names. More...
|
|
void | setParameter (const size_t parameter_index, const FiniteElementState ¶meter_state) |
| Deep copy a parameter field into the internally-owned parameter used for simulations. More...
|
|
void | setShapeDisplacement (const FiniteElementState &shape_displacement) |
| Set the current shape displacement for the underlying mesh. More...
|
|
virtual void | outputStateToDisk (std::optional< std::string > paraview_output_dir={}) const |
| Output the current state of the PDE fields in Sidre format and optionally in Paraview format if paraview_output_dir is given. More...
|
|
FiniteElementState | loadCheckpointedState (const std::string &state_name, int cycle) const |
| Accessor for getting a single named finite element state primal solution from the physics modules at a given checkpointed cycle index. More...
|
|
virtual double | getCheckpointedTimestep (int cycle) const |
| Get a timestep increment which has been previously checkpointed at the give cycle. More...
|
|
virtual void | initializeSummary (axom::sidre::DataStore &datastore, const double t_final, const double dt) const |
| Initializes the Sidre structure for simulation summary data. More...
|
|
virtual void | saveSummary (axom::sidre::DataStore &datastore, const double t) const |
| Saves the summary data to the Sidre Datastore. More...
|
|
virtual | ~BasePhysics ()=default |
| Destroy the Base Solver object.
|
|
const mfem::ParMesh & | mesh () const |
| Returns a reference to the mesh object.
|
|
mfem::ParMesh & | mesh () |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
|
serac::FiniteElementState | temperature_ |
| The temperature finite element state.
|
|
FiniteElementState | temperature_rate_ |
| Rate of change in temperature at the current adjoint timestep.
|
|
serac::FiniteElementState | adjoint_temperature_ |
| The adjoint temperature finite element states, the multiplier on the residual for a given timestep.
|
|
serac::FiniteElementDual | implicit_sensitivity_temperature_start_of_step_ |
| The total/implicit sensitivity of the qoi with respect to the start of the previous timestep's temperature.
|
|
serac::FiniteElementDual | temperature_adjoint_load_ |
| The downstream derivative of the qoi with repect to the primal temperature variable.
|
|
serac::FiniteElementDual | temperature_rate_adjoint_load_ |
| The downstream derivative of the qoi with repect to the primal temperature rate variable.
|
|
std::unique_ptr< ShapeAwareFunctional< shape_trial, test(scalar_trial, scalar_trial, parameter_space...)> > | residual_ |
| serac::Functional that is used to calculate the residual and its derivatives
|
|
std::unique_ptr< mfem::HypreParMatrix > | M_ |
| Assembled mass matrix.
|
|
std::shared_ptr< mfem::Coefficient > | temp_bdr_coef_ |
| Coefficient containing the essential boundary values.
|
|
mfem_ext::StdFunctionOperator | residual_with_bcs_ |
| mfem::Operator that describes the weight residual and its gradient with respect to temperature
|
|
std::unique_ptr< EquationSolver > | nonlin_solver_ |
| the specific methods and tolerances specified to solve the nonlinear residual equations
|
|
mfem_ext::FirstOrderODE | ode_ |
| the ordinary differential equation that describes how to solve for the time derivative of temperature, given the current temperature and source terms
|
|
std::unique_ptr< mfem::HypreParMatrix > | J_ |
| Assembled sparse matrix for the Jacobian.
|
|
std::unique_ptr< mfem::HypreParMatrix > | J_e_ |
|
double | dt_ |
| The current timestep.
|
|
double | previous_dt_ |
| The previous timestep.
|
|
mfem::Vector | u_ |
| Predicted temperature true dofs.
|
|
mfem::Vector | u_predicted_ |
| Predicted temperature true dofs.
|
|
std::array< std::function< decltype((*residual_)(DifferentiateWRT< 1 >{}, 0.0, shape_displacement_, temperature_, temperature_rate_, *parameters_[parameter_indices].state...))(double)>, sizeof...(parameter_indices)> | d_residual_d_ |
| Array functions computing the derivative of the residual with respect to each given parameter. More...
|
|
std::string | name_ = {} |
| Name of the physics module.
|
|
std::string | mesh_tag_ = {} |
| ID of the corresponding MFEMSidreDataCollection (denoting a mesh)
|
|
mfem::ParMesh & | mesh_ |
| The primary mesh.
|
|
MPI_Comm | comm_ |
| The MPI communicator.
|
|
std::vector< const serac::FiniteElementState * > | states_ |
| List of finite element primal states associated with this physics module.
|
|
std::vector< const serac::FiniteElementState * > | adjoints_ |
| List of finite element adjoint states associated with this physics module.
|
|
std::vector< const serac::FiniteElementDual * > | duals_ |
| List of finite element duals associated with this physics module.
|
|
std::vector< ParameterInfo > | parameters_ |
| A vector of the parameters associated with this physics module.
|
|
FiniteElementState & | shape_displacement_ |
| The parameter info associated with the shape displacement field. More...
|
|
std::unique_ptr< FiniteElementDual > | shape_displacement_sensitivity_ |
| Sensitivity with respect to the shape displacement field. More...
|
|
std::unordered_map< std::string, std::vector< serac::FiniteElementState > > | checkpoint_states_ |
| A map containing optionally in-memory checkpointed primal states for transient adjoint solvers.
|
|
std::unordered_map< std::string, serac::FiniteElementState > | cached_checkpoint_states_ |
| A container relating a checkpointed cycle and the associated finite element state fields. More...
|
|
std::optional< int > | cached_checkpoint_cycle_ |
| An optional int for disk-based checkpointing containing the cycle number of the last retrieved checkpoint.
|
|
bool | is_quasistatic_ = true |
| Whether the simulation is time-independent.
|
|
double | time_ |
| Current time for the forward pass.
|
|
double | max_time_ |
| The maximum time reached for the forward solver.
|
|
double | min_time_ |
| The time the forward solver was initialized to.
|
|
std::vector< double > | timesteps_ |
| A vector of the timestep sizes (i.e. \(\Delta t\)) taken by the forward solver.
|
|
int | cycle_ |
| Current cycle (forward pass time iteration count)
|
|
int | max_cycle_ |
| The maximum cycle (forward pass iteration count) reached by the forward solver.
|
|
int | min_cycle_ |
| The cycle the forward solver was initialized to.
|
|
double | ode_time_point_ |
| The value of time at which the ODE solver wants to evaluate the residual.
|
|
int | mpi_rank_ |
| MPI rank.
|
|
int | mpi_size_ |
| MPI size.
|
|
std::unique_ptr< mfem::ParaViewDataCollection > | paraview_dc_ |
| DataCollection pointer for optional paraview output.
|
|
std::unordered_map< std::string, std::unique_ptr< mfem::ParGridFunction > > | paraview_dual_grid_functions_ |
| A optional map of the dual names and duals in grid function form for paraview output.
|
|
std::unique_ptr< mfem::ParGridFunction > | shape_sensitivity_grid_function_ |
| A optional view of the shape sensitivity in grid function form for paraview output.
|
|
BoundaryConditionManager | bcs_ |
| Boundary condition manager instance.
|
|
bool | checkpoint_to_disk_ |
| A flag denoting whether to save the state to disk or memory as needed for dynamic adjoint solves.
|
|
template<int order, int dim, typename... parameter_space, int... parameter_indices>
class serac::HeatTransfer< order, dim, Parameters< parameter_space... >, std::integer_sequence< int, parameter_indices... > >
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 87 of file heat_transfer.hpp.