UG4 / app_poroelasticity

0 stars 0 forks source link

Consistent initial values #1

Open anaegel opened 6 hours ago

anaegel commented 6 hours ago

The following lines (biot_driver.lua) do not compute consistent initial values:

if (( ARGS.LimexNStages > 0)) then local dt0 = charTime*1e-50 print("Computing consistent initial value w/ dt0="..dt0)
util.SolveNonlinearTimeProblem(u, domainDisc0, nlsolver, myStepCallback0, "PoroElasticityInitial", "ImplEuler", 1, startTime, dt0, dt0, dt0, dtRed); end

as this generates the following system:

$$A_{uu} u1 + A{uß} p1 = 0$$ $$A{pu} u1 = A{pu} u_0 $$

Hence the solution $u_1$ satisfies div($u_1$) = div ($u_0$), but not $p_1$ = $p_0$.

anaegel commented 6 hours ago

Idea: The desired system should be of the following form:

$$A_{uu} u1 + A{uß} p1 = 0$$ $$M{pp} p1 = M{pp} p_0 $$

where $M_{pp}$ is an arbitrary (easily invertible) operator.

Solution 1:

Drawback in both cases:

Solution 2: