24 std::vector<double>
const& ,
25 std::vector<double>
const& ,
26 std::vector<double>& ,
27 std::vector<double>& ,
28 std::vector<double>& )
31 "The assemble() function is not implemented in the local assembler.");
35 double const ,
double const , Eigen::VectorXd
const& ,
36 Eigen::VectorXd
const& ,
int const ,
37 std::vector<double>& ,
38 std::vector<double>& ,
39 std::vector<double>& )
42 "The assembleForStaggeredScheme() function is not implemented in the "
47 double const ,
double const ,
48 std::vector<double>
const& ,
49 std::vector<double>
const& ,
50 std::vector<double>& ,
51 std::vector<double>& ,
52 std::vector<double>& ,
53 std::vector<double>& )
56 "The assembleWithJacobian() function is not implemented in the local "
61 double const ,
double const , Eigen::VectorXd
const& ,
62 Eigen::VectorXd
const& ,
int const ,
63 std::vector<double>& ,
64 std::vector<double>& ,
65 std::vector<double>& ,
66 std::vector<double>& )
69 "The assembleWithJacobianForStaggeredScheme() function is not "
70 "implemented in the local assembler.");
74 std::size_t
const mesh_item_id,
75 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_tables,
76 double const t,
double const dt, std::vector<GlobalVector*>
const& x,
79 std::vector<double> local_x_vec;
81 auto const n_processes = x.size();
82 for (std::size_t process_id = 0; process_id < n_processes; ++process_id)
86 assert(!indices.empty());
87 auto const local_solution = x[process_id]->get(indices);
88 local_x_vec.insert(std::end(local_x_vec), std::begin(local_solution),
89 std::end(local_solution));
96 auto const local_x_dot_vec = x_dot.
get(indices);
103 std::size_t
const mesh_item_id,
105 double const t,
bool const use_monolithic_scheme,
int const process_id)
108 auto const local_x = x.
get(indices);
121 std::size_t
const mesh_item_id,
123 double const t,
double const delta_t)
126 auto const local_x = x.
get(indices);
132 std::size_t
const mesh_item_id,
133 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_tables,
134 std::vector<GlobalVector*>
const& x,
double const t,
double const dt)
136 std::vector<double> local_x_vec;
138 auto const n_processes = x.size();
139 for (std::size_t process_id = 0; process_id < n_processes; ++process_id)
143 assert(!indices.empty());
144 auto const local_solution = x[process_id]->get(indices);
145 local_x_vec.insert(std::end(local_x_vec), std::begin(local_solution),
146 std::end(local_solution));
154 std::size_t
const mesh_item_id,
157 bool const use_monolithic_scheme,
int const process_id)
160 auto const local_x = x.
get(indices);
161 auto const local_xdot = xdot.
get(indices);
164 use_monolithic_scheme, process_id);
Global vector based on Eigen vector.
double get(IndexType rowId) const
get entry
virtual void preTimestepConcrete(std::vector< double > const &, double const, double const)
virtual void assembleForStaggeredScheme(double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_xdot, int const process_id, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data)
virtual void setInitialConditionsConcrete(std::vector< double > const &, double const, bool const, int const)
virtual void initializeConcrete()
virtual void computeSecondaryVariableConcrete(double const, double const, Eigen::VectorXd const &, Eigen::VectorXd const &)
virtual void assembleWithJacobian(double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_xdot, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data)
virtual void postNonLinearSolverConcrete(std::vector< double > const &, std::vector< double > const &, double const, double const, bool const, int const)
virtual void postTimestep(std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, double const t, double const dt)
virtual void preTimestep(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table, GlobalVector const &x, double const t, double const delta_t)
virtual void initialize(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table)
void setInitialConditions(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table, GlobalVector const &x, double const t, bool const use_monolithic_scheme, int const process_id)
virtual void assemble(double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_xdot, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data)
virtual void computeSecondaryVariable(std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, double const t, double const dt, std::vector< GlobalVector * > const &x, GlobalVector const &x_dot, int const process_id)
virtual void assembleWithJacobianForStaggeredScheme(double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_xdot, int const process_id, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data)
void postNonLinearSolver(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table, GlobalVector const &x, GlobalVector const &xdot, double const t, double const dt, bool const use_monolithic_scheme, int const process_id)
virtual void postTimestepConcrete(Eigen::VectorXd const &, double const, double const)
Eigen::Map< const Vector > toVector(std::vector< double > const &data, Eigen::VectorXd::Index size)
Creates an Eigen mapped vector from the given data vector.
std::vector< GlobalIndexType > getIndices(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table)