Open tianchiTJ opened 3 years ago
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.