Compression only springs

,

Hello,
I have defined some springs using the SOFiMSHA module and then made them moving springs. How can I make them work only under compression?
Thanks.

Here is an example code which you can adjust:

PROG AQUA
HEAD
UNIT 5
NORM ‘DIN’ ‘en199x-200x’ COUN 49 UNIT 5

$ --------------------------
$ SMAT definition
$ --------------------------
SMAT 1 LTYP STD MTYP PLAS ALPH 0
$ Reaction type ---------
$ Curve (P-level)
SFLA U -100[mm] F -100[kN/m²] S POL TYPE P
SFLA U 0[mm] F 0[kN/m²] S POL
SFLA U 0[mm] F 0[kN/m²] S POL
SFLA U 0.100000[mm] F 0[kN/m²] S POL
END

Hi,

You need to use a nonlinear analysis.

If you are using the ASE module, you must add the following at the top of the module:

SYST PROB NONL

Otherwise, if you’re using the CSM module, add:

CTRL OPT PROB VAL NONL

Logically, if your springs follow a behavior law with force limitations, you should define them using the AQUA module with the SMAT and SFLA records.

Here is an example of how to define a material behavior law:

LOOP#i  valueskfcourtX
  let#k #i+101
  if #valuespalierr1X(#i) <> 0
    SMAT #k LTYP  #LTYP MTYP #MTYP ALPH 0 TITL "Soil-structure interaction law (long-term) No. #k"
    SFLA U -(1000/(#valueskflongX(#i)/#valuespalierr1X(#i))+25)[mm] F -#valuespalierr1X(#i)[kN] S POL TYPE #type
    SFLA U -(1000/(#valueskflongX(#i)/#valuespalierr1X(#i)))[mm] F -#valuespalierr1X(#i)[kN] S POL
    SFLA U 0[mm] F 0[kN] S POL $ TYPE #type
    SFLA U (1000/(#valueskflongX(#i)/#valuespalierr1X(#i)))[mm] F #valuespalierr1X(#i)[kN] S POL
    SFLA U (1000/(#valueskflongX(#i)/#valuespalierr1X(#i))+25)[mm] F #valuespalierr1X(#i)[kN] S POL
  endif
ENDLOOP

Good luck :slightly_smiling_face:
Feel free to ask if you have more questions or run into issues with your code.

Abderrahman OMRI

1 Like