Assigning Improved Soil Properties Below Foundation Level with Plastic-Hardening Model

I am working on a 3D FLAC3D model where I have assigned the Plastic-Hardening material model to a zone. After performing an excavation, I am trying to assign improved soil properties under the foundation. While I can successfully assign properties using the Mohr-Coulomb model, I encounter various errors every time I attempt to do the same with the Plastic-Hardening model. Despite my efforts, I am unable to achieve reasonable results.

Could anyone advise on the best approach for assigning improved soil properties under a foundation in a 3D model using the Plastic-Hardening material model? Any insights or suggestions to overcome the errors and achieve realistic modeling outcomes would be greatly appreciated. I am already using initialization of stresses.

Thank you in advance for your assistance.

fish define PHSoilMaterialModel
command
model range create ‘PH’ position-z -300 0 ;position-x @xit @xft position-y @yit @yft
model range create ‘PHCL0’ position-z -3.0,0.0 ;position-x @xit @xft position-y @yit @yft
model range create ‘PHCL1’ position-z -7.0,-3.0 ;position-x @xit @xft position-y @yit @yft
model range create ‘PHCL2’ position-z -24.0,-7.0 ;position-x @xit @xft position-y @yit @yft
model range create ‘PHCL3’ position-z -74.0,-24.0 ;position-x @xit @xft position-y @yit @yft
model range create ‘PHCL4’ position-z -128.0,-74.0 ;position-x @xit @xft position-y @yit @yft
model range create ‘PHCL5’ position-z -178.0,-128.0 ;position-x @xit @xft position-y @yit @yft
model range create ‘PHCL6’ position-z -228.0,-178 ;position-x @xit @xft position-y @yit @yft
model range create ‘PHCL7’ position-z -268.0,-228 ;position-x @xit @xft position-y @yit @yft
model range create ‘PHCL8’ position-z -300.0,-268 ;position-x @xit @xft position-y @yit @yft
model range create ‘PHJG’ position-z -320.0,-300 ;position-x @xit @xft position-y @yit @yft

	zone cmodel assign plastic-hardening range named-range 'PH'

zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density 2.000E+03 friction 25 dilation 0.0 cohesion 1.000E+03 stiffness-50-reference 1.109E+07 stiffness-ur-reference 3.328E+07 flag-smallstrain on strain-70 0.00025 stiffness-0-reference 9.984E+07 exponent 0.5 failure-ratio 0.9 coefficient-normally-consolidation 0.581 range named-range ‘PHCL0’
zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density 1.800E+03 friction 25 dilation 0.0 cohesion 2.000E+03 stiffness-50-reference 1.560E+07 stiffness-ur-reference 4.680E+07 flag-smallstrain on strain-70 0.00025 stiffness-0-reference 1.404E+08 exponent 0.5 failure-ratio 0.9 coefficient-normally-consolidation 0.581 range named-range ‘PHCL1’
zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density 1.950E+03 friction 25 dilation 0.0 cohesion 2.000E+03 stiffness-50-reference 2.434E+07 stiffness-ur-reference 7.301E+07 flag-smallstrain on strain-70 0.00025 stiffness-0-reference 2.190E+08 exponent 0.5 failure-ratio 0.9 coefficient-normally-consolidation 0.581 range named-range ‘PHCL2’
zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density 2.000E+03 friction 30 dilation 0.0 cohesion 3.000E+03 stiffness-50-reference 4.437E+07 stiffness-ur-reference 1.331E+08 flag-smallstrain on strain-70 0.00025 stiffness-0-reference 3.994E+08 exponent 0.5 failure-ratio 0.9 coefficient-normally-consolidation 0.501 range named-range ‘PHCL3’
zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density 2.000E+03 friction 32 dilation 2.0 cohesion 3.000E+03 stiffness-50-reference 5.009E+07 stiffness-ur-reference 1.503E+08 flag-smallstrain on strain-70 0.00025 stiffness-0-reference 4.508E+08 exponent 0.5 failure-ratio 0.9 coefficient-normally-consolidation 0.471 range named-range ‘PHCL4’
zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density 2.000E+03 friction 32 dilation 2.0 cohesion 5.000E+03 stiffness-50-reference 5.616E+07 stiffness-ur-reference 1.685E+08 flag-smallstrain on strain-70 0.00025 stiffness-0-reference 5.054E+08 exponent 0.9 failure-ratio 0.9 coefficient-normally-consolidation 0.471 range named-range ‘PHCL5’
zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density 2.000E+03 friction 32 dilation 2.0 cohesion 1.000E+04 stiffness-50-reference 6.257E+07 stiffness-ur-reference 1.877E+08 flag-smallstrain on strain-70 0.00025 stiffness-0-reference 5.632E+08 exponent 0.9 failure-ratio 0.9 coefficient-normally-consolidation 0.471 range named-range ‘PHCL6’
zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density 2.000E+03 friction 32 dilation 2.0 cohesion 1.500E+04 stiffness-50-reference 6.933E+07 stiffness-ur-reference 2.080E+08 flag-smallstrain on strain-70 0.00025 stiffness-0-reference 6.240E+08 exponent 0.9 failure-ratio 0.9 coefficient-normally-consolidation 0.471 range named-range ‘PHCL7’
zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density 2.000E+03 friction 32 dilation 2.0 cohesion 2.000E+04 stiffness-50-reference 8.389E+07 stiffness-ur-reference 2.517E+08 flag-smallstrain on strain-70 0.00025 stiffness-0-reference 7.550E+08 exponent 0.9 failure-ratio 0.9 coefficient-normally-consolidation 0.471 range named-range ‘PHCL8’
zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density 1.900E+03 friction 35 dilation 5.0 cohesion 1.500E+04 stiffness-50-reference 5.819E+08 stiffness-ur-reference 1.746E+09 flag-smallstrain on strain-70 0.00025 stiffness-oedometer-reference 5.819E+08 stiffness-0-reference 5.237E+09 exponent 0.9 failure-ratio 0.9 coefficient-normally-consolidation 0.431 range named-range ‘PHJG’

end_command
end
@PHSoilMaterialModel

After attaching this parameters.

I assign the parameters below:

                    zone group @GrpNameimp range polygon vertices @xt1 @yt1 @zmt @xt2 @yt2 @zmt @xt3 @yt3 @zmt @xt4 @yt4 @zmt position-z @zmat @zimpdepth
                    zone property pressure-ref 1.000E+05 over-consolidation-ratio 1.0 density  1.900E+03 friction  35 dilation  5.0  cohesion  1.500E+04 ... 
                    stiffness-50-reference  5.819E+08 stiffness-ur-reference  1.746E+09 flag-smallstrain on strain-70  0.003 stiffness-oedometer-reference 5.819E+08 ...
                    stiffness-0-reference 5.237E+09 exponent 0.55 failure-ratio 0.9  coefficient-normally-consolidation 0.431 range group @GrpNameimp

I turned off the ‘flag-smallstrain’ option, and now it seems to be working. The problem was related to the small-strain option and thus small-strain parameters.

I am trying to perform basic improvement analyses with version 9.0.164. Using the Mohr-Coulomb model, the displacement observed without any improvement is halved when an improvement is applied. The results with the Plastic-Hardening model without improvement are comparable to those with Mohr-Coulomb. However, in the Plastic-Hardening model, when I change properties using the ‘zone property’ command with group assignment, the displacement increases fourfold compared to the unimproved situation! Below is the FISH operator I’ve used, and the results remained unchanged regardless of whether I use this operator or not. Does anyone have any insights on this?

fish operator iniprin(z, modelname)
local pp = zone.pp(z)
if zone.model(z) = modelname then
zone.prop(z,‘stress-1-effective’) = zone.stress.min(z) + pp
zone.prop(z,‘stress-2-effective’) = zone.stress.int(z) + pp
zone.prop(z,‘stress-3-effective’) = zone.stress.max(z) + pp
endif
end

The datafile is not available to us. We just guess what occurred.
The first time PH model is assigned, an initialization (some internal calculations) will be run. However, this initialization is run only once. If you merely update parameters thereafter, this initialization will not run the second time. I would suggest you:
(1) Change those improved zones to another model first. This will remove the first initialization.
(2) Change back to PH model and assign improved properties. This will run the initialization based on the improved properties/initial stress.

Thank you, Cheng, it worked. I just added these two lines before changing parameters (the Plastic-Hardening model was already assigned):

zone cmodel assign elastic range group @GrpNameimp
zone cmodel assign plastic-hardening range group @GrpNameimp

After that, I tried without initialization and it resulted in a displacement of 6 cm. However, when I initialize it with [iniprin(::zone.list, "plastic-hardening")], it results in a displacement of 9.5 cm. What could be the cause of this difference?

Please refer to Eq. (8) in the doc of the Plastic Hardening model. There \gamma^p is an internal variable - which stands for some meaning of mobilized friction angle. If using the initialization [iniprin(::zone.list, “plastic-hardening”)], this variable will be initialized to a non-zero value based on the current/initial stresses. If not, this variable will be numerically zero.

If this variable has already been initialized or evolved (non-zero value), the calculation of initial \gamma^p will be skipped.

1 Like