Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F96358536
body_boundary_conditions.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Dec 25, 21:08
Size
2 KB
Mime Type
text/x-python
Expires
Fri, Dec 27, 21:08 (2 d)
Engine
blob
Format
Raw Data
Handle
23153874
Attached To
rAKA akantu
body_boundary_conditions.py
View Options
#!/usr/bin/env python3
""" plate.py: Plate with hole linear elastic example"""
__author__
=
"Guillaume Anciaux"
__credits__
=
[
"Guillaume Anciaux <guillaume.anciaux@epfl.ch>"
,
]
__copyright__
=
"Copyright (©) 2016-2021 EPFL (Ecole Polytechnique Fédérale"
\
" de Lausanne) Laboratory (LSMS - Laboratoire de Simulation"
\
" en Mécanique des Solides)"
__license__
=
"LGPLv3"
try
:
from
mpi4py
import
MPI
comm
=
MPI
.
COMM_WORLD
prank
=
comm
.
Get_rank
()
except
ImportError
:
prank
=
0
import
akantu
as
aka
import
numpy
as
np
# -----------------------------------------------------------------------------
def
solve
(
material_file
,
mesh_file
,
body_stress
):
aka
.
parseInput
(
material_file
)
spatial_dimension
=
2
# -------------------------------------------------------------------------
# Initialization
# -------------------------------------------------------------------------
mesh
=
aka
.
Mesh
(
spatial_dimension
)
if
prank
==
0
:
mesh
.
read
(
mesh_file
)
mesh
.
distribute
()
model
=
aka
.
SolidMechanicsModel
(
mesh
)
model
.
initFull
(
_analysis_method
=
aka
.
_static
)
model
.
setBaseName
(
"square"
)
model
.
addDumpFieldVector
(
"displacement"
)
model
.
addDumpFieldVector
(
"external_force"
)
model
.
addDumpField
(
"strain"
)
model
.
addDumpField
(
"stress"
)
model
.
addDumpField
(
"blocked_dofs"
)
# -------------------------------------------------------------------------
# Boundary conditions
# -------------------------------------------------------------------------
model
.
applyBC
(
aka
.
FixedValue
(
0.0
,
aka
.
_x
),
"Fixed_y"
)
model
.
applyBC
(
aka
.
FixedValue
(
0.0
,
aka
.
_y
),
"Fixed_y"
)
gravity
=
np
.
eye
(
2
)
*
body_stress
model
.
applyBC
(
aka
.
BodyStressFunctor
(
gravity
),
"steel"
)
solver
=
model
.
getNonLinearSolver
()
solver
.
set
(
"max_iterations"
,
2
)
solver
.
set
(
"threshold"
,
1e-10
)
solver
.
set
(
"convergence_type"
,
aka
.
SolveConvergenceCriteria
.
solution
)
model
.
solveStep
()
model
.
dump
()
# -----------------------------------------------------------------------------
# main
# -----------------------------------------------------------------------------
def
main
():
mesh_file
=
'square.msh'
material_file
=
'material.dat'
body_stress
=
1.
solve
(
material_file
,
mesh_file
,
body_stress
)
# -----------------------------------------------------------------------------
if
__name__
==
"__main__"
:
main
()
Event Timeline
Log In to Comment