Cyclic Undrained DSS Tests with P2PSand Model
Note
To view this project in FLAC3D, use the menu command . The main data files used are shown at the end of this example. The remaining data files can be found in the project.
One-zone numerical tests of undrained cyclic direct simple shear (DSS) loading responses are performed. All these tests are starting from an initial effective vertical stress (\(\sigma^{\prime}_{v0}\)) along z-axis at 100 kPa (around 1 atm), \(K_0=0.5\), and zero initial static shear stresses. All parameters are with the default parameters except the initial relative densities are different. Pore-pressure in the zone is allowed for building-up. The out-of-plane (alone y-axis) strains are restricted. The degrees-of freedom at the zone top are attached so that all grid points at the top have the same displacements to satisfy the DSS conditions. The gridpoints at the zone top are velocity-controlled. Once the shear stress (\(\tau\)) amplitude reaches a certain value (\(CSR \times \sigma^{\prime}_{v0}\)), the velocities of gridpoints at the zone top will be reverted. In this example, the parameter study is performed by a Python-based master file.
The numerical results of undrained cyclic DSS loading responses with the relative density at \(D_r\) = 0.3, 0.5 and 0.7, are illustrated in Figure 1, 2 and 3, to represent relative loose, median dense and dense sands, respectively. In each of the figures, the top sub-figure is plotting \(\sigma^{\prime}_v/\sigma^{\prime}_{v0}\) versus \(\tau_{xz}/\sigma^{\prime}_{v0}\), the center sub-figure is plotting \(\sigma^{\prime}_v/\sigma^{\prime}_{v0}\) versus \(\gamma\), and the bottom sub-figure is plotting \(R_u\) versus \(\gamma\). All illustrated responses reach about \(\gamma = 3\%\) (S.A.) shear strain with the fitted CSR values at approximately 15 cycles. The shear stress - shear strain responses illustrate shear strain progresses even after the excess pore pressure ratio (\(R_u\)) reaches 99%.
For relatively loose sands as shown in Figure 1, the shear strain increases to a very small value at the first several cycles. After dilatancy surface has been hit, the shear strain dramatically increases to around 3% \(\sigma^{\prime}_v\) is close to 0, and \(R_u\) is close to 1, merely after a couple of extra cycles. For relative dense sands as shown in Figure 3, the shear strain increases approximately in each cycle, rather than just the last few cycles as seen in the relatively loose sands. The median dense sands (Figure 2) presents intermediate behaviors as expected.
The trend of the simulated results for sands from loose to dense state is consistent to the general observations: At the same other conditions, a denser sand have a higher CSR value. As the relative density is increasing, the deformation mode is transferring from liquefaction flow to cyclic mobility. Stress-strain loops for loose sands contain flat segments, a phenomenon term as “neutral phase”, where little or small shear stiffness develops during deformation; stress-strain loops for dense sands have no-zero sloping segments indicating significantly higher shear resistance.
The results by P2PSand model are compared with the empirical curves by Youd et al (2001) and Idriss and Bounlanger (2008) in Figure 4. The relation of \((N_1)_{60} = 46D_r^2\) is used.
Data File
CyclicUndrainedDirectSimpleShear.dat
model reset ; Parameters program call 'input' suppress ; Mesh zone create brick size (1,1,1) ; Mechanical model configure dynamic model large-strain off zone cmodel assign p2psand zone initialize stress xx [-Sv0*K0] yy [-Sv0*K0] zz [-Sv0] ;;; material properties zone property density [rho_d] pressure-reference [Patm] factor-cut 0.01 ;;; input equivalent relative-density-initial corresponding to field condition zone property relative-density-initial [dr0] ;;; or directly input (N1)60 in field condition ;zone property n-1-60 [46.0*dr0*dr0] ;;; initial conditions ;;; initial stresses should be input as properties when p2psand model ;;; is first assigned fish operator ini_stress(z, modelname) if zone.model(z) == modelname then zone.prop(z,'stress-initial') = zone.stress.effective(z) endif end [ini_stress(::zone.list, 'p2psand')] ;;; boundary conditions zone gridpoint fix velocity-y zone gridpoint fix velocity range position-z 0 zone attach gridpointid 4 to-gridpointid 8 snap off zone attach gridpointid 6 to-gridpointid 8 snap off zone attach gridpointid 7 to-gridpointid 8 snap off zone face apply stress-zz [-Sv0] range position-z 1.0 zone gridpoint fix velocity-x [rate] range position-z 1 zone dynamic damping rayleigh 0.002 1 ; fluid model configure fluid-flow zone fluid property porosity [poro] fluid-density [dw] zone fluid property fluid-modulus [Kw] zone fluid property pore-pressure-generation on ; history interval 25 model history name '1' dynamic time-total zone history name '2' displacement-x position (1,1,1) zone history name '3' stress quantity xz zoneid 1 zone history name '4' stress quantity zz zoneid 1 [global zptr1 = zone.find(1)] fish history name '5' [tensor.trace(zone.stress.effective(zptr1)) / p0] ; ; [global zf = gp.list(gp.pos(::gp.list)->z==1)] [global gp1 = gp.near(1,1,1)] fish operator cyclic(gp) if zone.stress(zptr1)->xz > csr*Sv0 then gp.vel(gp)->x = -rate else if zone.stress(zptr1)->xz < -csr*Sv0 then gp.vel(gp)->x = rate endif end ; model dynamic timestep fix 4.0e-5 model solve-dynamic time-total 2000 ... fish-halt [math.abs(gp.disp(gp1)->x) > ssv] ... fish-call -100 [cyclic(::zf)] history export '1' '2' '3' '4' '5' file [txtfile] truncate model save [savefile]
⇐ Shaking Table Test with Finn Model: Simulation of the Liquefaction of a Layer | Solving Dynamic Problems ⇒
Was this helpful? ... | Itasca Software © 2024, Itasca | Updated: Aug 13, 2024 |