86 std::string
const& name,
88 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
89 std::vector<ProcessVariable>
const& variables,
90 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters,
91 unsigned const integration_order,
93 std::vector<std::unique_ptr<MeshLib::Mesh>>
const& meshes,
94 std::map<
int, std::shared_ptr<MaterialPropertyLib::Medium>>
const& media)
99 DBUG(
"Create LiquidFlowProcess.");
108 variables, pv_config,
110 "process_variable"});
111 std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>
113 process_variables.push_back(std::move(per_process_variables));
120 std::vector<double>
const b =
123 int const mesh_space_dimension =
125 if (
static_cast<int>(b.size()) != mesh_space_dimension)
128 "specific body force (gravity vector) has {:d} components, but the "
129 "space dimension is {:d}.",
130 b.size(), mesh_space_dimension);
133 Eigen::VectorXd specific_body_force(b.size());
137 std::copy_n(b.data(), b.size(), specific_body_force.data());
140 std::unique_ptr<ProcessLib::SurfaceFluxData> surfaceflux;
141 auto calculatesurfaceflux_config =
144 if (calculatesurfaceflux_config)
147 *calculatesurfaceflux_config, meshes);
153 auto const is_linear =
158 INFO(
"LiquidFlow process is set to be linear.");
161 auto const equation_balance_type_str =
166 DBUG(
"Check the media properties of LiquidFlow process ...");
168 DBUG(
"Media properties verified.");
173 auto const aperture_config =
180 *aperture_config,
"parameter", parameters, 1);
186 (*ranges::begin(media_map.media()))->hasPhase(
"Gas")
192 std::move(media_map),
195 mesh_space_dimension,
196 std::move(specific_body_force),
198 *aperture_size_parameter,
202 return std::make_unique<LiquidFlowProcess>(
203 std::move(name), mesh, std::move(jacobian_assembler), parameters,
204 integration_order, std::move(process_variables),
205 std::move(process_data), std::move(secondary_variables),
206 std::move(surfaceflux), is_linear);