Documentation
> > Validation Case: Circular Plate with a Localized Distributed Load

# Problem Statement

This mechanical simulation is part of a series of validation cases performed using OnScale Solve. A thin circular plate is subject to a distributed load at its center. Numerical analysis results for the displacement due to the prescribed geometry and load are compared against hand calculations of the analytical solution in Roark’s Formulas for Stress and Strain .

# Geometry

The geometry for this case was composed of a circular disk with a radius of a and a thickness of t. Tbl. 1 shows the value of the dimensions of the geometry which can be downloaded here.

Table 1: Key parameters of disk.
Plate ParameterSymbolDimension [\text{mm}]
Plate Thicknesst1.5

# Boundary Conditions

The circumferential edge of the disk was fixed against both rotation and translation. A pressure q of 10 \text{kPa} was applied over a region of radius r_0 about the center of the disk. Fig. 2 illustrates the applied boundary conditions and loads.

The force load W applied was calculated from W = q \cdot \pi \cdot r_0^2

## Material Properties

The disk was made to consist of uniform structural steel material whose relevant properties are below.

PropertySymbolValue
Young’s ModulusE200 \text{GPa}
Poisson’s Ratio\nu0.29

# Mesh

OnScale Solve automatically generated a 3D second-order straight-edge tetrahedral mesh. For this study, several levels of mesh refinement were used having the properties in Tbl. 2 along with further refinements using OnScale’s refinement process.

Table 2: Mesh data.
Mesh DensityNumber of CellsNumber of VerticesDegrees of Freedom
very coarse21,8617,760135,099
coarse35,15812,161214,434
medium55,86619,064338,733
fine102,03334,256613,530
very fine254,27079,4521,464,516

# Results

The vertical displacement \delta(r) of the disk given by \delta(r) = \frac{-W}{16 \pi D} \left[a^2 - r^2 \left(1 + 2\ln\left(\frac{a}{r}\right)\right) \right]

where r is the radial distance from the centre of the disk, a is the radius of the disk, W is the force load and D the flexural rigidity which is given by the expression D = \frac{E \cdot t^3}{12\cdot(1-\nu^2)}

The displacement equation was evaluated from the solution for the problem of an edge clamped circular disk with a uniformly distributed load over a very small central circular area of radius r_0 . As such, the expression for vertical displacement was an approximation which became a more accurate description as the radius r_0 decreased. This equation for displacement simplifies to the following expression at the centre of the disk where displacement is greatest. \delta_\text{max} = \frac{-W \cdot a^2}{16 \cdot \pi \cdot D}

These expressions gave the maximum displacement at the centre of the disk as being -22.898 \mu\text{m} while 10 mm from the centre of the disk the vertical displacement was -22.245 \mu\text{m} and at 75 mm from the centre of the disk it was -9.238 \mu\text{m}.

Tbl. 3, tbl. 4 and tbl. 5 compares the values obtained using the analytical formula and those obtained from finite element analysis performed with OnScale Solve for the centre of the disk and at a radial distance of 10 mm from the centre of the disk for different mesh densities.

Table 3: Comparison of analytical solution and FEA result for displacement at centre of disk.
Mesh DensityDegrees of FreedomNumerical Result [\mu\text{m}]Difference [\mu\text{m}]Difference [%]
very coarse135,099-22.4090.4892.1
coarse214,434-22.4400.4582.0
medium338,733-22.4450.4532.0
fine613,530-22.4550.04431.9
very fine1,464,516-22.4580.4401.9
Table 4: Comparison of analytical solution and FEA result for displacement 10 mm from centre of disk.
Mesh DensityDegrees of FreedomNumerical Result [\mu\text{m}]Difference [\mu\text{m}]Difference [%]
very coarse135,099-21.8860.3591.6
coarse214,434-21.9160.3291.5
medium338,733-21.9200.3251.5
fine613,530-21.9300.3151.4
very fine1,464,516-21.9320.3131.4
Table 5: Comparison of analytical solution and FEA result for displacement 75 mm from centre of disk.
Mesh DensityDegrees of FreedomNumerical Result [\mu\text{m}]Difference [\mu\text{m}]Difference [%]
very coarse135,099-9.1520.0860.9
coarse214,434-9.1590.0790.9
medium338,733-9.1570.0810.9
fine613,530-9.1620.0760.8
very fine1,464,516-9.1630.0750.8

# Simulation Definition

The complete simulation definition is given below. The metadata tags for parts and faces correspond to the version of the CAD file that was imported from OnShape.


"""
Auto-generated simulation code.
"""
 import onscale as on
with on.Simulation('Simulation', 'Generated in SOLVE', version = '0.8.8') as sim:
# General simulation settings
on.settings.EnabledPhysics(["mechanical"])
coord = on.GlobalCoordinates()
on.settings.Mesher(use_feature_detection=True, mesh_index=0, use_regular_mesh_for_tube_model=False)
# Define geometry
geometry = on.CadFile('Assembly_1.x_t', unit="m")
point = on.Point(0, 0, 0)
point_2 = on.Point(0, 0, 0.0015)
# Define meshing
on.meshes.MeshFile('678746fae5ec7d7243fd78fa8d263a8d_mesh_volume.msh')
# Define material database and materials
materials = on.CloudMaterials('onscale')
structural_steel = materials['Structural steel']
structural_steel.alias = 'Custom Structural steel 1'
structural_steel >> geometry.parts.search('MkkDc5M7JEIhYlBkf', field='partIDTag')
structural_steel >> geometry.parts.search('MlW33Ax8mTQcx7rNd', field='partIDTag')
structural_steel.set('density', 7750.0)
structural_steel.set('poissons_ratio', 0.29)
# Define and apply loads
restraint = on.loads.Restraint(x=True, y=True, z=True, alias='Restraint 1')
restraint >> geometry.parts.search('MkkDc5M7JEIhYlBkf', field='partIDTag').faces.search('JHC', field='faceIDTag')
pressure = on.loads.Pressure(1000000, alias='Pressure 1')
pressure >> geometry.parts.search('MlW33Ax8mTQcx7rNd', field='partIDTag').faces.search('JHK', field='faceIDTag')
# Define output variables
field_sensor = on.sensors.FieldSensor(data=["Displacement", "VonMises", "Stress", "Strain", "PrincipalStress", "PrincipalStrain", "StrainEnergyDensity", "EigenVector", "PlasticStrain", "EquivalentPlasticStrain"], alias='Global Sensor')
field_sensor >> geometry
probe_sensor = on.sensors.ProbeSensor(data=["Displacement", "Stress", "Strain", "VonMises", "Temperature", "Pressure", "Velocity", "AcousticPressure"], alias='Sensor 1')
probe_sensor >> point
probe_sensor_2 = on.sensors.ProbeSensor(data=["Displacement", "Stress", "Strain", "VonMises", "Temperature", "Pressure", "Velocity", "AcousticPressure"], alias='Sensor 2')
probe_sensor_2 >> point_2
reaction_sensor = on.sensors.ReactionSensor(alias='Reaction_Restraint 1')
reaction_sensor >> restraint
# For OnScale System use only
geometry.set('onshape_workspace_id', "cc9cbeccfd96fde352ca8f6d")
geometry.set('onshape_doc_id', "56fe84938c96d582a170bb5d")
geometry.set('onshape_doc_microversion', "c957542fe93a5ebde02a1034")
geometry.set('onshape_assembly_id',"b5779ddef95fef72e8b2a14b")
geometry.set('onshape_assembly_microversion', "379b7da1bc556b91d2f0e332")


geometry.set('onshape_assembly_microversion', "379b7da1bc556b91d2f0e332")


W. Young, R. Budynas, and A. Sadegh, “Roark’s formulas for stress and strain. 8 edn.” McGraw-Hill Professional, pp. 514–515, 2011.