59 std::string
const& name,
61 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
62 std::vector<ProcessVariable>
const& variables,
63 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters,
64 unsigned const integration_order,
66 std::vector<std::unique_ptr<MeshLib::Mesh>>
const& meshes,
67 std::map<
int, std::shared_ptr<MaterialPropertyLib::Medium>>
const& media)
72 DBUG(
"Create LiquidFlowProcess.");
84 std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>
86 process_variables.push_back(std::move(per_process_variables));
93 std::vector<double>
const b =
96 int const mesh_space_dimension =
98 if (
static_cast<int>(b.size()) != mesh_space_dimension)
101 "specific body force (gravity vector) has {:d} components, but the "
102 "space dimension is {:d}.",
103 b.size(), mesh_space_dimension);
106 Eigen::VectorXd specific_body_force(b.size());
110 std::copy_n(b.data(), b.size(), specific_body_force.data());
113 std::unique_ptr<ProcessLib::SurfaceFluxData> surfaceflux;
114 auto calculatesurfaceflux_config =
117 if (calculatesurfaceflux_config)
120 *calculatesurfaceflux_config, meshes);
126 auto const is_linear =
131 INFO(
"LiquidFlow process is set to be linear.");
134 auto const equation_balance_type_str =
139 DBUG(
"Check the media properties of LiquidFlow process ...");
141 DBUG(
"Media properties verified.");
146 auto const aperture_config =
153 *aperture_config,
"parameter", parameters, 1);
159 (*ranges::begin(media_map.media()))
165 equation_balance_type_str ==
167 std::move(media_map),
170 mesh_space_dimension,
171 std::move(specific_body_force),
173 *aperture_size_parameter,
177 return std::make_unique<LiquidFlowProcess>(
178 std::move(name), mesh, std::move(jacobian_assembler), parameters,
179 integration_order, std::move(process_variables),
180 std::move(process_data), std::move(secondary_variables),
181 std::move(surfaceflux), is_linear);