Hello,

I am trying to write out the f0p residual kernel for poroelasticity in a manner that is usable for both quasi-static and dynamic formulations. As it stands, the QS formulation solves for three variables displacement, pressure, and volumetric strain (u, p, \epsilon_{v}), while the dynamic solves for (u, p, v), where v stands for velocity.

The f0p residual kernel is the one for time variation in fluid content, and as such contains a term that includes \frac{\partial \epsilon_{v}}{\partial t}. I would prefer to solve this by dividing the trace of the strain tensor by the timestep length (dt), but am unsure as how to access the value for dt within a kernel callback function, or even if it is possible.

Please advise,

Robert

Hi Robert,

Brad can give accurate details on this, but in the header of the kernels you have “s_t[]” and “a_t[]” which are time derivatives of the solution and auxiliary fields, respectively.

I guess that, if in the dynamic solve \epsilon_{v} (trace of the strain tensor) is an auxiliary field, then to obtain \frac{\partial \epsilon_{v}}{\partial t} one could call “a_t[i_strain]”, where i_strain is the index of the trace strain ?

Thanks,

Josimar

Why are you including the volumetric strain in the quasi-static solution but not the dynamic solution?

If the volumetric strain is a solution subfield, then its time derivative is available in s_t (time derivative of the solution), which is passed in as an argument for the LHS kernels.

If the volumetric strain is not a solution subfield, you can calculate its time derivative from the velocity, which is passed in as an argument via s_t for the LHS kernels.

The logic is that the dynamic case will be solved explicitly anyway, and as volumetric strain is included in QS for a reason that Matt is better apt to explain than I, it would just be more jacobians terms to keep track of to include it in dynamic.

Are you suggesting to just take the divergence of velocity rather than displacement?