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 ![]()
Feel free to ask if you have more questions or run into issues with your code.
Abderrahman OMRI