WASP User's guide (C) 1994-2000, Petr Krysl
WASP stands for (W)ave propagation and vibration (A)nalysi(S) (P)ackage. WASP is copyright of Petr Krysl. The source code of this package is protected by the GNU General Public License.
The WASP system is being designed as a research tool for transient dynamic problems of solid mechanics. It is based on an object-oriented perception of the finite element method. The implementation language is ANSI C.
The element library includes tension-compression bars, 3D elastic beams, 2D membranes, bricks, quadratic and linear tetrahedra, element-free Galerkin superelements, and more.
WASP uses a loosely formatted ASCII file to describe the discrete model. The structure of the input file is slightly inconsistent. The reason can be traced to the evolution of the package, which initially sought efficiency because only the traditional finite element models were investigated. Then, when the package became oriented on rapidly evolving, and largely unexplored meshless methods (element-free Galerkin, in particular) the emphasis shifted to flexibility and ease of manual modification.
The input for WASP is specified by command line arguments and by an input file. The input file consists of a header (description and checksums line), and of the bulk data (blocks).
The default WASP driver, wd, prints the recognized command line options when either run without any arguments, or when run as wd -h or wd -help or wd -? . Note that when you want to find out about all the options supported by the current installation of wd, you need to run the program as indicated. The list below serves for orientation only.
Note that some of the options are available only when the program has been compiled with some feature selected. As an example, let us note the X Window System graphic monitor feature.
These are most of the command line options (# stands for any argument which is appropriate in the context; a number or a string. Note that the arguments must be separated from the options by a space.):
Option syntax | Description |
-report_opts | bool; prints options as they are being set |
-help | bool; print help on command line options |
-i arg | arg = input file |
-input arg | arg = input file |
-W arg | arg = history file name (default name identical with in_file_basename) |
-E arg | arg = error log name (default name identical with in_file_name.err) |
-L arg | arg = log name (default is `not given' = log to stderr) |
-integrator arg | arg = integrator (default 0=central difference algorithm; 1=implicit Newmark |
-integrator_detail arg | arg = for -integrator 0: 0=default, Warburton=1, Newmark=2; for -integrator 1: 0=default, same_u=1, same_v=2, same_a=3, zero_a=4 |
-n | bool; no output (default for PVM master) |
-o arg | arg = out_file (default file in_file_name.out) |
-X | bool; use X Window System graphical interface (default is don't) |
-x arg | arg = displacement scale for plotting (default is 1) |
-f arg | arg = force scale for plotting (default is 1) |
-elixir_cmds arg | arg = Elixir command file (no default file) |
-gather_frames | bool; gather frame images for movies (default is don't) |
-frame_format arg | arg = frame image format (default JPG) |
-frame_dt arg | arg = time between frames (default is the same as -O) |
-v | bool; verbose (produce log, default is don't) |
-T arg | arg = target time (default is 1.0) |
-O arg | arg = time between outputs (default is 0) |
-S arg | arg = time step (default is compute from element data) |
-R arg | arg = time step reduction factor (default is 1: no reduction) |
-e | bool; color encode internal forces (default is don't) |
-modr_options arg | arg = model reduction options [use | collect][method direct|snapshots][nmodes #][nm #][max_nm #][modenl #][dt #][up_to_t #][from_t #][cutoff_ev #] |
-newmarki_options arg | arg = options for the Newmark integrator [solver spetsc|smeschach|dmeschach][nz_per_row #][modnewton][report_iter][pass_on_max][max_iter #][conv_ratio #][recomp_keff_after #][gamma #][modr][adaptive_modr][nitadapt #] |
-! | bool; careless: overwrites history w/o warning (default is don't) |
-I | bool; GUI-interactive during outputs (default is not) |
-t | bool; track position of nodes by not erasing (default is don't) |
-N arg | arg = length of node triad leg (default is 0; triads not drawn) |
-d arg | arg = task type: dimension (default 3D=0, plane s/s=1) |
-P | bool; run a patch test (a single time step) (default is don't) |
-p arg | arg = post-processing file type (default 1=HEXVUE, 2=VE3D, 3=TECPLOT) |
-hexvue_format arg | arg = HEXVUE format (ascii, binary, default compressed) |
-h arg | arg = post-processing options (add 1=displacements (default), 2=stresses, 4=equiv.pl.strain, 8=von Mises stress, 16=material id) |
-H arg | arg = produce post-processing file at times in list arg |
-number_seq | bool; number post-processing files sequentially (default is mark by time) |
-+ arg | arg = optimize speed (default 0=no, >0=yes) |
-b arg | arg = history-buffer length |
-s arg | arg = stress output (default 0=Cauchy, 2=2nd PK) |
-q arg | arg = J-int domain q-function type (default 0=quadratic, 1=quartic, 2=linear) |
-J arg | arg = J-int evaluation (0=per cell weak-form Gauss pts, default 1=per cell Gauss pt interpolation) |
-K arg | arg = Compute SIF's from (default 0=interaction integrals, 1=J-integrals (works for KI only!)) |
-M arg | arg = Rayleigh mass-proportional damping coeff (default 0=no damping |
-m arg | arg = Rayleigh mass-prop. damping time function (default 0=no time dependency |
-mass_type arg | arg = mass type (default 1=consistent, 0=diagonal) |
-serial | bool; run program as serial (for MPI parallel version only) |
When the default WASP driver program, wd, is run it the expanded command line into a command log in the working directory. The command log is named WD_CMD_LINE.LOG.
Any line in the data file which begins by '!' (exclamation point) is considered to be a comment-only line. Also, anything that follows an exclamation point on any line is ignored.
The first data line in the file contains a description of what is in the file (what kind of problem is being described).
The second line contains totals of nodes, elements, materials, loads, and time functions. These numbers are ignored now, the domain manages any number of objects specified in the input file.
Example:
The first two data lines in an input file could look like this (note, the data lines are interspersed with comment lines):
! Input file for WASP; generated by hexmesh; (C) 1996 Petr Krysl ! Description: Raju-Newman edge crack. 7x5x7. ! #nodes #elements #materials #loads #time_funcs 0 1 1 0 1
or, because the checksums are ignored, we could also say
! Input file for WASP; generated by hexmesh; (C) 1996 Petr Krysl ! Description: Raju-Newman edge crack. 7x5x7. ! #nodes #elements #materials #loads #time_funcs 0 0 0 0 0
Then can follow so-called blocks. A block is anything which the program can read, ie., anything it was "taught" to recognize.
A block starts by a tag. Tag is a letter in the first column on the line, and it can be one of the letters
Note that a tag can be generated by any word as long as it begins on the correct letter.
Each block must be concluded by '&' as the first non-blank in the line.
Example:
The `initial conditions' block could be written like this
I ID 1 IV "-1000*y" "1000*x" "0" END &
or like this
Initial conditions ID 1 IV "-1000*y" "1000*x" "0" END &
or like this
INITIAL_CONDITIONS ID 1 IV "-1000*y" "1000*x" "0" END &
Of course, using just any word starting on `I' might not be the best idea; try to use the words shown above since these convey some semantics which can be helpful when reading the input file. Thus, it might be wise to avoid things like
IMPLICIT FUNCTION ID 1 IV "-1000*y" "1000*x" "0" END &
although it is a valid initial conditions block.
The option block enables the user to store one of the global options usually used on a command line in a data file. If the option is also given on the command line, the command-line specification takes precedence over that in the data file. Only some options can be specified in the Options block in a data file (such as R, S, T, H, h, f, x, M, and a few others).
Example:
As an example of an option block, let us consider the specification
Option R 0.1 h 15 W "hooke.1.5" &
The first line is the tag (the word "Options" must start in the first column). Then follows a line requesting that the time step as computed in the program be reduced to one tenth. The next line specifies how much data is to be stored for post-processing, and the last but one line of the block specifies a name under which the graphs should be stored in the history directory. The last line of the block is the end-of-block marker, '&' (again, this letter must appear in the first column).
This block specifies the initial conditions. As of November 1996 the only initial condition that can be specified is the initial translational velocity.
The block data consist of a single line, which should contain three symbolic expressions for the velocity in the x-, y-, and z-direction. Any expression in the variables x, y, z (coordinates of a point) is acceptable.
Example:
The following block specifies a rotation about the z-axis with an angular velocity of 1000 radians per second as the initial condition of the whole computational domain.
INITIAL_CONDITIONS ID 1 IV "-1000*y" "1000*x" "0" END &
This block specifies all the necessary data which define the properties of a finite element node in a three-dimensional space.
For each node, specify
Example:
The following block specified three nodes, the first two completely free, the last one is fully constrained.
NODES 1 220 20 0 1 1 1 2 200 20 0 1 1 1 3 200 0 0 0 0 0 &
This block defines nodal loads. The loads may be either forces or
moments.
Type 1: Nodal load at a single node.
Example:
The following block defines a force vector acting on node 132, in the X-axis direction, with an amplitude of -2000 units, with a time dependence given by time function #13.
LOAD
1
132 DX -2000
13
&
Type 3: Nodal load applied to all nodes within a rectangular box.
Force load
Example:
The following block defines that a force vector acts in the Z-axis direction on all nodes which are located in the box with the first corner at {0, 4, 0}, the second corner at {10, 4, 0.08}. The box is for the purpose of inclusion check inflated by 0.01 units, so that the actual box against which the inclusion is tested is given by {-0.01, 3.99, -0.01} and {10.01, 4.01, 0.09}. The force has amplitude of +230.0 units, with a time dependence given by time function #13.
LOAD
3
DZ +230.0 13
0 4 0 10 4 0.08 inflate 0.01
&
Body load
Example:
The following block defines that a body load by specifying accelerations. The only non-zero acceleration is along the negative Z-axis. The box is for the purpose of inclusion check inflated by 0.01 units, so that the actual box against which the inclusion is tested is given by {-0.01, 3.99, -0.01} and {10.01, 4.01, 0.09}. The acceleration has a time dependence given by time function #13.
LOAD
3
BODY "0" "0"
"-9.81" 13
0 4 0 10 4 0.08 inflate 0.01
&
Traction load.
This load applies nodal loads to nodes defining faces in the finite element mesh. The nodal loads are work-equivalent to the tractions on the faces. The faces are found through a search over all element faces; those whose nodes were all included in the search box are loaded with the specified tractions.
Example:
The following block defines a traction load acting in the Z-axis direction on all faces all of whose nodes are located in the box with the first corner at {0, 4, 0}, the second corner at {10, 4, 0.08}. The box is for the purpose of inclusion check inflated by 0.01 units, so that the actual box against which the inclusion is tested is given by {-0.01, 3.99, -0.01} and {10.01, 4.01, 0.09}. The traction has amplitude of -2000.0 units, with a time dependence given by time function #13.
LOAD
3
TRAC DZ -2000 13
0 4 0 10 4 0.08 inflate 0.01
&
This block defines a time function. Any entity used in the program may refer to any time function to define the necessary time dependencies.
The block starts by a line defining the type of the function. The integer 1 (one) specifies that a harmonic function is being described, 2 (two) specifies that a tabular function data follow.
For a harmonic function, there is only one line of data with three values:
For a tabular function, the next line specifies
Then follow N lines of pairs "t f(t)", where t is the time, and f(t) is the value of the time-dependency function at time. The time-dependency is assumed to vary linearly between these data.
Example:
The following block defines a harmonic time function no.2 with circular frequency 1000 and zero phase shift.
Time function 1 2 1000 0 &
Example:
The following block defines a tabular function no.13 which corresponds to a Heaviside function shifted to 0.001. The function is defined by four pairs of data (the infinite-slope part of the graph is approximated by a finite slope between 0.0009999999 and 0.001).
Time function 2 13 4 0 0 0.0009999999 0 0.001 1 0.1 1 &
The purpose of this block is to constrain some nodes by imposing displacement boundary conditions. NOTE: This needs to be written yet.
This block specifies which data should be stored in history files for plotting.
The data in the block consist of any number of lines of the form
and/or a single line of the form
The lines starting by "N" request history output for nodes, the lines starting by "E" request history storage for elements. The line starting by "W" requests computation and storage of the history of energy balance.
Example:
The following block requests that the quantities of interest at the crack tip located at {1.0, 0.0, 0.0} in element no.1 be stored in history files. Further, history data should be stored for the material point {0, -1.5, 0.0} located inside element no.35. Finally, the energy balance history is requested.
HISTORY E 1 1 1.0 0.0 0.0 CRACK_TIP E 35 2 0 -1.5 0.0 W &
History data are saved into the WASP.HIST subdirectory of the working directory.
This block describes elements of the same type. Thus, to use two or more element types in a single discrete model, insert one block of each type.
The first line of this block contains a single integer, the element type identifier.
The element types available as of June 1999 are:
Element type identifier 1.
For each element, there is a single data line which contains:
Example:
This block defines three truss elements. They all use material No.1, and have the same cross-section.
Elements 1 ! 3D truss ! enum n1 n2 mat A 1 1 2 1 0.001 2 2 3 1 0.001 3 3 4 1 0.001 &
Element type identifier 2.
For each element, there is a single data line which contains:
Example:
This block defines three beam elements. They all use material No.1, and have the same cross-section.
Elements 2 ! beam elements ! enum n1 n2 mat A It I1 I2 I3 Beta2 Beta3 1 2 1 10 1 1e-5 1.667e-10 8.333e-11 8.333e-11 1.2 1.2 2 2 3 10 1 1e-5 1.667e-10 8.333e-11 8.333e-11 1.2 1.2 3 3 4 10 1 1e-5 1.667e-10 8.333e-11 8.333e-11 1.2 1.2 &
Element type identifier 4.
For each element, there is a single data line which contains:
Node # | xi1 | xi2 | xi3 |
1 | -1 | -1 | -1 |
2 | +1 | -1 | -1 |
3 | +1 | +1 | -1 |
4 | -1 | +1 | -1 |
5 | -1 | -1 | +1 |
6 | +1 | -1 | +1 |
7 | +1 | +1 | +1 |
8 | -1 | +1 | +1 |
Example:
This block defines three hexahedral ASQBI3D elements. They all use material No.1.
Elements 4 ! hexahedral ASQBI3D ! enum n1 n2 n3 n4 n5 n6 n7 n8 material 1 1 2 3 4 5 6 7 8 1 2 5 6 7 8 9 10 11 12 1 3 9 10 11 12 13 14 15 16 1 4 13 14 15 16 17 18 19 20 1 &
Element type identifier 5.
For each element, there is a series of data lines. These lines constitute separate input data commands, which are explained below. The keywords are shown in BOLD UPPERCASE, the data items are shown in lowercase italics.
These are the data commands with explanations of their contents:
This command defines the element number.
This keyword introduces a command defining all the vertices used by
the hexahedral background mesh cells. The command must be concluded by END
VERT.
For each vertex, there should be a line with
Example:
The following command defines 384 vertices (some of them have been omitted in the code below).
VERT 1 -5 -7.5 -8.75 2 -3.57143 -7.5 -8.75 ... 384 5 7.5 8.75 END VERT
This keyword introduces a command defining all the hexahedral
background mesh cells of this superelement. The command must be
concluded by END HEXVOL.
For each hexahedron, there should be a line with
This keyword defines the Gaussian quadrature order in the cell.
This keyword requests that the cell be split for integration purposes
into n x n x n subcells (or into subcells
of approximate size s).
Example:
The following command defines 245 cells (some of them have been left out of the print).
HEXVOL ! id n1 n2 n3 n4 n5 n6 n7 n8 1 1 2 3 4 5 6 7 8 2 5 6 7 8 9 10 11 12 ... 245 327 375 383 335 328 376 384 336 END HEXVOL
MATERIAL mid
This keyword introduces a command defining a material to be used for
the superelement. The argument mid is the material
identifier.
Example:
The following command defines a material to be used by the superelement. The material is identified by the material number equal to 13.
MATERIAL 13
This command requests spacing between EFG nodes to be s.
This command requests the EFG nodes to be generated by creating n
by n by n grid in each hexahedral cell.
This command requests that the EFG nodes be generated inside
the cells only, not at their faces (vertices).
Example:
The picture on the left shows the pattern of nodes generated in a cell
by the command
NODES_PER_SIDE 2
and the picture on the right shows the nodes generated with
NODES_PER_SIDE 3 GENERATE_NODES_INSIDE_ONLY @--------@--------@ +-----------------+ | | | | | | | @ @ @ | | | | | | | | | @ @ @ | @ @ @ | | | | | | | | | | | | @ @ @ | | | | | @--------@--------@ +-----------------+
The command requests that the EFG nodes be generated inside a
specified rectilinear volume instead of in the cells.
This keyword specifies that the support size is not set by the input
data and should be computed from the distances between nodes. Since the
distances between nodes are expensive to compute, WASP estimates the
support size from the size of the cell in which the nodes are
generated.
This command sets the largest possible support size. It is
incompatible with the use of the keyword COMPUTE_SUPPORT_SIZE.
This command sets the support size for each node to be the value
specified. It is incompatible with the use of the keyword COMPUTE_SUPPORT_SIZE.
This command sets the multiplier to be used in case the support sizes
are to be computed from the distances between nodes.
This keyword introduces a command defining the body loads. The command
must be concluded by END BODYL.
The command data consist of a line with three strings -- expressions
-- defining the components of the body load vector. Optionally, the
following keywords may be used to allow the program some
performance-improving optimizations.
The body load does not depend on time.
The body load does not depend on the spatial coordinate.
Example:
The following defines body load corresponding to gravity loads
BODYL "0" "0" "-9.807" CONSTANT TIME_INDEPENDENT END BODYL
This command sets the minimal required number of neighbors at each
moving least square evaluation point.
This command sets the suggested number of neighbors at each moving
least square evaluation point.
This command requests that the diffraction technique to produce
continuous shape functions be used. The default is to produce
discontinuous shape functions based on visibility only.
This command requests that the weight functions associated with nodes
are of the type specified. The type can be one of
This is the default weight function. The support is a sphere. The
support size is the radius of the sphere. The weight function is a
radial function of the form
w(r) = 1 - 6r2 + 8r3
- 3r4.
The support is a sphere. The support size is the radius of the sphere.
The weight function is a radial function of the form
w(r) = 1 - r2.
The support is a cube. The support size is the half the length of the
cube side. The weight function is a tensor-product function of the form
w(x, y, z) = W(x)W(y)W(z),
where W(s) = 1 - s2.
Note that this weight functions produces shape
functions with discontinuous derivatives.
The support is a cube. The support size is the half the length of the
cube side. The weight function is a tensor-product function of the form
w(x, y, z) = W(x)W(y)W(z),
where W(s) = 1 - 2s2 for 0 <= s
<1/2, and W(s) = 2(1 - s)2
for 1/2 <= s <1. This weight function produces
shape functions with smooth derivatives.
This command sets a constraint on the freedoms of all EFG
nodes. Zero (0) means no freedoms, one (1) means no constraint.
Example:
The following command defines plane strain condition for the plane
x-y.
GENERAL_CONSTRAINT 1 1 0
The command requests that unless specified specifically otherwise, the
volume integrals should be in each cell computed using n x n
x n Gaussian quadrature.
This keyword requests that unless the quadrature rule is specified for
a cell by using the QO keyword, the volume integrals should
be in that cell computed using a two-point diagonal quadrature.
This keyword requests that the orientation of diagonals connecting the
1st and the 7th vertex be randomized by swapping of the vertices. The
geometry of the hexahedral cells does not change, only the order of the
vertexes. This feature is useful for the two-point diagonal quadrature,
where diagonals oriented all in the same direction lead to anisotropic
response of the body.
This keyword sets the tolerance to be used when generating EFG nodes.
This keyword signals that the superelement domain is convex, and no
checks need to be performed when evaluating the shape functions to
account for truncated domains of influence.
This keyword signals that the superelement domain is non-convex
(concave), and all possible checks need to be performed when evaluating
the shape functions to account for truncated domains of influence (all
re-entrant features, such as corners, holes, and cracks, are
considered).
This keyword signals that the superelement domain is convex with some
cracks. The truncated domains of influence are taken into account only
near the crack fronts.
The command sets the factor for the Rayleigh mass-proportional
damping.
The command defines the connectivity of the superelement, ie., it
defines which EFG vertex should have an EFG node connecting to a FE
node. The cells which refer to one or more vertices included in the
connectivity list become the interface cells. The command must be
concluded by END CONNECT.
For each connectivity pair, there should be a line with
Example:
The following command specifies that the superelement vertex No.3 is
connected to an FE node No.1:
CONNECT 3 1 END CONNECT
The command defines a concentrated load. The data consist of one line
for each force.
The command must be concluded by END CONCL.
The data that should be specified for a load is:
Example:
The following command defines two concentrated forces in the x-
and z-direction respectively; both forces vary with time as
the time function No.13:
CONCL 1 0.03 0.4 0.5 1.0 0.0 0.0 13 2 0.0 0.0 0.0 0 0 10.0 13 END CONCL
This command defines a load by bi-linearly distributed tractions on an
arbitrary quadrilateral surface inside the superelement or on its
surface. The command must be concluded by END DISTRIBL.
There are four kinds of tractions:
The dead pressure is specified by p(X,t)= p(X)f(t) N(X), where p is the traction vector, p(X) is the magnitude of the traction, f(t) is the time dependency (time function), and N(X) is the normal to the loaded surface in the reference configuration as given by the geometry of the loaded patch.
The first line of the dead-pressure data consists of:
The next four lines define the x-, y-, and z-coordinates of the patch vertices, and the associated scalar multiplier p of the pressure.
Example:
The following command defines a uniform normal pressure load No.22 of
magnitude 0.09, whose time variation is given by the time function
No.13, and which is integrated in 24x24 Gauss point:
DISTRIBL 22 DEAD_PRESSURE 13 qr 24 -5 0 -8.750000 -0.09 0 0 -8.750000 -0.09 0 7.5 -8.750000 -0.09 -5 7.5 -8.750000 -0.09 END DISTRIBL
The dead shear is specified similarly to the dead traction, the only difference is that the normal is replaced by a direction vector specified by the input data.
The first line of the dead-shear data consists of:
The next four lines define the x-, y-, and z-coordinates of the patch vertices, and the associated scalar multiplier p of the shear traction.
Example:
The following command defines a uniform shear load No.22 of magnitude
0.09, directed along the y-axis (note that the direction
vector points against the y-axis and the magnitude is
negative), whose time variation is given by the time function No.13,
and which is integrated in 24x24 Gauss point:
DISTRIBL 22 DEAD_SHEAR 13 0.0 -1.0 0.0 qr 24 -5 0 -8.750000 -0.09 0 0 -8.750000 -0.09 0 7.5 -8.750000 -0.09 -5 7.5 -8.750000 -0.09 END DISTRIBL
As of November 1996, the follower load have not yet been implemented..
This command defines a load by contact tractions. The tractions act on
a quadrilateral patch on the surface of the superelement. The command
data must be concluded by the keywords END CONTACTL.
The first line specifies:
The next four lines specify coordinates of the contact patch (spatial quadrilateral). The vertices of the patch are defined counterclockwise when looking against its normal. The contact patch defines where the contact pressures are generated when the contact condition is satisfied. Thus, eventhough the contact condition may be satisfied also elsewhere, the contact pressure is generated only inside the patch.
The next line defines the contact plane. The contact plane may be defined either by the patch itself (in case they are identical in the reference configuration), or by arbitrary three points. Thus, the first way is to use the keyword
The second way is to use
In all cases, the contact plane is constructed to have normal which is directed against the normal of the contact patch (it matters only for unilateral contact, though).
Example:
The following command defines a contact patch No.13 and a contact
plane. The plane is defined by three points. The contact is unilateral
(pressure).
CONTACTL 13 UNILATERAL CONTACT_PRESS_SCALING 10000 SPLIT 4 QR 4 0.01 -0.01 -0.01 0.01 0.01 -0.01 0.01 0.01 0.01 0.01 -0.01 0.01 BY_POINTS 0.008 -0.015 -0.015 0.013 -0.015 0.015 0.018 0.015 -0.015 END CONTACTL
This command defines a crack surface. The command must be concluded by
the keywords END CRACK.
For each crack representation type there is a set of subcommands. As of November 1996, there are two representations available:
This subcommand must start the data of a triangulated crack. The data
must be concluded by the keywords END TRIANGULATED
This subcommand specifies that the crack is forced to remain
stationary.
This subcommand specifies the
This subcommand specifies that adaptive adjustement of crack front
edge lengths is allowed (disallowed by default).
This subcommand specifies that adaptive relaxation of crack front edge
lengths to make all of them approximately equal is allowed (disallowed
by default).
This subcommand specifies the lower bound on crack front edge length,
which is used in front adaptivity.
This subcommand specifies the upper bound on crack front edge length,
which is used in front adaptivity.
This subcommand specifies that the effective modulus used for the
relationship between the energy release rate and the stress intensity
factors may depend on the strains at the front using the expression
proposed by Cherepanov (1979).
This subcommand specifies the maximum crack speed in terms of fraction
of the Rayleigh wave speed.
This subcommand specifies the sub-cell structure to be used with
re-interpolation in the interaction integral evaluation.
This subcommand specifies that the stress intensity factors at the
boundary should be extrapolated from the vertices inside the body,
rather than computed from the interaction energy integrals.
This subcommand specifies properties of a vertex on the crack surface.
The syntax is:
where x, y, and z are coordinates of the
vertex,
with optional keywords
to specify that the vertex lies on the crack front,
to specify that the vertex lies on the external surface of the
superelement.
This subcommand defines a triangle on the crack surface. The syntax is
where id is the triangle number, v1, v2,
and v3 are the numbers of the
vertices of the triangle as defined by the V
subcommand.
Example:
The following command defines a triangulated crack surface. The crack
identifier is 1, the J-integral domain size is specified; there are 66
vertices (some have been omitted in the code), and 100 triangles
(again, most have been omitted). Note that the vertex No.13 lies both
on the crack front, and on the external surface of the superelement. In
other words, the vertex is a free-surface corner point on the crack
front.
CRACK TRIANGULATED ID 1 JDOM 1.428570 1.428570 1.5 1.5 2.083 2.083 ALLOW_RELAXATION V 1 0 0 0 ON_FRONT V 2 1 0 0 ... V 13 0 -7.5 0 ON_FRONT ON_BDRY ... V 66 5 3 0 T 1 1 2 3 T 2 3 4 1 ... T 100 66 55 46 END TRIANGULATED END CRACK
Needs to be written yet.
The data commands for a superelement must end by the END
command.
Element type identifier 6.
For each element, there is a single data line which contains:
Node # | xi1 | xi2 | xi3 |
1 | -1 | -1 | -1 |
2 | +1 | -1 | -1 |
3 | +1 | +1 | -1 |
4 | -1 | +1 | -1 |
5 | -1 | -1 | +1 |
6 | +1 | -1 | +1 |
7 | +1 | +1 | +1 |
8 | -1 | +1 | +1 |
In addition, the quadrature rule used for each element may be controlled by using the keywords USE_2PT_RULE and DO_NOT_USE_2PT_RULE.
Example:
This block defines four hexahedral elements. They all use material No.1. The first and last element are integrated by the 2x2x2 Gaussian quadrature, the remaining by the diagonal, two-point rule.
Elements
6 ! isoparametric hexahedral
!enum n1 n2 n3 n4 n5 n6 n7 n8 material
1 1 2 3 4 5 6 7 8 1
USE_2PT_RULE
2 5 6 7 8 9 10 11 12 1
3 9 10 11 12 13 14 15 16 1
DO_NOT_USE_2PT_RULE
4 13 14 15 16 17 18 19 20 1
&
Element type identifier 8.
For each element, there is a single data line which contains:
Node # | r | s | t | u |
1 | 0 | 0 | 0 | 1 |
2 | 1 | 0 | 0 | 0 |
3 | 0 | 1 | 0 | 0 |
4 | 0 | 0 | 1 | 0 |
5 | 1/2 | 0 | 0 | 1/2 |
6 | 1/2 | 1/2 | 0 | 0 |
7 | 0 | 1/2 | 0 | 1/2 |
8 | 0 | 0 | 1/2 | 1/2 |
9 | 1/2 | 0 | 1/2 | 0 |
10 | 0 | 1/2 | 1/2 | 0 |
Example:
This block defines four tetrahedral elements. They all use material No.133.
Elements
8 ! 10-noded tetrahedral
!enum n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 material
1 1 2 3 4 5 6 7 8 9 10 133
2 5 6 7 8 9 10 11 12 17 19 133
3 9 10 11 12 13 14 15 16 18 19 133
4 13 14 15 16 17 18 19 20 33 44 133
&
Element type identifier 13.
The element data are the same as those for the truss element of type 1.
Element type identifier 14.
For each element, there is a single data line which contains:
Element type identifier 15.
For each element, there is a single data line which contains:
Element type identifier 16.
For each element, there is a single data line which contains:
The pressure is given as the product of the amplitude and the value of the time function at the time instant of evaluation.
Element type identifier 18.
For each element, there is a single data line which contains:
Node # | xi1 | xi2 | xi3 |
1 | -1 | -1 | -1 |
2 | +1 | -1 | -1 |
3 | +1 | +1 | -1 |
4 | -1 | +1 | -1 |
5 | -1 | -1 | +1 |
6 | +1 | -1 | +1 |
7 | +1 | +1 | +1 |
8 | -1 | +1 | +1 |
9 | 0 | -1 | -1 |
10 | 1 | 0 | -1 |
11 | 0 | 1 | -1 |
12 | -1 | 0 | -1 |
13 | 0 | -1 | 1 |
14 | 1 | 0 | 1 |
15 | 0 | 1 | 1 |
16 | -1 | 0 | 1 |
17 | -1 | -1 | 0 |
18 | 1 | -1 | 0 |
19 | 1 | 1 | 0 |
20 | -1 | 1 | 0 |
Gaussian 2x2x2 quadrature is used to evaluate forces. The diagonal mass matrix is based on scaled diagonal terms of the consistent mass matrix (the row-sum technique yields negative terms).
Example:
This block defines three 20-node hexahedral elements. They all use material No.1.
Elements
18 ! isoparametric 20-node hexahedra
!enum n1 n2 n3 ... n20 material
1 1 49 50 51 52 53 54 55 232 233 234 235 236 237 238 239 240 241 242 243 1
2 52 53 54 55 5 56 57 58 236 237 238 239 244 245 246 247 248 249 250 251 1
3 51 50 59 4 55 54 60 61 234 252 253 254 238 255 256 257 243 242 258 259 1
&
Element type identifier 19.
This element is implemented as a collection of hexahedral volumes. Each input block is a single element, with an arbitrary number of hexahedral volumes (integration cells).
As a first thing in the block, the material number needs to be
specified in a line of the form
Material 1
Optionally, the center weight for the quadrature may be specified by a
line of the form
CENTER_WEIGHT 4.5
(see writeup in the source file for the meaning of the weight).
For each hexahedral volume there is a single data line which contains:
9-point quadrature is used to evaluate forces and tangent matrices. The diagonal mass matrix is based on scaled diagonal terms of the consistent mass matrix (the row-sum technique yields negative terms).
Example:
This block defines three 20-node hexahedral elements. They all use material No.1.
Elements
19 ! isoparametric 20-node hexahedra
Material 1
center_weight 4
!enum n1 n2 n3 ... n20
1 1 49 50 51 52 53 54 55 232 233 234 235 236 237 238 239 240 241 242 243
2 52 53 54 55 5 56 57 58 236 237 238 239 244 245 246 247 248 249 250 251
3 51 50 59 4 55 54 60 61 234 252 253 254 238 255 256 257 243 242 258 259
&
Element type identifier 20.
For each element, there is a single data line which contains:
The pressure is given as the product of the amplitude and the value of the time function at the time instant of evaluation.
Element type identifier 21.
For each element, there is a single data line which contains:
The pressure is given as the product of the amplitude and the value of the time function at the time instant of evaluation.
Element type identifier 22.
This element differs from the type 6 hex by the evaluation of the weak forms: type 22 works in the Eulerian setting, whereas type 6 works in the (total) Lagrangian setting. For each element, there is a single data line which contains:
In addition, the quadrature rule used for each element may be controlled by using the keywords USE_2PT_RULE and DO_NOT_USE_2PT_RULE.
Example:
This block defines four hexahedral elements. They all use material No.1. The first and last element are integrated by the 2x2x2 Gaussian quadrature, the remaining by the diagonal, two-point rule.
Elements
6 ! isoparametric hexahedral
!enum n1 n2 n3 n4 n5 n6 n7 n8 material
1 1 2 3 4 5 6 7 8 1
USE_2PT_RULE
2 5 6 7 8 9 10 11 12 1
3 9 10 11 12 13 14 15 16 1
DO_NOT_USE_2PT_RULE
4 13 14 15 16 17 18 19 20 1
&
The materials available in WASP are of different types, and each element can use only the material type which it knows how to interface with.
Materials are distinguished by the material code number, which corresponds to an implementation of the interface between a material and an element. The following material codes are implemented:
2: Uniaxial perfectly elasto-plastic
3: Uniaxial hardening elasto-plastic
The code developers are strongly advised to use the general triaxial material for solid elements as this is the most flexible and most advanced of the materials. Similarly, one-dimensional elements should use the general uniaxial material.
Material code: 1
This is the simplest material for uniaxial constitutive equations.
Material code: 2
Perfectly elasto-plastic material for uniaxial constitutive equations.
Material code: 3
Hardening elasto-plastic material for uniaxial constitutive equations.
Material code: 4
Elastic material for bi-axial constitutive equations (plane stress or plane strain).
Material code: 5
Elastic material for tri-axial constitutive equations.
The first line of the block contains the material code. The next line contains the material data:
Example:
The following is an example of data for this material code. The
material identifier is 13 (this would be used by an element to refer to
this material).
MATERIAL 5 ! code 13 210000 0.15 7.85 &
Material code: 6
Material for tri-axial constitutive equations. A number of such materials is bundled with WASP:
The first line of the block contains the material code. The next line
contains a single integer, the material type identifier.
The following line (or lines) contain(s) the material data. The contents is interpreted by the particular material type chosen:
Example:
The following describes steel as an linear elastic material. The
tensile strength is also specified.
MATERIAL 6 ! code 1 ! type, next line contains data E 200000 NU 0.15 RHO 7.85 TENSILE_STRENGTH 400 &
Example:
The following describes steel as an linear elastic material.
MATERIAL 2 E 200000 NU 0.15 RHO 7.85
Example:
The following describes the material of the Taylor bar (copper as an
elasto-plastic material with linear isotropic hardening).
MATERIAL 3 E 117000 NU 0.35 RHO 8.93e-9 SIGMA_Y 400 HARDENING_PARAM 100
Example:
The following describes a perfect fluid material (water at 20 deg C),
with initial pressure corresponding to depth measured from z=0.
MATERIAL 4 BULK_MOD 2200 RHO 1 INITIAL_PRESSURE "9.807*z"
Example:
The following describes the material of the Taylor bar (copper as an
elasto-plastic material with linear isotropic hardening).
MATERIAL 5 E 117000 NU 0.35 RHO 8.93e-9 SIGMA_Y 400 HARDENING_PARAM 100
Example:
The following describes the material of the Taylor bar as hyperelastic.
MATERIAL 6 E 117000 NU 0.35 RHO 8.93e-9
Material code: 7
Material for uni-axial constitutive equations.
The first line of the block contains the material code. The next line contains a single integer, the material type identifier.
The following line (or lines) contain(s) the material data. The contents is interpreted by the particular material type chosen:
Example:
The following describes steel as an linear elastic material. The
tensile strength is also specified.
MATERIAL 7 ! code 1 ! type, next line contains data E 200000 NU 0.15 RHO 7.85 &
Example:
The following describes steel as an linear elastic material.
MATERIAL 2 E 200000 NU 0.15 RHO 7.85
Example:
The following describes the material of the Taylor bar (copper as an
elasto-plastic material with linear isotropic hardening).
MATERIAL 3 E 117000 NU 0.35 RHO 8.93e-9 SIGMA_Y 400 H 100
NOTE: This needs to be written yet.