28 namespace time_integrator
31 class ImplicitTimeIntegrator;
36 class VarFormTestAccess;
60 virtual std::string
name()
const = 0;
76 virtual void init(
const std::string &formulation,
const Units &
units,
const json &
args,
const std::string &out_path);
80 void set_mesh(std::unique_ptr<mesh::Mesh> mesh,
const double loading_mesh_time = 0);
110 const Eigen::MatrixXd &solution,
123 virtual void save_json(
const Eigen::MatrixXd &solution, std::ostream &out)
const = 0;
126 void save_json(
const Eigen::MatrixXd &solution)
const;
127 virtual void export_data(
const Eigen::MatrixXd &solution)
const = 0;
134 std::string
resolve_input_path(
const std::string &path,
const bool only_if_exists =
false)
const;
137 virtual void reset() = 0;
146 Eigen::MatrixXd &sol,
153 const bool iso_parametric,
154 const Eigen::VectorXi &disc_orders,
155 const Eigen::VectorXi &disc_ordersq,
156 const std::string &basis_type,
157 const std::string &poly_basis_type,
160 const int quadrature_order,
161 const int mass_quadrature_order,
162 const bool use_corner_quadrature,
163 const int n_harmonic_samples,
164 const int integral_constraints,
167 std::shared_ptr<GeometryMapping> geometry =
nullptr);
172 const std::string &poly_basis_type,
175 const int quadrature_order,
176 const int mass_quadrature_order,
177 const int n_harmonic_samples,
178 const int integral_constraints,
184 const std::string &basis_type,
186 Eigen::VectorXi &space_in_node_to_node,
187 Eigen::VectorXi &space_in_primitive_to_primitive)
const;
197 const bool rest_mesh_written =
false)
const;
200 void save_restart_json(
const double t0,
const double dt,
const int t,
const bool rest_mesh_written)
const;
201 void save_timestep(
const double time,
const int t,
const double t0,
const double dt,
const Eigen::MatrixXd &solution)
const;
203 const double time,
const int t,
const double dt,
204 const Eigen::MatrixXd &solution, paraviewo::VTMWriter &vtm,
205 const std::string &block_prefix)
const;
206 void save_subsolve(
const int i,
const int t,
const Eigen::MatrixXd &solution)
const;
208 void notify_time_step(
const int t,
const int time_steps,
const double t0,
const double dt)
const;
235 const std::string &state_path,
236 const std::string &x_name,
238 const Eigen::VectorXi &in_node_to_node,
243 const std::vector<basis::ElementBases> &bases,
244 const std::vector<int> &node_ids,
245 std::vector<RowVectorNd> &positions);
Utilies related to export of geometry.
Abstract mesh class to capture 2d/3d conforming and non-conforming meshes.
Implicit time integrator of a second order ODE (equivently a system of coupled first order ODEs).
std::function< std::vector< OutputField >(const OutputSample &)> OutputFieldFunction
std::array< int, 2 > QuadratureOrders