J2Plasticity material

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
alfonsogdr
Posts: 9
Joined: Sun Jun 21, 2020 9:21 am

J2Plasticity material

Post by alfonsogdr »

Good afternoon to all the OpenSees Community.

I have a doubt about J2Plasticity nDMaterial. I have running simulations using this material with shell elements and I have problems when I reach plastic behaviour. I have not this problems with others nDMaterial like Drucker-Prager. I have seen the source code of J2Plasticity material and the equation of Saturation Isotropic Hardening with linear term is: q(xi) = simga_infty + (sigma_0 - sigma_infty)*exp(-delta*xi) + H*xi while in OpenSees documentation is q(xi) = simga_0 + (sigma_0 - sigma_infty)*exp(-delta*xi) + H*xi. I don't know if the problem has to do with this and there is an error in the source code of this material. Any suggestions?

Thank you very much in advance.
mhscott
Posts: 880
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: J2Plasticity material

Post by mhscott »

Please explain the problem in more detail and provide inputs/outputs.
alfonsogdr
Posts: 9
Joined: Sun Jun 21, 2020 9:21 am

Re: J2Plasticity material

Post by alfonsogdr »

Good morning. The model is a rectangular simply suported plate in its four edges with a central load applied in positive z direction. I have done the same model with ANSYS using a von Mises yield criterium because I wanted to compare it with J2Plasticity model. I want a Bi-Linear material law so I have erased exponential hardening. Linear hardening parameter is E/1000. I have used LoadControl integrator despite lack of convergence at first because I wanted to compare the displacement of central node with ANSYS model. When I run the model with Drucker-Prager yield criterium I obtain similar results in Linear range and the begining of plastic range it is produced at the same load, the behaviour in plastic range is a little bit different but I think this is due to the differences between drucker-prager and von mises yield criteria.

Image comparing results: https://ibb.co/X7KxFbn

When I run the model with J2Plasticity material model I get results that are not consistent. It is like it doesnt reach plastic range and behaves like a linear material model. I don't know if this could happen due to the discrepancies between the equations in OpenSees documentation
(q(xi) = simga_0 + (sigma_0 - sigma_infty)*exp(-delta*xi) + H*xi) and the one of the source code of J2Plasticity nDMaterial (q(xi) = simga_infty + (sigma_0 - sigma_infty)*exp(-delta*xi) + H*xi).

Thank you very much in advance. Kind Regards.


# ------------------------------
# Start of model generation
# ------------------------------

# Remove existing model
wipe

# Create ModelBuilder (with three-dimensions and 6 DOF/node)
model BasicBuilder -ndm 3 -ndf 6

# ------------
# ----Units&Constants.tcl---------------------------------------------------------
# define basic units

# Define parameters

# Plate dimensions (240mm; 200mm; 10mm)
set width 0.2
set h 0.24
set th 0.01

# Element size
set minmesh 0.01

# Nodes and Elements plate
set nx [expr {int([expr {round($width/$minmesh)}])}]
set ny [expr {int([expr {round($h/$minmesh)}])}]


# Steel S275: Young Modulus E=210000 MPa; Linear hardening H=E/1000; Shear modulus G=81000 MPa; Bulk modulus K; Yield strength fy=275 MPa; Ultimate strength fu=430 MPa
set E 210000000000
set H [expr $E/1000]
set G 81000000000
set v 0.3
set K [expr $E*$G/(3*(3*$G-$E))]
set fy 275000000
set fu 430000000

# Element ShellMITC4
set Plate ShellMITC4

# ------------
# Create the material
# ------------

# J2plasticity Bi-linear material

#nDMaterial J2Plasticity 1 $K $G $fy $fu 0 $H

# Drucker-Prager Bi-linear material

nDMaterial DruckerPrager 1 $K $G $fy 0.0 0.0 0.0 0.0 0.0 0.0 $H 1.0 7850

nDMaterial PlateFiber 2 1


# Plate section

section PlateFiber 1 2 $th
set platesection "1"

# ------------
# Define elements
# ---------------

block2D $nx $ny 1 1 $Plate $platesection {
1 0 0 0
2 0.2 0 0
3 0.2 0.240 0
4 0 0.240 0
}

# ------------
# Define Boundary conditions
# ---------------

# Four edges simply supported Uz=0
for {set i 1} {$i <= [expr ($nx-1)]} {incr i 1} {
fix [expr int(($nx+1)*($ny+1)-$i)] 0 0 1 0 0 0
fix [expr int(($nx+1)-$i)] 0 0 1 0 0 0
}

for {set i 1} {$i <= [expr ($ny-1)]} {incr i 1} {
fix [expr int(($nx+1)*(($ny-$i)+1)-$nx)] 0 0 1 0 0 0
fix [expr int(($nx+1)*(($ny-$i)+1))] 0 0 1 0 0 0
}

# Rigid body conditions four corners supported (Ux=Uy=Uz=0)
fix 1 1 1 1 0 0 0
fix [expr $nx+1] 1 1 1 0 0 0
fix [expr ($nx+1)*($ny+1)] 1 1 1 0 0 0
fix [expr ($nx+1)*($ny+1)-$nx] 1 1 1 0 0 0


# ------------
# Define loads
# ------------

timeSeries Linear 1

# Applied a punctual central load in positive Z direction
pattern Plain 1 1 {
load [expr (($nx+1)*($ny+1)+1)/2] 0 0 40000 0 0 0
}

# ------------------------------
# Start of recorder generation
# ------------------------------

# Displacement central node
recorder Node -file dz.out -time -node [expr (($nx+1)*($ny+1)+1)/2] -dof 3 disp

# ------------------------------
# Analysis
# ------------------------------

constraints Plain

numberer RCM

system BandGeneral

test EnergyIncr 1E-6 10 0

algorithm Newton

set s 1
integrator LoadControl $s
#integrator ArcLength $s 1.0
analysis Static
set num_analysis 1
set ok [analyze $num_analysis]

if {$ok == 0} {
puts "Analysis done at First iteration"
} else {
while {$ok != 0} {
reset
set s [expr $s*0.5]
set num_analysis [expr $num_analysis*2]
integrator LoadControl $s
# integrator ArcLength $s 1.0
analysis Static
set ok [analyze $num_analysis]
}
}

# ------------------------------
# Print
# ------------------------------

print node [expr (($nx+1)*($ny+1)+1)/2]
Post Reply