PWIPP critical timestep

Looking for some help with the WIPP-Drucker constitutive model, please…

The manual defines that the maximum creep timestep should be set according to Eq. 3, where sigma^{bar} is the von Mises stress invariant. I have attempted to calculate this for my model by adapting the provided FISH function for zones rather than structural elements, and then calculating the maximum creep timestep.

I have then enabled automatic adjustment of the timestep and based on examples, set the minimum creep timestep to be three to five orders of magnitude smaller than the calculated max. creep timestep.

However, the model is immediately automatically adjusting to the minimum creep timestep and does not increase as the simulation proceeds.

  1. Is the below FISH function correct for calculating the max. von Mises stress invariant in the model?
  2. Is the above logic correct for setting the min. creep timestep?
> fish define mises
>     local max = 0.0
>     loop foreach local zone zone.list
>         if zone.pos.z(zone) < 0 then
>             local j2  = tensor.j2(zone.stress(zone))
>             local sr_vmstr  = math.sqrt(3.0*j2)
>             max = math.max(max,sr_vmstr)
>         endif
>     endloop
>     mises = max
> end
> [mises]

Some comments:
1: If there is pore pressure, you need to use effective stress zone.stress.effetive.
2: The allowable time step is estimated zone-by-zone and takes the minimum one through all zones.
3: The time step also depends on stiffness and zone size.
4: On time-step not updating: it depends on how you control the time steps. Could you please post these commands?

Hi Zhao,

Thanks for the quick response.

  1. No pore pressure, so hopefully von Mises calc. is correct.
  2. Please see below extracts on setting the time steps. I can email over the .dat file if easier?
fish define creep_param
    cr_max = ((math.exp(Q/(R*Temp)))/(G*D*(mises^(n-1))))
    cr_min = math.min(1e-5, cr_max * 1e-3)

;creep initialization
model creep timestep minimum [cr_min]
model creep timestep maximum [cr_max]
model creep timestep automatic on

model history timestep
model history creep time-total

model solve time [interval*crt0]

Probably the “automatic on” should be the first:

;creep initialization
model creep timestep automatic on
model creep timestep starting [cr_min]
model creep timestep minimum [cr_min]
model creep timestep maximum [cr_max]

1 Like

Simple fix, this does the trick, thanks!

I think the problem was related to the missing line with the starting timestep. It may be that the default initial timestep (if the starting value is not declared) is too high for your model to keep it in quasi-static equilibrium. The consequence is a reduction of the timestep until when the ratio becomes smaller than the upper threshold. You thus have the dt reducing, eventually down to the minimum timestep while waiting for the ratio to reduce.

1 Like