94 std::string
const& name,
96 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
97 std::vector<ProcessVariable>
const& variables,
98 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters,
99 unsigned const integration_order,
101 std::vector<std::unique_ptr<MeshLib::Mesh>>
const& meshes,
102 std::map<
int, std::shared_ptr<MaterialPropertyLib::Medium>>
const& media)
107 DBUG(
"Create LiquidFlowProcess.");
116 variables, pv_config,
118 "process_variable"});
119 std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>
121 process_variables.push_back(std::move(per_process_variables));
128 std::vector<double>
const b =
131 int const mesh_space_dimension =
133 if (
static_cast<int>(b.size()) != mesh_space_dimension)
136 "specific body force (gravity vector) has {:d} components, but the "
137 "space dimension is {:d}.",
138 b.size(), mesh_space_dimension);
141 Eigen::VectorXd specific_body_force(b.size());
145 std::copy_n(b.data(), b.size(), specific_body_force.data());
148 std::unique_ptr<ProcessLib::SurfaceFluxData> surfaceflux;
149 auto calculatesurfaceflux_config =
152 if (calculatesurfaceflux_config)
155 *calculatesurfaceflux_config, meshes);
161 auto const is_linear =
166 INFO(
"LiquidFlow process is set to be linear.");
169 auto const equation_balance_type_str =
174 DBUG(
"Check the media properties of LiquidFlow process ...");
176 DBUG(
"Media properties verified.");
178 auto const* aperture_size_parameter = &ParameterLib::findParameter<double>(
181 auto const aperture_config =
186 aperture_size_parameter = &ParameterLib::findParameter<double>(
188 *aperture_config,
"parameter", parameters, 1);
194 (*ranges::begin(media_map.media()))->hasPhase(
"Gas")
200 std::move(media_map),
203 mesh_space_dimension,
204 std::move(specific_body_force),
206 *aperture_size_parameter,
210 return std::make_unique<LiquidFlowProcess>(
211 std::move(name), mesh, std::move(jacobian_assembler), parameters,
212 integration_order, std::move(process_variables),
213 std::move(process_data), std::move(secondary_variables),
214 std::move(surfaceflux), is_linear);