OpenSees Cloud
OpenSees AMI
NAFEMS Test P18.LE6
Benchmark Summary
| Item | Value |
|---|---|
| Category | Linear Elasticity |
| Structure | Skew Plate Normal Pressure |
| Analysis Type | Static Analysis |
| Quantity Verified | Principal Stress |
| Elements Evaluated |
ShellMITC4, ShellDKGQ
|
| OpenSees Version | 3.8.0.0 |
| Operating System | Ubuntu |
| Status | Verified |
Revision History
- September 4, 2026 – Initial version
Objective
This test assesses shell element performance in finding the principal stress at the center of a Skew Plate subjected to Normal Pressure on its surface.
Geometry and Mesh
The model is an n x n mesh of shell elements defined in three dimensions (3D). The plate is skewed in the X-Y plane. Each side is of unit length.

Boundary Conditions
- uX=uY=uZ= 0 along all edges
Material Properties
- Elastic modulus, E = 210e3 MPa
- Poisson ratio, ν = 0.3
Loading
A surface pressure of 0.7 kPa is applied in the negative Z direction on the upper surface of the plate.
Analytical Solution
The analytical solution for the maximum principal stress at the bottom surface at the center of the plate (point E) is 0.801 MPa, as shown in the NAFEMS P18 report for benchmark problem LE6.
OpenSees Elements Tested
The test compares the following shell element formulations to the analytical solution for principal stress.
ShellMITC4ShellDKGQ
Principal Stress
The principal stress on the bottom surface of point E is plotted for increasing mesh resolutions from 2 x 2 to 32 x 32.

As the mesh resolution increases, the principal stress obtained using the ShellMITC4 and ShellDKGQ elements converge from below and above, respectively, to the analytical solution.
Displacement
As a supplemental check (not shown in the NAFEMS report), the transverse displacement of point E is plotted for increasing mesh resolutions from 2 x 2 to 32 x 32.

As the mesh resolution increases, the displacement obtained using the ShellMITC4 and ShellDKGQ elements converge to a common value of approximately 0.015 mm.
OpenSees Script
import openseespy.opensees as ops
import opstool as opst
# Units = kN, m
L = 1 # side length, m
t = 0.01 # thickness, m
p = 0.7 # pressure, kPa
E = 210e6 # kPa
v = 0.3
c = 2 # mesh resolution
ops.wipe()
ops.model('basic','-ndm',3,'-ndf',6)
ops.node(1,0,0,0)
ops.node(2,L,0,0)
ops.node(3,L+0.5*L*3**.5,0.5*L,0)
ops.node(4, 0.5*L*3**.5,0.5*L,0)
ops.mesh('line',1,2,1,2,0,6,L/c)
ops.mesh('line',2,2,2,3,0,6,L/c)
ops.mesh('line',3,2,3,4,0,6,L/c)
ops.mesh('line',4,2,4,1,0,6,L/c)
ops.nDMaterial('ElasticIsotropic',1,E,v)
ops.section('PlateFiber',1,1,t)
ops.mesh('quad',5,4,1,2,3,4,0,6,L/c,'ShellMITC4',1) # Or 'ShellDKGQ'
for nd in ops.getNodeTags('-mesh',1,2,3,4):
ops.fix(nd,1,1,1,0,0,0)
ops.timeSeries('Constant',1)
ops.pattern('Plain',1,1)
# Using opstool for pressure load
opst.pre.transform_surface_uniform_load(ele_tags=ops.getEleTags('-mesh',5), p=-p)
ops.system('UmfPack')
ops.analysis('Static','-noWarnings')
ops.analyze(1)
Notes
- The
PlateFibersection uses Gauss-Lobatto integration through the shell thickness, ensuring a fiber is at the bottom (and top) surface - Pressure loads were applied using
opstool.pre.transform_surface_uniform_load. - Nodal stress projections were obtained using
opstool, the details of which are beyond the scope of this verification problem.
Verification Summary
Both shell elements considered (ShellMITC4 and ShellDKGQ) converge to the analytical solution for maximum principal stress. The elements also give a convergent solution for the transverse displacement at the center of the plate.