From 9f044e646dbf29d4f99dbb83c833e32f55eab3ba Mon Sep 17 00:00:00 2001 From: renchao_lu <renchao.lu@gmail.com> Date: Sat, 17 Apr 2021 15:31:51 +0200 Subject: [PATCH] [PL/CT] get correct porosity. --- .../ComponentTransportFEM.h | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/ProcessLib/ComponentTransport/ComponentTransportFEM.h b/ProcessLib/ComponentTransport/ComponentTransportFEM.h index 2d345fa4de2..95d1b686b40 100644 --- a/ProcessLib/ComponentTransport/ComponentTransportFEM.h +++ b/ProcessLib/ComponentTransport/ComponentTransportFEM.h @@ -294,6 +294,7 @@ public: _process_data.media_map->getMedium(_element.getID()); MaterialPropertyLib::VariableArray vars; + MaterialPropertyLib::VariableArray vars_prev; ParameterLib::SpatialPosition pos; pos.setElementID(_element.getID()); @@ -305,6 +306,7 @@ public: auto& ip_data = _ip_data[ip]; auto const& N = ip_data.N; auto& porosity = ip_data.porosity; + auto const& porosity_prev = ip_data.porosity_prev; auto const& chemical_system_id = ip_data.chemical_system_id; auto const n_component = _transport_process_variables.size(); @@ -323,8 +325,22 @@ public: C_int_pt[component_id]); } - vars[static_cast<int>(MaterialPropertyLib::Variable::porosity)] = - porosity; + { + vars_prev[static_cast<int>( + MaterialPropertyLib::Variable::porosity)] = porosity_prev; + + porosity = + _process_data.chemically_induced_porosity_change + ? porosity_prev + : medium + ->property( + MaterialPropertyLib::PropertyType::porosity) + .template value<double>(vars, vars_prev, pos, t, + dt); + + vars[static_cast<int>( + MaterialPropertyLib::Variable::porosity)] = porosity; + } _process_data.chemical_solver_interface->setChemicalSystemConcrete( C_int_pt, chemical_system_id, medium, vars, pos, t, dt); @@ -663,9 +679,16 @@ public: { vars_prev[static_cast<int>( MaterialPropertyLib::Variable::porosity)] = porosity_prev; + porosity = - medium.property(MaterialPropertyLib::PropertyType::porosity) - .template value<double>(vars, vars_prev, pos, t, dt); + _process_data.chemically_induced_porosity_change + ? porosity_prev + : medium + .property( + MaterialPropertyLib::PropertyType::porosity) + .template value<double>(vars, vars_prev, pos, t, + dt); + vars[static_cast<int>(MaterialPropertyLib::Variable::porosity)] = porosity; } @@ -789,9 +812,16 @@ public: { vars_prev[static_cast<int>( MaterialPropertyLib::Variable::porosity)] = porosity_prev; + porosity = - medium.property(MaterialPropertyLib::PropertyType::porosity) - .template value<double>(vars, vars_prev, pos, t, dt); + _process_data.chemically_induced_porosity_change + ? porosity_prev + : medium + .property( + MaterialPropertyLib::PropertyType::porosity) + .template value<double>(vars, vars_prev, pos, t, + dt); + vars[static_cast<int>(MaterialPropertyLib::Variable::porosity)] = porosity; } -- GitLab