You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This RFC is to propose the Semi-Implicit two-phase solver in branch solver/two-phase-semiimplicit. The solver utilized semi-implicit Chorin's projection scheme which is mainly to be used for modeling hydraulic-coupled problem in saturated soil with incompressible fluids. This work will be carried out after both the two-phase-explicit and navier-stokes are merged into the develop branch.
Motivation
Use the Semi-Implicit two-phase solver can get a much more stable results for hydraulic-coupled problem. The time step will be free from the limitation of fluid part and almost the same with single phase MPM, then it will increase the computation efficiency. The permeability can also be defined in a wider range than the explicit solver.
Design Detail
The following classes and functionality were implemented:
MPMSemiImplicitTwoPhase solver class
Some necessary functions will be added into the TwoPhaseParticle
The matrix equation parts will be quite similar with the solver/navier-stokes including three parts: 1) Solving the intermediate velocity; 2) Solving the pore pressure (Poisson equation); 3) Correct the velocity
a. The assembler class is made to assemble the global system of equations. First, all nodes will be assigned an active_id to specify the index of each node in the global systems of equations; this id is changing every time step as the particles move over the background grids. Then, when the explicit step is completed, a Intermediate (Momentum equations for mixture and fluid) and laplacian matrix are constructed in all cells. We store this local matrix with size of (nnodes x nnodes) as Eigen matrices in Cell along with the correction_matrix as:
//! Local Intermediate matrix
Eigen::MatrixXd K_inter_matrix_;
//! Local laplacian matrix
Eigen::MatrixXd laplacian_matrix_;
//! Local correction matrix
Eigen::MatrixXd correction_matrix_;
These local matrices are by default has zero sizes, and only initialized when the initialise_element_matrix function is called by the solver. Each time set, the assembler job is to organize all the cell's local stiffness matrix to a global matrix and RHS vector and to apply constraints to the assembled systems through row-column modification.
b. The linear solver solves the given assembled coefficient matrix and corresponding vectors, and it is independent of dimension. The solver_type should be specified in the input .json.
The currecnt eigen solver for the matrix equations may not be efficient especially for 3D cases.
Rationale and Alternatives
After the merge of the Semi-Implicit two-phase solver, we will extend it into the two-layer Semi-Implicit two-phase solver.
Prior Art
Markert B, Heider Y, Ehlers W. Comparison of monolithic and splitting solution schemes for dynamic porous media problems[J]. International journal for numerical methods in engineering, 2010, 82(11): 1341-1383.
The text was updated successfully, but these errors were encountered:
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Summary
This RFC is to propose the Semi-Implicit two-phase solver in branch
solver/two-phase-semiimplicit
. The solver utilized semi-implicit Chorin's projection scheme which is mainly to be used for modeling hydraulic-coupled problem in saturated soil with incompressible fluids. This work will be carried out after both thetwo-phase-explicit
andnavier-stokes
are merged into thedevelop
branch.Motivation
Use the Semi-Implicit two-phase solver can get a much more stable results for hydraulic-coupled problem. The time step will be free from the limitation of fluid part and almost the same with single phase MPM, then it will increase the computation efficiency. The permeability can also be defined in a wider range than the explicit solver.
Design Detail
The following classes and functionality were implemented:
MPMSemiImplicitTwoPhase
solver classTwoPhaseParticle
solver/navier-stokes
including three parts: 1) Solving the intermediate velocity; 2) Solving the pore pressure (Poisson equation); 3) Correct the velocitya. The assembler class is made to assemble the global system of equations. First, all nodes will be assigned an
active_id
to specify the index of each node in the global systems of equations; this id is changing every time step as the particles move over the background grids. Then, when the explicit step is completed, a Intermediate (Momentum equations for mixture and fluid) and laplacian matrix are constructed in all cells. We store this local matrix with size of (nnodes x nnodes) as Eigen matrices inCell
along with the correction_matrix as:These local matrices are by default has zero sizes, and only initialized when the
initialise_element_matrix
function is called by the solver. Each time set, the assembler job is to organize all the cell's local stiffness matrix to a global matrix and RHS vector and to apply constraints to the assembled systems through row-column modification.b. The linear solver solves the given assembled coefficient matrix and corresponding vectors, and it is independent of dimension. The
solver_type
should be specified in the input .json.Drawbacks
The currecnt eigen solver for the matrix equations may not be efficient especially for 3D cases.
Rationale and Alternatives
After the merge of the Semi-Implicit two-phase solver, we will extend it into the two-layer Semi-Implicit two-phase solver.
Prior Art
Markert B, Heider Y, Ehlers W. Comparison of monolithic and splitting solution schemes for dynamic porous media problems[J]. International journal for numerical methods in engineering, 2010, 82(11): 1341-1383.
The text was updated successfully, but these errors were encountered: