MSC.Marc® Volume D

Transcription

MSC.Marc® Volume D
MSC.Marc®
Volume D
User Subroutines and Special Routines
Version 2005
Copyright  2004 MSC.Software Corporation
All rights reserved. Printed in U.S.A.
Corporate
Europe
MSC.Software Corporation
2 MacArthur Place
Santa Ana, CA 92707
Telephone: (714) 540-8900
Fax: (714) 784-4056
MSC.Software GmbH
Am Moosfeld
81829 München, GERMANY
Telephone: (49) (89) 431 987 0
Fax: (49) (89) 436 1716
Asia Pacific
Worldwide Web
MSC Software Japan Ltd.
Shinjuku First West 8F
23-7 Nishi Shinjuku
1-Chome, Shinjuku-Ku
Tokyo 160-0023, JAPAN
Telephone: (81) (3)-6911-1200
Fax: (81) (3)-6911-1201
www.mscsoftware.com
Part Number:
MA*V2005*Z*Z*Z*DC-VOL-D
This document, and the software described in it, are furnished under license and may be used or copied only in accordance with the
terms of such license. Any reproduction or distribution of this document, in whole or in part, without the prior written authorization of
MSC.Software Corporation is strictly prohibited.
MSC.Software Corporation reserves the right to make changes in specifications and other information contained in this document
without prior notice. The concepts, methods, and examples presented in this document are for illustrative and educational purposes only
and are not intended to be exhaustive or to apply to any particular engineering problem or design. THIS DOCUMENT IS PROVIDED
ON AN “AS-IS” BASIS AND ALL EXPRESS AND IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE
DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.
MSC.Software logo, MSC, MSC., MSC/, MSC.ADAMS, MSC.Dytran, MSC.Marc, MSC.Patran, ADAMS, Dytran, MARC, Mentat,
and Patran are trademarks or registered trademarks of MSC.Software Corporation or its subsidiaries in the United States and/or
other countries.
NASTRAN is a registered trademark of NASA. MSC.Nastran is an enhanced proprietary version developed and maintained by
MSC.Software Corporation. LS-DYNA is a trademark of Livermore Software Technology Corporation. All other trademarks are the
property of their respective owners.
This software may contain certain third-party software that is protected by copyright and licensed from MSC.Software suppliers.
METIS is copyrighted by the regents of the University of Minnesota.
NT-MPICH is developed by Lehrstuhl für Betriebssysteme der RWTH Aachen. Copyright  1992-2004 Lehrstuhl für Betriebssysteme
der RWTH Aachen.
Use, duplication, or disclosure by the U.S. Government is subject to restrictions as set forth in FAR 12.212 (Commercial Computer
Software) and DFARS 227.7202 (Commercial Computer Software and Commercial Computer Software Documentation), as applicable.
MSC.Marc Volume D: User Subroutines and Special Routines
Contents
C O N T E N T S
MSC.Marc Volume D: User Subroutines and
Special Routines
Chapter 1
Introduction
■
Common Blocks Description, 1-2
■
Note on Double Precision, 1-2
■
Format, 1-3
■
Element Result Database Utility Routine, 1-5
❑ Example, 1-6
■
Nodal Results Database Utility Routine, 1-7
■
Table Evaluation Routine, 1-8
■ MATDAT
Common Block, 1-9
■ CONCOM
Common Block, 1-11
■ ELMCOM
Common Block, 1-17
■ BCLABEL
Common Block, 1-20
Chapter 2
User-defined Loading,
Boundary Conditions,
and State Variables User
Subroutines List
Chapter 2
User-defined Loading,
Boundary Conditions,
and State Variables User
Subroutines
FORCEM — Input of Nonuniform Distributed Loads, 2-7
FLUX — Input of Nonuniform Fluxes, 2-12
UWELDFLUX — Input of User Defined Welding Flux, 2-14
UWELDPATH — Input of User Defined Welding Path, 2-16
CUPFLX — Coupling of Inelastic Energy and Internal
Heat Generation, 2-18
UINSTR — Input of Initial State of Stresses, 2-19
UFOUR — Input of a User-defined Function F(Q) for
Fourier Analysis, 2-20
MSC.Marc Volume D: User Subroutines and Special Routines
iv
Contents
— Input of Time Dependent Nodal based Boundary
Conditions, 2-22
❑ Stress Analysis, 2-22
❑ Heat Transfer Analysis, 2-24
❑ Joule Heating Analysis, 2-25
❑ Diffusion Analysis, 2-26
❑ Electrostatic Analysis, 2-28
❑ Magnetostatic Analysis, 2-29
FORCDF — Input of Frequency Dependent Loads or Displacements in
Harmonic Analysis, 2-31
❑ Stress Analysis, 2-31
❑ Piezoelectric Analysis, 2-32
FILM — Input of Nonuniform Film Coefficients, 2-35
FLOW — Input of Mass Flow Rate and Inlet Temperature, 2-37
UFOUND — Input of Nonlinear Foundation Stiffness and
Damping, 2-39
UFILM — Input of Nonuniform Convective Coefficients, 2-41
USINKPT — Input of Sink Point Temperatures, 2-43
GAPT — Input of Thermal Contact (Conrad) Gap Temperature, 2-44
UFORMS — Definition of Constraint Conditions, 2-45
CREDE — Input of Pre-specified State Variables, 2-50
INITSV — Initialize State Variable Values, 2-52
NEWSV — Input New State Variable Values, 2-53
USSD — Input of Spectral Response Density, 2-55
USINC — Input of Initial Conditions, 2-56
USDATA — Input of Initial Data, 2-57
UTIMESTEP — Input of User-defined Time Step, 2-58
UVELOC — Generation or Modification of Nodal
Velocity Vectors, 2-59
MOTION (2-D) — Definition of Rigid Surface Motion for
2-D Contact, 2-60
MOTION (3-D) — Definition of Rigid Surface Motion for
3-D Contact, 2-62
UGROWRIGID — Changes the Size of a Rigid Body During the
Analysis, 2-65
UFRIC — Definition of Friction Coefficients, 2-66
UFRICBBC — Definition of Friction Coefficients for
Beam-to-Beam Contact, 2-68
DIGEOM — Definition of 3-D Rigid Surface Patch, 2-70
SEPFOR — Definition of Separation Force, 2-71
FORCDT
MSC.Marc Volume D: User Subroutines and Special Routines
v
Contents
— Definition of Separation Force for
Beam-to-Beam Contact, 2-73
SEPSTR — Definition of Separation Stress, 2-75
UHTCOE — Definition of Environment Film Coefficient, 2-76
UHTCON — Definition of Contact Film Coefficient, 2-79
UHTNRC — Definition of Thermal Near Contact Film
Coefficient, 2-81
UVTCOE — Definition of Environment Electrical Film
Coefficient, 2-84
UVTCON — Definition of Electrical Film Coefficient, 2-87
UVTNRC — Definition of Electrical Near Contact Film
Coefficient, 2-89
UMDCOE — Definition of Environment Mass Diffusion
Coefficient, 2-91
UMDCON — Definition of Contact Mass Diffusion Coefficient, 2-94
❑ Format, 2-94
UMDNRC — Definition of Mass Diffusion Coefficients between
Surfaces almost in Contact, 2-96
UNORST — Definition of Normal Stress, Flow Stress and Temperature
at Contact Node, 2-98
UCONTACT — User-defined Contact Condition, 2-101
INITPL — Initialize Equivalent Plastic Strain Values, 2-104
INITPO — Initialize Pore Pressure in an Uncoupled
Fluid-Soil Analysis, 2-105
NEWPO — Modify Pore Pressure in an Uncoupled
Fluid-Soil Analysis, 2-106
UREACB — Definition of Reactive Boundary Coefficients in an
Acoustic Harmonic Analysis, 2-107
UCAV — Input of Volume-Dependant Pressure Load
for Cavities, 2-108
UOBJFN — Definition of Objective Function and its Gradient, 2-110
SEPFORBBC
MSC.Marc Volume D: User Subroutines and Special Routines
vi
Contents
Chapter 3
User-defined Anisotropy
and Constitutive
Relations
User Subroutines List
Chapter 3
User-defined Anisotropy
and Constitutive
Relations
User Subroutines
ANELAS — Elastic Anisotropy, 3-5
HOOKLW — Anisotropic Elastic Law, 3-15
ANPLAS — Anisotropic Yield Surface and Creep Potential, 3-17
UFAIL — User-defined Failure Criterion, 3-19
ORIENT — Specification of Preferred Orientation, 3-20
ANEXP — Anisotropic Thermal Expansion, 3-22
ANKOND — Input of Anisotropic Thermal Conductivity Matrix, 3-24
UEPS — Input of Anisotropic Permittivity Matrix, 3-26
UMU — Input of Anisotropic Permeability Matrix, 3-27
USIGMA — Input of Anisotropic Electric Conductivity Matrix, 3-29
USPCHT — Definition of Specific Heat, 3-30
UCRPLW (Viscoplastic) — Input of Creep Factors for Power Law
Implicit Creep, 3-31
CRPLAW — Input of Special Creep Law, 3-33
VSWELL — Input of Special Swelling Law, 3-38
WKSLP — Work-hardening Slope Definition, 3-41
USPRNG — Input of Nonlinear Spring, Dashpot and
Foundation Stiffness, 3-44
UCRACK — Input of Ultimate Stress for Cracking Analysis, 3-47
TENSOF — Input of Tension Softening Modulus for
Cracking Analysis, 3-49
USHRET — Input of Shear Retention Factor for
Cracking Analysis, 3-50
UVOID — Definition of the Initial Void Volume Fraction, 3-51
UVOIDN — Definition of the Void Nucleation Rate, 3-52
UVOIDRT — Definition of the Initial Void Ratio or Initial
Porosity, 3-54
UGRAIN — Calculation of Grain Size, 3-55
UDAMAG — Prediction of Material Damage, 3-56
UPOWDR — Definition of Material Data for Powder
Metallurgy Model, 3-58
UPERM — Definition of Permeability, 3-60
UMOONY — Mooney-Rivlin Material, 3-61
UENERG — Strain Energy Function, 3-62
MSC.Marc Volume D: User Subroutines and Special Routines
vii
Contents
UOGDEN — Definition of Ogden Material Parameters, 3-64
UELDAM — Definition of Damage Parameters in Ogden Model, 3-66
HYPELA2 — User-defined Material Behavior, 3-68
UFINITE — Finite Deformation Isotropic Material Models, 3-74
UELASTOMER — Generalized Strain Energy Function, 3-77
GENSTR — Generalized Stress Strain Law (Shells & Beams), 3-82
UBEAM — Input for Nonlinear Beam, 3-84
UPHI — Input of PHI Function in Harmonic Analysis, 3-87
UCOMPL — Input of Viscous Stress Strain Relationship, 3-89
GAPU — Input of Gap Direction And Closure Distance, 3-91
USELEM — User-defined Element, 3-93
UNEWTN — Input of Viscosity in Flow Analysis, 3-96
URPFLO — Rigid-Plastic Flow, 3-97
UARRBO — Arruda-Boyce Material Model, 3-99
UGENT — Gent Material Model, 3-100
UACOUS — Definition of Material Properties for
Acoustic Analysis, 3-101
Superelements Not Generated by MSC.Marc, 3-102
USSUBS —
■
References, 3-104
Chapter 4
Viscoplasticity and
Generalized Plasticity
User Subroutines List
Chapter 4
Viscoplasticity and
Generalized Plasticity
User Subroutines
UVSCPL — Definition of the Inelastic Strain Rate, 4-3
UCRPLW — Input of Creep Factors for Power Law Implicit Creep,
CRPLAW — Input of Explicit Viscoplastic Strain Rate Law, 4-7
NASSOC — Input of a Nonassociated Flow Law, 4-9
ZERO — Calculation of Equivalent Stress, 4-11
YIEL — Calculation of Current Yield, 4-12
ASSOC — Input of Associated Flow Law, 4-13
SINCER — User Subroutine for Improving Accuracy, 4-14
4-5
MSC.Marc Volume D: User Subroutines and Special Routines
viii
Contents
Chapter 5
Viscoelasticity User
Subroutines List
Chapter 5
Viscoelasticity
User Subroutines
— Viscoelasticity – Generalized Kelvin
Material Behavior, 5-3
TRSFAC — Define a Shift Function for Thermo-Rheologically Simple
(T.R.S.) Material Behavior, 5-6
HOOKVI — User-defined Anisotropic Viscoelasticity, 5-8
CRPVIS
Chapter 6
Geometry Modifications
User Subroutines List
Chapter 6
Geometry Modifications
User Subroutines
UFXORD — Coordinate Generation or Modification, 6-3
UFCONN — Connectivity Generation or Modification, 6-4
MAP2D — Boundary Node Coordinates Modification in Mesh2D, 6-5
USIZEOUTL — Local Refinement Definition for 2-D Remeshing with
Advancing Front Mesher, 6-6
UPNOD — Update Nodal Positions in Flow Solutions, 6-7
UACTIVE — Activate or Deactivate Elements, 6-9
REBAR — Input of Rebar Positions, Areas and Orientations, 6-10
UFRORD — Rezoning Coordinate Generation or Modification, 6-11
URCONN — Rezoning Connectivity Generation
or Modification, 6-12
— User-defined Criterion to Split a Two-dimensional
Body, 6-13
UCOORD — Relocate Nodes Created During Adaptive Meshing, 6-14
UADAP — User-defined Error Criterion, 6-15
UADAP2 — User-defined Unrefinement, 6-16
UADAPBOX — User-defined Box For Adaptivity, 6-17
UTRANS — Implement Local Coordinate System, 6-19
USHELL — Modify Thickness of Shell Elements, 6-20
SSTRAN — Transformation of Substructures, 6-21
UTHICK — User-specified Nodal Thicknesses, 6-22
UACTUAT — Prescribe the Length of an Actuator, 6-23
USPLIT
MSC.Marc Volume D: User Subroutines and Special Routines
ix
Contents
Chapter 7
Output Quantities User
Subroutines List
Chapter 7
Output Quantities
User Subroutines
PLOTV — User-selected Postprocessing of Element Variables,
UPOSTV — User-selected Postprocessing of Nodal Variables,
UPSTNO — User-selected Postprocessing of Nodal Variables,
IMPD — Output of Nodal Quantities, 7-10
7-3
7-5
7-8
Stress Analysis, 7-10
Electrostatic Analysis, 7-13
❑ Magnetostatic Analysis, 7-14
❑ Harmonic Electromagnetic Analysis, 7-15
❑ Transient Electromagnetic Analysis, 7-15
❑ Acoustic Analysis, 7-16
❑ Fluid or Fluid-Thermal Analysis, 7-17
ELEVAR — Output of Element Quantities, 7-18
ELEVEC — Output of Element Quantities in Harmonic Analysis, 7-20
INTCRD — Output of Integration Point Coordinates, 7-22
UBGINC — Beginning of Increment, 7-23
UEDINC — End of Increment, 7-24
UBGITR — Beginning of Iteration, 7-25
UBGPASS — Beginning of Pass in Coupled Analyses, 7-26
UELOOP — Beginning of Element Loop, 7-27
❑
❑
Chapter 8
Hydrodynamic
Lubrication
User Subroutines List
Chapter 8
Hydrodynamic
Lubrication
User Subroutines
UBEAR — Input of Spatial Orientation of Lubricant Thickness,
UGROOV — Input of Groove Depths, 8-4
URESTR — Input of Nonuniform Restrictor Coefficients, 8-5
UTHICK — Generation or Modification of Nodal Thickness or
Thickness Change Field, 8-6
UVELOC — Generation or Modification of Nodal
Velocity Vectors, 8-8
8-3
MSC.Marc Volume D: User Subroutines and Special Routines
x
Contents
Chapter 9
Special Routines —
MSC.Marc Post
File Processor List
Chapter 9
Special Routines —
MSC.Marc Post
File Processor
PLDUMP2000/PLDUMP
— MSC.Marc Post File Processor, 9-2
Chapter 10
Utility Routines List
Chapter 10
Utility Routines
DDOT — Inner Product of Two Vectors, 10-2
GMADD — Matrix Add, 10-3
GMPRD — Matrix Product, 10-4
GMSUB — Matrix Subtract, 10-5
GMTRA — Matrix Transpose, 10-6
GTPRD — Transpose Matrix Product, 10-7
INVERT — Invert Matrix, 10-8
INV3X3 — Invert 3 x 3 Matrix, 10-9
MCPY — Matrix Copy, 10-10
PRINCV — Find Principle Values, 10-11
SCLA — Set Matrix to Value, 10-12
Chapter 11
Considerations for
Parallel Processing
Appendix A
User Subroutines,
Special Routines and
Utility Routines List
■
Overview, 11-1
■
Auxiliary Routines, 11-2
❑ DOMFLAG, 11-2
■
Reading Input, 11-3
■
Sharing Data, 11-5
Chapter 1 Introduction
CHAPTER
1
Introduction
■ Common Blocks Description
■ Note on Double Precision
■ Format
■ Element Result Database Utility Routine
■ Nodal Results Database Utility Routine
■ Table Evaluation Routine
■ CONCOM Common Block
■ ELMCOM Common Block
■ BCLABEL Common Block
1-2
Common Blocks Description
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
In MSC.Marc, the user subroutine feature constitutes one of the real strengths of
MSC.Marc, allowing the user to substitute his own subroutines for several existing in
MSC.Marc. This feature provides the user with a wide latitude for solving
nonstandard problems. These routines are easily inserted into MSC.Marc. When such
a routine is supplied, the user is simply replacing the one which exists in MSC.Marc
program using appropriate control setup. A description of each of the available user
subroutines is given in this manual. In addition, discussions of special routines are
also included.
Note: The reading of data is not recommended in most of the user subroutines since many of
these routines are in the recycling loop for nonlinear analysis, and hence, you cannot know
how many times per increment the routine is called.
Common Blocks Description
Often, when using a user subroutine, more information is needed than is provided
through the call arguments. Almost all information is available through common
blocks. Much of the information provided below is already available but occasionally,
especially in older subroutines, it is not.
All common blocks can be accessed by the user by “including” them in the user
subroutine. The syntax to use in the user subroutine is:
include ’yyy’
where yyy is the name of the common block. Note that the word include must begin
after column 6 and that the common block name must be within single quotes. A path
to the MSC.Marc installation directory does not need to be provided.
Note on Double Precision
MSC.Marc is written completely in double precision. Hence, on all machines, an
IMPLICIT REAL *8 (A-H, O-Z) statement is required in the user subroutines. This
is to ensure that variables passed between MSC.Marc and the user subroutine are
compatible and to ensure that any common blocks included are correct.
MSC.Marc Volume D: User Subroutines and Special Routines
Format
1-3
Chapter 1 Introduction
Format
The following quantities are available in all user subroutines:
TIME AT BEGINNING OF INCREMENT:
TIME INCREMENT:
AVAILABLE THROUGH
include ’creeps’
INCREMENT NUMBER:
SUBINCREMENT NUMBER:
AVAILABLE THROUGH
include ’concom’
CPTIM
TIMINC
INC
INCSUB
Note: During the output phase, CPTIM has been updated to the time at the end of the increment
and TIMINC has been set to zero if the total time for an increment or a series of increments
has been reached. If the total time has not yet been reached, TIMINC has been set to the
time increment of the next increment.
NUMBER OF ELEMENTS IN MESH:
NUMBER OF NODES IN MESH:
MAXIMUM NUMBER OF DEGREES OF FREEDOM PER NODE:
MAXIMUM NUMBER OF COORDINATE DIRECTIONS:
AVAILABLE THROUGH
include ’dimen’
NUMEL
NUMNP
NDEG
NCRD
In a coupled analysis, reference variable IPASS to determine if the current iteration is
a stress or heat transfer iteration:
IPASS = 1
STRESS
IPASS = 2
HEAT TRANSFER
IPASS = 3
FLUIDS
IPASS = 4
JOULE HEATING
IPASS = 5
DIFFUSION
IPASS = 6
ELECTROSTATICS
IPASS = 7
MAGNETOSTATIC
IPASS = 8
ELECTROMAGNETICS
AVAILABLE THROUGH
include ’concom’
The following quantities are available in user subroutines which are in an
element loop:
ELEMENT NUMBER:
M
AVAILABLE THROUGH
include ’far’
ELSTO ELEMENT NUMBER:
INTEGRATION POINT NUMBER:
LAYER NUMBER:
AVAILABLE IN
include ’lass’
N
NN
KC
1-4
Format
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
NUMBER OF NODES IN ELEMENT:
AVAILABLE IN
include ’elmcom’
NNODE
NUMBER OF DIRECT COMPONENTS OF STRESS:
NUMBER OF SHEAR COMPONENTS OF STRESS:
SIZE OF STRESS-STRAIN LAW:
ELEMENT TYPE:
NUMBER OF LAYERS PER ELEMENT:
NUMBER OF INT. PTS PER ELEMENT:
NUMBER OF GEN. STRESS COMP. PER ELEMENT:
AVAILABLE THROUGH
include ’elmcom’
MAXIMUM NUMBER OF LAYERS PER ELEMENT:
MAXIMUM NUMBER OF INT. PTS PER ELEMENT:
AVAILABLE THROUGH
include ’nzro1’
NDI
NSHEAR
NSTRM1
JTYPE
NSTRM2
INTEL
NGENEL
NEQST
NSTRES
To determine the coordinates of integration point NN of element M and to place these
coordinates in array CCINT, use the following procedure:
include ’lass’
include ’dimen’
include ’space’
include ’heat’
include ’array4’
DIMENSION CCINT(12)
LA1 = ICRXPT + (NN-1)*NCRDMX + LOFR
D0
II = 1, NCRD
CCINT(II) = VARS(LA1)
LA1 = LA1 + 1
ENDDO
Note: This is only available after the first stiffness matrix assembly.
To obtain the array of internal node numbers of an element, use variable LM:
include ’blnk’
The first NNODE numbers of LM are the internal node numbers.
To determine the internal node number LINT of user (external) node number LEXT, use
the following function call:
LINT = NODINT(LEXT)
To determine the external (LEXT) node number from the internal (LINT) node number,
use the following function call:
LEXT = NODEXT(LINT)
To determine the internal element number MINT from the user (external) element
number MEXT, use the following function call:
MSC.Marc Volume D: User Subroutines and Special Routines
Element Result Database Utility Routine
1-5
Chapter 1 Introduction
MINT = IELINT(MEXT)
To determine the user (external) element number MEXT from the internal number MINT,
use the following function call:
MEXT = IELEXT(MINT)
To determine the coordinate of internal node number LINT and place these coordinates
in array CCNODE, use the following procedure:
include ’dimen’
include ’spacevec’
include ’strvar’
DIMENSION CCNODE(12)
JRDPRE = 0
CALL VECFTC (CCNODE, XORD_D), NCRDMX, NCRD, LINT,JRDPRE, 2, 1)
To determine the total displacement of internal node number LINT and place this data
in array DDNODE, use the following procedure:
include ’dimen’
include ’spacevec’
include ’strvar’
DIMENSION DDNODE(12)
JRDPRE = 0
CALL VECFTC (DDNODE, DSXTS_D), NDEGMX, NDEG, LINT, JRDPRE, 2, 5)
Element Result Database Utility Routine
To facilitate extraction of solution results, it is possible to use the ELMVAR utility
routine. This utility routine can be called from any user subroutine that is within an
element loop. ELMVAR is used in conjunction with the MSC.Marc post element post
codes to return the calculated values to the user.
ELMVAR
is called with the following header:
CALL ELMVAR (ICODE,M,NN,KC,VAR)
where:
ICODE
is the post code.
M
is the user’s element number.
NN
is the integration point number.
KC
is the layer number.
VAR
is the current value(s) of the items requested.
Note: If the user is requesting a tensor, he must make VAR a local array in his user subroutine.
Element Result Database Utility Routine
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
The values of ICODE are given in MSC.Marc Volume C: Program Input in the model
definition section in the POST option. If the ELMVAR utility routine is called from a
subroutine within the element assembly or stress recovery stage, the values of VAR are
the current ones for this iteration. They are not necessarily the converged values.
ELMVAR
can be called from user subroutines:
ANELAS
FLUX
PLOTV
UDAMAG
UMOONY
USHRET
ANEXP
FORCEM
REBAR
UELDAM
UMU
USIGMA
ANKOND
GENSTR
SINCER
UELOOP
UNEWTN
USPCHT
ANPLAS
HOOKLW
TENSOF
UELASTOMER
UOGDEN
UVOIDN
ASSOC
HOOKVI
TRSFAC
UENERG
UPERM
UVOIDRT
CRPLAW
HYPELA
UACTIVE
UEPS
UPOWDR
UVSCPL
CRPVIS
HYPELA2
UACOUS
UFAIL
UPSTRECH
VSWELL
CUPFLX
INTCRD
UADAP
UGENT
URESTR
WKSLP
ELEVAR
NASSOC
UARRBO
UFINITE
URPFLO
YIEL
ELEVEC
NEWSV
UCOMPL
UHTCOE
USELEM
FILM
ORIENT
UCRACK
UHTCON
USHELL
Table 1.1
Example
Suppose the user would like the plastic strain tensor from within the UADAP user
subroutine for a user-defined adaptive meshing criteria. In this example, there are no
shell elements, so KC=1 and the number of integration points per element = 4, so
INTEL=4. The plastic strain tensor is code 321. The plastic strains are stored in a local
array EPTEN. The user could create the following routine:
…
SUBROUTINE UADAP (M,XORD,DSXT,NCRDMX,NDEGMX,LM,NNODE,USER)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XORD(NCRDMX, *),DSXT(NDEGMX, *),LM(*)
DIMENSION EPTEN (6,28)
KC=1
INTEL=4
ICODE=321
DO NN=1,INTEL
CALL ELMVAR(ICODE,M,NN,KC,EPTEN(1,NN))
ENDDO
USER CODE TO DEFINE USER
…
1-6
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
Nodal Results Database Utility Routine
1-7
Chapter 1 Introduction
Nodal Results Database Utility Routine
Nodal values can be extracted from the MSC.Marc database by means of the NODVAR
utility routine. This routine can be called from any user subroutine.
NODVAR
is called with the following header:
CALL NODVAR(ICOD,NODEID,VALNO,NQNCOMP,NQDATATYPE)
where:
Input:
NODEID
ICOD
is the user node number.
is the code of requested quantity:
0 = Coordinates
1 = Displacement
2 = Rotation
3 = External force
4 = External moment
5 = Reaction force
6 = Reaction moment
7 = Fluid velocity
8 = Fluid pressure
9 = External fluid force
10 = Reaction fluid force
11 = Sound pressure
12 = External sound source
13 = Reaction sound source
14 = Temperature
15 = External heat flux
16 = Reaction heat flux
17 = Electric potential
18 = External electric charge
19 = Reaction electric charge
20 = Magnetic potential
21 = External electric current
22 = Reaction electric current
23 = Pore pressure
24 = External mass flux
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
Reaction mass flux
Bearing pressure
Bearing force
Velocity
Rotational velocity
Acceleration
Rotational acceleration
Modal mass
Rotational modal mass
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Tying force*
Coulomb force
Tying moment*
Output:
VALNO**
is the current value of the item requested.
NQNCOMP
is the number of components returned.
* Only available if the corresponding nodal post code has been requested.
** If a vector is requested, VALNO should be an array large enough to hold all NQNCOMP
components of the vector.
1-8
Table Evaluation Routine
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
NQDATATYPE is the type of data returned.
0 = Default
1 = Modal
2 = Buckle
3 = Harmonic real
4 = Harmonic real/imaginary
5 = Harmonic magnitude/phase
* Only available if the corresponding nodal post code has been requested.
** If a vector is requested, VALNO should be an array large enough to hold all NQNCOMP
components of the vector.
See the UPSTNO user subroutine for an example of how this utility can be used.
Table Evaluation Routine
When using the table driven input format, it is often useful to evaluate the value of a
table in a user subroutine. This may be done with user subroutine TABVA2 from many
of the user routines. In particular, it can be done from those routines listed in table 1.1.
This is based on the fact that the value of the independent variable (s) has been defined
in common block CTABLE. In such cases, the evaluation may be obtained by doing
the following:
CALL TABVA2(REFVAL, EVALUE, IDTABLE, 0, 0)
where:
REFVAL
is the reference value
EVALUE
is the valuated value
IDTABLE
is the table id given
The table must have been defined in the input file.
For example, in a cracking problem, one might want to have the strain softening
modulus as a function of the temperature dependent Young’s modulus, which is not
available in user subroutine UCRACK. The following procedure can be used:
subroutine ucrack(scrack,esoft,ecrush,ecp,dt,dtdl,n,nn,kc,
* inc,ndi,nshear,shrfac)
include '../common/implicit'
dimension ecp(*),dt(*),dtdl(*)
c
c
this routine is called at each integration point for those
c
elements that have activated cracking
c
MSC.Marc Volume D: User Subroutines and Special Routines
MATDAT Common Block
1-9
Chapter 1 Introduction
c
scrack
- user defined cracking stress
c
esoft
- user defined strain softening modulus
c
ecrush
- user defined crushing strain
c
ecp
- array of cracking strains at this integration point
c
dt
- array of state variables at the begining of increment
c
dtdl
- array of increment of state variables
c
n
- user element number
c
nn
- integration point number
c
kc
- layer number
c
inc
- increment number
c
ndi
- number of direct components of stress or strain
c
nshear
- number of shear components of stress or strain
c
shrfac
- user defined shear retention factor
c
c
Define reference value (REFVAL) of Young's modulus = 30.e6 psi
c
In input file for this material, table number 1 was associated
c
with Young's modulus of this material, so set IDTABLE=1
c
refval=30.d6
idtable=1
call tabva2(refval,evalue,idtable,0,0)
c
c
c
now set the softening modulus to be 10% of the Young's modulus at
the current temperature
c
esoft=0.1d0*evalue
c
return
end
MATDAT Common Block
The material identification numbers (1,2,3, etc.) for cross-referencing to various
quantities such as TEMPERATURE EFFECTS, WORK HARD, etc., must be used in user
subroutines: ANELAS, HOOKLW, ANPLAS, ANEXP, ANKOND, ORIENT, CRPLAW,
VSWELL, etc. The common block elmcom contains the material identification number
“MATUS” for each material type.
1-10
MATDAT Common Block
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
In addition, the reference values of the material properties as given in the model
definition section can be obtained in common block matdat where:
ET(3)
Young's moduli
XU(3)
Poisson's ratios
RHO
mass density
SHRMOD(3)
shear moduli
COED(3)
coefficient of thermal expansion
YIELD(1)
yield stress
YIELD(2)
ORNL 10th cycle yield stress
YIELD(3)
ORNL reversed plasticity yield stress
YRDR(3)
direct ratio's for Hill anisotropic plasticity
YRSR(3)
shear ratio's for Hill anisotropic plasticity
CONDU(3)
conductivities
SPHT
specific heat
CONDV(3)
resistivity
RHOHT
mass density for heat transfer
EMISV
emissivity
COSTPV
cost per unit volume
COSTPM
cost per unit mass
PERMEAB(3)
magnetic permeability
RELUCT(3)
reluctance
PERMAIR
permeability of air
PERMIT(3)
electrical permittivity
ECOND(3)
electrical conductivity
VISCOSIT
viscosity
TK21
thermal conductivity 21
TK31
thermal conductivity 31
TK32
thermal conductivity 32
R21
electrical resistivity 21
R31
electrical resistivity 31
R32
electrical resistivity 32
C10
Mooney parameter C10
C01
Mooney parameter C01
MSC.Marc Volume D: User Subroutines and Special Routines
CONCOM Common Block
1-11
Chapter 1 Introduction
C11
Mooney parameter C11
C20
Mooney parameter C20
C30
Mooney parameter C30
BULK
bulk modulus (Mooney, Ogden, Arruda-Boyce, Gent)
AMOHR
Amohr
ENTHALPY
Enthalpy
FLPERM(3)
fluid permeability
PHFRAC1
fraction of phase
CHABPR(10)
Chaboche material data
FORMLS
forming limit
FLDEN
fluid density for diffusion
REFTEMPEN
reference temperature for enthalpy
FRCTISO
fraction for isotropic hardening
FLBULK
bulk modulus of fluid in diffusion analysis
POROS
porosity
FLPERM2(3)
fluid permeability (21, 31, 32)
OGMU
reference
OGBETA
µ (Odgen or Foam)
reference α (Ogden or Foam)
reference β (Foam)
VSCDEVTRM
reference deviatoric relaxation time
VSCVOLTRM
reference volumetric relaxation time
VSCFUNCT(9)
reference viscoelastic values
WGTMOL
molecular weight
OGALPHA
CONCOM Common Block
Two common blocks might be particularly useful for advanced usage in MSC.Marc.
Common block concom contains most of the program controls in MSC.Marc. The
variables and their meaning are given below. Unless otherwise indicated, if the
variable has a value of zero, it is false, and a value of one indicates true.
1
iacous
acoustic analysis
2
iasmbl
reassemble stiffness matrix
3
iautth
auto therm or auto therm creep
1-12
CONCOM Common Block
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
4
ibear
hydrodynamic bearing
5
icompl
complex harmonic analysis
6
iconj
EBE iterative solver
7
icreep
explicit creep
8
ideva(32)
debug print flags
9
idyn
dynamic analysis type (0, 1, 2, 3, 4, 5) based on the
DYNAMIC parameter.
10
idynt
permanent dynamic analysis type (0, 1, 2, 3, 4, 5)
11
ielas
elastic reanalysis or Fourier
12
ielcma
flag to indicate this pass is a electromagnetic analysis (0,1,2)
13
ielect
flag to indicate this pass is a electrostatic analysis
14
iform
contact
15
ifour
Fourier
16
iharm
harmonic analysis
17
ihcps
thermal-mechanical or thermal-Joule-mechanical
coupled analysis
18
iheat
flag to indicate this pass is heat transfer analysis
19
iheatt
flag to indicate that a heat transfer is performed in this job
20
ihresp
indicate that currently in a harmonic subincrement
21
ijoule
flag to indicate that Joule heating is performed in this job
22
ilem
indicates in which part of element assembly
23
ilnmom
indicates whether a coupled soil analysis (0,1,2)
24
iloren
DeLorenzi calculation required
25
inc
increment number
26
incext
creep extrapolation
27
incsub
subincrement number
28
ipass
pass number for coupled analysis
ipass = 1 stress pass
= 2 heat transfer
= 3 fluids
= 4 electrical pass in Joule heating
= 5 diffusion
= 6 electrostatics
= 7 magnetostatics
= 8 electromagnetics
29
iplres
dynamic, buckling or heat transfer second global
matrix required
MSC.Marc Volume D: User Subroutines and Special Routines
CONCOM Common Block
1-13
Chapter 1 Introduction
30
ipois
Poisson analysis for this pass
31
ipoist
Poisson flag for this job
32
irpflo
Eulerian - rigid plastic flow
33
ismall
small displacement analysis for this pass
34
ismalt
small displacement flag for this job
35
isoil
soil analysis
36
ispect
spectrum response
37
ispnow
perform spectrum response now
38
istore
update stress strain information.
39
iswep
currently performing eigenvalue extraction
40
ithcrp
thermal creep analysis
41
itherm
temperature dependent properties are present
42
iupblg
follower force
43
iupdat
update Lagrange
44
jacflg
Lanczos eigenmethod
45
jel
elastic increment
46
jparks
Fracture mechanics by Park method
47
largst
finite strain
48
lfond
distributed vs foundation flag
49
loadup
nonlinearity has occurred
50
loaduq
nonlinearity has occurred
51
lodcor
load correction is activated
52
lovl
overlay indicator
1 - Memory Allocation
2 - Model Definition Input
3 - Distribute Load
4 - Stiffness Matrix
5 - Solver
6 - Stress Recovery
7 - Output
8 - Operator Assembly
13 - History Definition Input
14 - Mass Matrix
15 - Fluid-Solid
16 - Fluid- Solid
17 - Vector Transformations
20 - Rezoning
21 - Convergence Testing
22 - Lanczos
23 - Global Adaptive Meshing
53
lsub
flag to indicate which part of calculation
54
magnet
flag to indicate this pass is magnetostatic
55
ncycle
cycle number
1-14
CONCOM Common Block
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
56
newtnt
permanent Newton-Raphson flag (0, 1, 2, 3, 8). See the
CONTROL option.
57
newton
Newton-Raphson flag for this pass (0, 1, 2, 3, 8)
58
noshr
transverse shears included
59
linear
storage of betas, etc.
60
ivscpl
viscoplastic
61
icrpim
implicit creep
62
iradrt
radial return
63
ipshft
control on inclusion of initial stress terms (0, 1, 2, 3, 4). See
the CONTROL option.
64
itshr
transverse shear
65
iangin
orientation angle
66
iupmdr
update-anisotropy flag
67
iconjf
sparse conjugent gradient solver
68
jincfl
not used
69
jpermg
indicates that permanent magnets are included
70
jhour
indicates that there are some reduced integration with
hourglass control elements
71
isolvr
solver flag (o, 2, 4, 6, 8). See the SOLVER option.
72
jritz
indicates that Ritz vectors are used in eigenvalue analysis
73
jtable
flag indicates that tables are used for boundary conditions
74
jshell
indicates presence of shell elements
75
jdoubl
indicates that double eigenvalue extraction is used with
Inverse Power Sweep method
76
jform
not used
77
jcentr
internal flag
78
imini
reduced storage flag for the ELASTIC parameter
79
kautth
flag used in the AUTO THERM option
80
iautof
flag indicating that global adaptive meshing is active
81
ibukty
convergence problem with buckling flag
82
iassum
assumed strain flag
83
icnstd
constant dilatation flag
84
icnstt
not used
85
kmakmas
recalculate mass matrix flag
86
imethvp
implicit viscoplastic procedure
MSC.Marc Volume D: User Subroutines and Special Routines
CONCOM Common Block
1-15
Chapter 1 Introduction
87
iradrte
flag for large strain elastic material
88
iradrtp
radial return flag for plastic material
89
iupdate
updated Lagrange flag for elastic material
90
iupdatp
updated Lagrange flag for elastic-plastic material
91
ncycnt
number of times the increment restarted with the first iteration
in automatic procedures. This variable is used to stop the
analysis with exit 3008 if it becomes to high to prevent infinite
loop in the program.
92
marmen
= 0 if MSC.Marc used for normal analysis
= 1 if MSC.Marc used as reader via MSC.Marc Mentat
93
idynme
implicit dynamic analysis
= 0 for Newmark-beta
= 1 for Single Step Houbolt (SSH)
94
ihavca
= 0 if Cauchy stresses not stored separately
= 1 if Cauchy stresses stored separately
95
ispf
Super Plastic Forming analysis
96
kmini
used for minimizing memory headed for element quantities if
fast elastic-plastic material libraries of AutoForge are used
97
imixed
flag set to 1 in a Rigid Plastic analysis if some part of the
material in the model has elasto-plastic material behavior
98
largtt
flag to preserve finite strain plasticity flag for the elasto-plastic
part of the model while doing the rigid-plastic part
99
kdoela
flag to trigger assembly in elastic analysis
100
iautofg
flag for analysis with MSC.SuperForm
101
ipshftp
flag to save the control for inclusion of the initial stress matrix
ipshft during automatic increment restart feature
102
idntrc
variable to indicate that the end of an automatic load stepping
could not be reached within specified number of increments.
The program stops with exit number 3003
103
ipore
flag to indicate this pass is a diffusion analysis (not active
in 2003)
104
jtablm
flag to indicate that tables are to be used for
material properties
105
jtablc
flag to indicate that tables are to be used for the
CONTACT option
106
isnecma
flag to indicate expanded film capabilities (not active in 2003)
107
itrnspo
flag to indicate steady state transport loadcase
1-16
CONCOM Common Block
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
108
imsdif
flag to indicate this pass is a diffusion analysis (not active
in 2003)
109
jtrnspo
flag to indicate SS-ROLLING analysis
110
mcnear
flag to indicate that near thermal contact behavior is included
between two bodies
111
imech
flag to indicate this pass is a mechanical analysis
112
imecht
flag to indicate that mechanical analysis will be performed in
this job
113
ielcmat
flag to indicate electromagnetic analysis will be performed in
this job
114
ielectt
flag to indicate electrostatic analysis will be performed in
this job
115
magnett
flag to indicate magnetostatic analysis will be performed in
this job
116
imsdift
flag to indicate diffusion analysis will be performed in this job
117
noplas
flag to indicate no material nonlinearity - reduce
memory requirements
118
jtabls
flag to indicate that tables are to be used for the
SPRINGS option
119
jactch
flag to indicate elements have been activated or deactivated
120
jtablth
flag to indicate that tables are to be used for the
GEOMETRY option
121
kgmsto
= 1 store geometry in old format,
= 2 store geometry based on geometry id
122
jpzo
flag to indicate piezoelectric analysis
123
ifricsh
flag to indicate that nodal based friction used
124
iremkin
flag to indicate gradual removal of kinematic boundary
condition (table driven input)
125
iremfor
flag to indicate gradual removal of reaction force (table
driven input)
126
ishearp
flag to indicate that shear panel elements are in the model
127
jspf
= 1 first increment of superplastic analysis
128
machining
flag to indicate that machining option is active
129
jlshell
flag to indicate that shells are present
130
icompsol
indicates the presence of composite solids in the mesh
131
iupblgfo
follower force point loads used
132
jcondir
contact priority is used
MSC.Marc Volume D: User Subroutines and Special Routines
ELMCOM Common Block
1-17
Chapter 1 Introduction
133
nstcrp
variable to indicate type of tangent in the implicity Maxwell
Creep model or implicity viscoplastic creep model (0=elastic,
1= secant and 22 radial return)
134
nactive
number of active physics
135
ipassref
default physics type
136
nstspnt
not used
137
ibeart
permant flag for hydrodynamic bearing
138
icheckmpc
indicate if check mpc is activated
139
noline
deactivate iterative contact if increment almost complete
ELMCOM Common Block
In subroutines that are within an element loop, information about a particular element
can be found in common block elmcom. The variables in common block elmcom and
their meaning are as follows:
1
ianels
anisotropy flag
2
ianiso
anisotropy flag
3
irebar
rebar element flag
4
icolps
indicates collapsed element
5
icomps
composite
6
icrack
cracking
7
ictrns
no longer used
8
idamag
damage
9
ianmat
anisotropic elastic constants given in input
10
igenpl
generalized plasticity
11
iherr
Herrmann element (0, 1, 2)
0 - not Herrmann element
1 - higher-order Herrmann element
2 - lower-order Herrmann element
12
intel
number of integration points
13
intin
integration point number if centroid
14
intpre
number of integration points for distributed
15
iort
curvilinear coordinates
16
ipela
hypoelastic
17
irheol
thermal rheologically simple
1-18
ELMCOM Common Block
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
18
ishell
shell
19
isnte
integration point number if centroid
20
isotrp
elastic material
21
ityp
internal element type
22
iupcls
-3, -2, -1, 0 - No updated Lagrange for this element type
1 - supports updated Lagrange
2 - supports updated Lagrange; results given with respect to
convected coordinate system
3 - supports updated Lagrange; results given with respect to
curvilinear convected coordinate system
23
ivisc
Kelvin viscoelastic flag
24
ivisel
Hereditary integral viscoelastic flag
25
jcamcl
Cam Clay model
26
jhip
powder model
27
joakr
Oak Ridge model
28
joakrm
Type of Oak Ridge model
29
jogden
Ogden
30
jsoil
Soil
31
jtype
element type
32
jviscp
viscoplastic
33
jvisel
hereditary integral viscoelastic
34
kinhrd
kinematic hardening
35
lbend
pipe bend
36
lclass
element class
0 - pipe element
1 - truss element
2 - shell
3 - none
4 - plane stress
5 - plane strain
6 - generalized plane strain
7 - axisymmetric solid
8 - 3D solid
9 - Fourier element
10 - axi with twist
11 - axisymmetric shell
12 - open section beam
13 - closed section beam
14 - membrane
15 - gap
37
lheat
heat transfer element
38
lnoint
no integration points
39
lrebar
rebar element
40
matno
material or composite id
41
mats
internal material id (see matus in this common block for user
material id)
MSC.Marc Volume D: User Subroutines and Special Routines
ELMCOM Common Block
1-19
Chapter 1 Introduction
42
mohrc
Mohr-Coulomb (0, 1, 2)
0 - not Mohr-Coulomb
1 - linear Mohr-Coulomb
2 - quadratic Mohr-Coulomb
43
mooney
Mooney
44
mroz
Mroz - not supported
45
ncrdel
number of coordinates
46
ndegel
number of degrees of freedom
47
ndi
number of direct components
48
ngenel
number of generalized strains
49
nnode
number of nodes
50
nomid
mid-increment not used
51
noniso
anisotropic
52
kkdum1
dummy
53
nregs
pointer to transverse shear
54
nshear
number of shears
55
nstran
number of strains
56
ntshr
number of transverse shears
57
ipgrcr
progressive cracking
58
ngens
number of generalized strains
59
jparel
element running in parallel mode
60
jhoure
this element is a reduced integration element with
hourglass control
61
jfoam
foam model
62
nnodg
number of nodes per element, excluding extra nodes for
Herrmann and generalized plane strain
63
nstrm1
number of stresses stored per section point
64
nstrm2
number of stress points stored per integration point (layers for
shell elements, cross-section point for beam elements, 1 for
continuum elements
65
irpfle
control flag whether this element needs rigid plastic analysis
(irpfle = 1) or not (irpfle = 0)
66
jpowlw
control flag for various work hardening models
= 1 power law
= 2 rate power law
= 3 Not Available
= 4 Johnson-Cook
1-20
BCLABEL Common Block
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
67
jhamlt
not used
68
jyada
flag to use Yada grain size model (jyada = 1) or not (jyada = 0)
69
jintel
integration points to store stresses (jintel = intel except for the
CENTROID parameter when jintel = 1)
70
jvarcon
not used
71
jthpor
pyrolysis model (not available in 2003)
72
iphase
phase number
73
lphase
flag indicating this material has multiple phases
74
igasket
gasket material group number
75
ipreten
cross-section number to which this element belongs
76
ilinel
linear elastic material
77
idgeom
geometry id for this element
78
lmbody
body number of element only valid in stiffness, mass,
and recovery
79
ipiezo
= 1 stress based piezoelectric element
= 2 strain based piezoelectric element
80
jcompsol
flag indicating element is a composite continuum
81
jshapemem
flag indicating shape memory material
82
intstf
number of integration points for stiffness matrix evaluation
83
jgnstr
flagged to 1 for generalized composite shells
84
matus(2)
two-term array for user material id and internal material id
matus(1) = user material id
matus(2) = internal material id, same as mats
BCLABEL Common Block
When using the table driven input format, it is often useful to know the loadcase name
and/or the boundary condition name in a user subroutine. The loadcase name is
available in all user subroutines and the boundary condition name is available in the
user subroutines:
FORCEM
UVELOC
FORCDT
USINC
FLUX
INITPO
NEWSV
NEWPO
UFILM
INITSV
MSC.Marc Volume D: User Subroutines and Special Routines
BCLABEL Common Block
1-21
Chapter 1 Introduction
UFOUND
USINKPT
USESTR
This information can be obtained by including the common block BCLABEL in the user
subroutine. Then one obtains:
LDCASENAME
loadcase name
BCNAME
boundary condition name
Both are character variables of length 32. For example, if a pressure on different parts
of the model is different and dependent on the loadcase, and if the boundary condition
is applied to a curve, adaptive meshing is used and the element numbers are unknown.
Given boundary condition names load 1 and load 2, and loadcases names early and
late, one could implement:
subroutine forcem(press,th1,th2,nn,n)
include '../common/implicit'
include '../common/bclabel'
common/lpres3/prnorm(3)
dimension n(7)
c* * * * * *
c
c
defined non-uniformed distributed force on an element.
c
c
press
c
distributed load increment magnitude
if follower force then give total magnitude
c
th1
coordinate
c
th2
coordinate
c
nn
integration point number
c
n(1)
user element number
c
n(2)
parameter identifying the type of load
c
n(3)
is the integration point number
c
n(4)
not used
c
n(5)
is the distributed load index
c
for 2005+ input format this is the boundary condition
id
c
c
n(6)
=0 if conventional pressure
=1 if user returns 2 or 3 components for pressure
1-22
BCLABEL Common Block
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 1 Introduction
c
c
in global direction
n(7)
is the internal element number
c
c
c
for distributed load in a given direction
prnorm
is the direction cosine of the direction of the load
c
with respect to the global system
c
c* * * * * *
if(ldcasename.eq.'early') then
if(bcname.eq.'load1') then
press=
elseif(bcname.eq.'load2') then
press=
else
write(6,101) n(1),nn,ldcasename,bcname
endif
elseif(ldcasename.eq.'late') then
if(bcname.eq.'load1') then
press=
elseif(bcname.eq.'load2') then
press=
else
write(6,101) n(1),nn,ldcasename,bcname
endif
else
write(6,101) n(1),nn,ldcasename,bcname
endif
101
format(/,'*** warning - forcem for element ',i10,
*
' integration point',i4,' for loadcase ',a,
*
' boundary condition ',a,' is not coded')
return
end
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
List
CHAPTER
2
User-defined Loading, Boundary
Conditions, and State Variables
User Subroutines List
User Subroutine
Page
CREDE .
CUPFLX .
........................................................
........................................................
2-50
2-18
DIGEOM.
........................................................
2-70
FILM . . .
FLOW . .
FLUX . . .
FORCDF
FORCDT
FORCEM
........................................................
........................................................
........................................................
........................................................
........................................................
........................................................
2-35
2-37
2-12
2-31
2-22
2-7
MSC.Marc Volume D: User Subroutines and Special Routines
2-ii
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines List
User Subroutine
GAPT .
..........................................................
INITPL .
INITPO .
INITSV .
Page
2-44
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-104
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-105
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-52
MOTION (2-D)
MOTION (3-D)
NEWPO .
NEWSV .
....................................................
....................................................
2-60
2-62
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-106
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-53
SEPFOR . . .
SEPFORBBC
SEPSTR . . . .
.....................................................
.....................................................
.....................................................
UCAV . . . . . . .
UCONTACT . .
UFILM . . . . . .
UFORMS . . . .
UFOUND . . . .
UFOUR . . . . .
UFRIC . . . . . .
UFRICBBC . . .
UGROWRIGID
UHTCOE . . . .
UHTCON . . . .
UHTNRC . . . .
UINSTR . . . . .
UMDCOE . . . .
UMDCON . . . .
UMDNRC . . . .
UNORST . . . .
UOBJFN . . . . .
UREACB . . . .
USDATA . . . . .
USINC . . . . . .
USINKPT . . . .
USSD . . . . . . .
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
....................................................
2-71
2-73
2-75
2-108
2-101
2-41
2-45
2-39
2-20
2-66
2-68
2-65
2-76
2-79
2-81
2-19
2-91
2-94
2-96
2-98
2-110
2-107
2-57
2-56
2-43
2-55
MSC.Marc Volume D: User Subroutines and Special Routines
2-iii
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines List
User Subroutine
UTIMESTEP .
UVELOC . . .
UVTCOE . . .
UVTCON . . .
UVTNRC . . .
UWELDFLUX
UWELDPATH
.....................................................
.....................................................
.....................................................
.....................................................
.....................................................
.....................................................
.....................................................
Page
2-58
2-59
2-84
2-87
2-89
2-14
2-16
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User
CHAPTER
2
User-defined Loading, Boundary
Conditions, and State Variables
User Subroutines
Subroutines
The user subroutines described in this chapter provide an alternative to the standard
input file for providing data in the analysis. Many problems have complex boundary
conditions due to their spatial variation (such as wind loads) or due to their temporal
variation. These routines provide a powerful mechanism to define this behavior in a
simple manner. Table 2-1 summarizes these routines and indicates what parameters or
model definition options are required to invoke the user subroutine.
MSC.Marc Volume D: User Subroutines and Special Routines
2-2
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Table 2-1
User-defined Loading, Boundary Conditions, State Variables User
Subroutine Requirements
User
Subroutine
Required Parameters or
Model Definition Options
Purpose
CREDE
THERMAL LOADS
Definition of state variable including temperature.
CUPFLX
COUPLE
DIST FLUXES (flux type 101)
Heat generated due to inelastic behavior in
coupled analysis.
DIGEOM
CONTACT (2-D)
CONTACT (3-D)
Table 3-9, “User Subroutines for
Contact Problems”
Definition of rigid surface.
FILM
HEAT or COUPLE
FILMS (Model Definition)
FILMS (History Definition)
Definition of convective heat transfer coefficient and
sink temperature.
FLOW
HEAT
CHANNEL
Definition of mass flow rate.
FLUX
DIST FLUXES (Model Definition)
DIST FLUXES (History Definition)
DIST CURRENT (Joule)
DIST MASS (Diffusion)
DIST CHARGES
DIST CURRENT (Diffusion)
DIST SOURCES (Acoustics)
Definition of nonuniform flux input.
FORCDF
FORCDT
FIXED DISP or
DISP CHANGE
Definition of point load or kinematic boundary
condition in a harmonic analysis.
FORCDT
FORCDT
FIXED DISP or DISP CHANGE
FIXED TEMPERATURE or
TEMP CHANGE
Definition of point load or prescribed displacement in
stress analysis. Definition of point flux or prescribed
temperature in heat transfer analysis.
FORCEM
DIST LOADS (Model Definition)
Definition of distributed load.
GAPT
HEAT
CONRAD GAP
Definition of thermal contact gap temperature.
INITPL
INITIAL PLASTIC STRAIN
Definition of initial plastic strain.
INITPO
PORE
INITIAL PORE
Definition of initial pore pressure in a uncoupled
soil analysis.
INITSV
INITIAL STATE
Definition of initial values of state variables.
MSC.Marc Volume D: User Subroutines and Special Routines
2-3
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Table 2-1
User-defined Loading, Boundary Conditions, State Variables User
Subroutine Requirements (Continued)
User
Subroutine
Required Parameters or
Model Definition Options
Purpose
MOTION (2-D) CONTACT (2-D)
Table 3-9, “User Subroutines for
Contact Problems”
UMOTION
MOTION CHANGE (History Definition)
Definition of velocity of rigid surfaces.
MOTION (3-D) CONTACT (3-D)
Table 3-9, “User Subroutines for
Contact Problems”
UMOTION
MOTION CHANGE (History Definition)
Definition of velocity of rigid surfaces.
NEWPO
PORE
CHANGE PORE (Model Definition)
CHANGE PORE (History Definition)
Change pore pressure in an uncoupled soil analysis.
NEWSV
CHANGE STATE (Model Definition)
CHANGE STATE (History Definition)
Change value of the state variable.
SEPFOR
CONTACT (2-D)
CONTACT (3-D)
Table 3-9, “User Subroutines for
Contact Problems”
Definition of force required for separation.
SEPFORBBC
CONTACT (2-D)
CONTACT (3-D)
CONTACT TABLE
Definition of the separation force for beam-to-beam
contact.
SEPSTR
CONTACT (2-D)
CONTACT (3-D)
Table 3-9, “User Subroutines for
Contact Problems”
Definition of stress required for separation.
UCAV
CAVITY (Parameter)
Allows definition of the pressure load for internal
CAVITY (Model Definition)
cavities
DIST LOADS (model definition and
history definition)
UCONTACT
CONTACT (2-D)
CONTACT (3-D)
Table 3-9, “User Subroutines for
Contact Problems”
UCONTACT
Allows user-defined contact procedure.
UFILM
FILMS
TABLE
Facilitates the inclusion of nonuniform convective
coefficients and sink temperatures for the calculation
of convection or radiation boundary conditions.
MSC.Marc Volume D: User Subroutines and Special Routines
2-4
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Table 2-1
User-defined Loading, Boundary Conditions, State Variables User
Subroutine Requirements (Continued)
User
Subroutine
Required Parameters or
Model Definition Options
Purpose
UFORMS
TYING
Definition of user-defined constraint matrices.
UFOUND
FOUNDATION
TABLE
Permits the introduction of nonlinear spring
constants and input of nonlinear damping for
dynamics or harmonics.
UFOUR
FOURIER
Definition of function giving nonuniform variation
about the circumference in Fourier analysis.
UFRIC
CONTACT (2-D)
CONTACT (3-D)
Table 3-9, “User Subroutines for
Contact Problems”
UFRICTION
Definition of friction coefficient.
UFRICBBC
CONTACT (2-D)
CONTACT (3-D)
UFRICTION
Definition of variable friction coefficients for beam-tobeam contact.
UGROWRIGID UMOTION
Changes the size of a rigid body during the analysis
UHTCOE
CONTACT (2-D)
CONTACT (3-D)
Table 3-9, “User Subroutines for
Contact Problems”
UHTCOEF
Definition of heat transfer coefficient to environment
for coupled contact analysis.
UHTCON
CONTACT (2-D)
CONTACT (3-D)
Table 3-9, “User Subroutines for
Contact Problems”
UHTCON
Definition of heat transfer coefficient between bodies
in contact in coupled analysis.
UHTNRC
CONTACT (2-D)
CONTACT (3-D)
COUPLE
UHTCON
Definition of thermal near contact film coefficient.
UINSTR
ISTRESS
Definition of initial stress.
UMDCOE
CONTACT
DIFFUSION
UHTCOEF
Definition of variable mass diffusion coefficients and
sink pressure on free surfaces.
UMDCON
CONTACT
DIFFUSION
UHTCON
Definition of variable mass diffusion coefficients of
surfaces that are in contact with other surfaces.
MSC.Marc Volume D: User Subroutines and Special Routines
2-5
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Table 2-1
User-defined Loading, Boundary Conditions, State Variables User
Subroutine Requirements (Continued)
User
Subroutine
Required Parameters or
Model Definition Options
Purpose
UMDNRC
UHTCON
CONTACT
THERMAL CONTACT
CONTACT TABLE
Definition of mass diffusion coefficients between
surfaces almost in contact.
UNORST
CONTACT (2-D)
CONTACT (3-D)
Table 3-9, “User Subroutines for
Contact Problems”
USER
Definition of normal stress for user elements
in contact.
UOBJFN
DESIGN OPTIMIZATION
DESIGN OBJECTIVE
Allows definition of the objective function and its
gradient for design optimization analysis using the
current values of the design variables.
UREACB
CONTACT (2-D)
CONTACT (3-D)
Definition of reactive boundary coefficients in an
Acoustic Harmonic Analysis
USDATA
USDATA
Definition of user-definer constants.
USINC
INITIAL DISP
INITIAL VEL
INITIAL TEMP
Definition of initial displacement, initial velocity,
or temperature.
USINKPT
FILMS (model definition option)
Changes the sink point temperatures as a function
of time.
USSD
DYNAMIC CHANGE
RESPONSE SPECTRUM
Definition of spectrum displacement
density function.
UTIMESTEP
AUTO STEP
Definition of input for user-defined time step.
UVELOC
HEAT
Definition of convective velocities.
UVTCOE
JOULE
CONTACT (2-D)
CONTACT (3-D)
UHTCOEF
Definition of environment electrical film coefficient.
UVTCON
JOULE
CONTACT (2-D)
CONTACT (3-D)
UHTCOEF
Definition of contact electrical film coefficient.
UVTNRC
JOULE
CONTACT (2-D)
CONTACT (3-D)
UHTCON
Definition of electrical near contact film coefficient.
MSC.Marc Volume D: User Subroutines and Special Routines
2-6
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Table 2-1
User-defined Loading, Boundary Conditions, State Variables User
Subroutine Requirements (Continued)
User
Subroutine
Required Parameters or
Model Definition Options
Purpose
UWELDFLUX
HEAT or COUPLE
WELD FLUX (Model /History
Definition)
WELD PATH (Model / History
Definition Option)
Definition of distributed welding flux.
UWELDPATH
HEAT or COUPLE
WELD PATH (Model / History
Definition)
WELD FLUX (Model / History
Definition)
Definition of weld path to be followed by a distributed
welding flux.
MSC.Marc Volume D: User Subroutines and Special Routines
FORCEM
2-7
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ FORCEM
Input of Nonuniform Distributed Loads
Description
This user subroutine allows input of nonuniform distributed loads. This user
subroutine can be used to specify the load magnitude as a function of coordinate
position and/or time.
The FORCEM user subroutine is called during the calculation of the equivalent nodal
loads, at each integration point needed to calculate the loads specified in the DIST
LOADS option regardless of the use of the ALL POINTS or CENTROID parameters.
When not using table driven input option, the use of this user subroutine is flagged by
the appropriate load type in the DIST LOADS input option where the type chosen
depends on the element type (see MSC.Marc Volume B: Element Library). When
using table driven input format, directly specify if the user subroutine is invoked on
the DIST LOADS option.
For three-dimensional magnetostatic analysis, this user subroutine allows surface or
body currents to be specified as functions of time, potential, or position. The use of
this user subroutine is flagged by the appropriate current type in the DIST CURRENT
input option. For two-dimensional magnetostatic analysis, use the FLUX
user subroutine.
Format
The definitions in FORCEM depend on the element dimensionality as follows:
For two-dimensional elements:
SUBROUTINE FORCEM (P,X1,X2,NN,N)
IMPLICIT REAL *8 (A-H, O-Z)
COMMON/LPRES3/PRNORM (3)
DIMENSION N(7)
user coding
RETURN
END
2-8
MSC.Marc Volume D: User Subroutines and Special Routines
FORCEM
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
where:
Input:
X1
is the first coordinate of the integration point.
X2
is the second coordinate of the integration point.
NN
is the integration point number.
N(1)
is the element number.
N(2)
is the parameter identifying the type of load.
N(3)
is the integration point number.
N(4)
is not used.
N(5)
is the distributed load index.
N(6)
is not used.
N(7)
is the internal element number.
Required Output:
is the magnitude of the distributed load to be defined by the user at the
integration point being evaluated.
P
When using Nastran like CID loads, it is possible to specify the direction of the load
though the array prnorm.
For three-dimensional elements and shell element types 22, 49, 72, 75, 138, 139, and
140, the required headers are:
SUBROUTINE FORCEM (P,X1,X2,NN,N)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION X1(3), X2(3), N(7)
where:
Input:
X1(3)
is the (x,y,z) position of the integration point.
NN
is the integration point number.
N(1)
is the element number.
N(2)
is the parameter identifying the type of load.
N(3)
is not used.
N(4)
is not used.
N(5)
is the distributed load index.
Required Output:
P
is the magnitude of the distributed load at this point to be defined by the user. In
cases where a direction is also needed (shell or beam elements).
X2(3)
is the vector describing direction of load.
MSC.Marc Volume D: User Subroutines and Special Routines
FORCEM
2-9
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Non Table Driven Input
Load Control
User Supplies
AUTO LOAD
AUTO LOAD with FOLLOW FOR
INCREMENTAL PRESSURE
PRESSURE END OF INCREMENT
AUTO STEP
AUTO STEP with FOLLOW FOR
INCREMENTAL PRESSURE
PRESSURE END OF PERIOD
AUTO INCREMENT (include common
block AUTOIN)
AUTO INCREMENT with FOLLOW FOR
(include common block AUTOIN)
PRESSURE END OF PERIOD
PRESSURE END OF PERIOD (KPPASS = 1)
PRESSURE BEGINING of INCREMENT
(KPPASS = 2)
COMPLEX HARMONIC ANALYSIS
(include common block HARMON)
REAL COMPONENT OF PRESSURE
(IHPASS =1)
IMAGINARY COMPONENT OF PRESSURE
(IHPASS = 2)
Table driven input
Load Control
User Supplies
AUTO LOAD
PRESSURE END OF INCREMENT
AUTO STEP
PRESSURE END OF PERIOD
AUTO INCREMENT (common block
AUTOIN)
PRESSURE END OF PERIOD (KPPASS = 1)
PRESSURE BEGINING of INCREMENT
(KPPASS = 2)
COMPLEX HARMONIC ANALYSIS
(include common block HARMON)
REAL COMPONENT OF PRESSURE
(IHPASS =1)
IMAGINARY COMPONENT OF PRESSURE
(IHPASS = 2)
The FORCEM user subroutine is called twice per increment when AUTO INCREMENT
and FOLLOW FOR are used together in the analysis. The value of KPPASS is available
in the common block AUTOIN which must be included in all analysis using AUTO
INCREMENT and the FORCEM user subroutine.
2-10
MSC.Marc Volume D: User Subroutines and Special Routines
FORCEM
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
For harmonic analysis with complex damping, the FORCEM user subroutine is called
two times per integration point for each harmonic sub-increment. The call number is
identified by the variable IHPASS which is available in the common block HARMON. For
IHPASS = 1, the real component of the pressure should be input while for IHPASS = 2,
the imaginary component of the pressure should be input.
The reading of data is not recommended in FORCEM since this user subroutine is in
the recycling loop for nonlinear analysis, and the user cannot know how many times
per increment it is called.
Note: When FORCEM is used to specify the “incremental pressure” (see above table) in
conjunction with a stepping procedure that supports cut-backs, it is necessary that the
pressure be specified as a function of time using the variables CPTIM and/or TIMINC
available in common block CREEPS. This ensures that correct loads are applied even if the
time step is reduced within an increment due to cut-backs.
Examples
It is often useful to have the distributed load vary with time in a dynamic analysis. To
obtain the current time and increment of time add:
include ’creeps’
where:
CPTIM
is the time at the beginning of the increment
TIMINC
is the increment of time.
are variables in this common block.
To obtain transient time corresponding to heat transfer analysis where temperatures
are read in using the CHANGE STATE/AUTO THERM option, add:
include ’heattm’
where:
CUTIME
is transient time at the beginning of the current increment from the heat
transfer analysis.
DUTIME
is the time increment during the current increment from the heat
transfer analysis.
To obtain the increment number add:
include ’concom’
where:
INC
is the current increment number.
MSC.Marc Volume D: User Subroutines and Special Routines
FORCEM
2-11
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
In the example shown below, a beam is given a linearly varying distributed load.
MAX
P ( X ) = X *  -------------
 LEN 
0 ≤ X ≤ LEN
where LEN is the length of the beam and MAX is the load intensity at X = LEN .
The resulting user subroutine is as follows:
SUBROUTINE FORCEM (P,X1,X2,NN,N)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION N(7)
REAL LEN,MAX
MAX =
LEN =
P = X1* MAX/LEN
RETURN
END
2-12
MSC.Marc Volume D: User Subroutines and Special Routines
FLUX
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ FLUX
Input of Nonuniform Fluxes
Description
For heat transfer analysis, this user subroutine allows surface or body fluxes to be
specified as functions of time, temperature, or position. When not using the table
driven input format, the use of this user subroutine is flagged by the appropriate flux
type in the DIST FLUXES input option where the type chosen depends on element type
(see MSC.Marc Volume B: Element Library). When using table driven input format,
directly specify if the user subroutine is invoked.
This user routine may be used for other Poisson type problems such as Joule heating
(DIST CURRENT), diffusion (DIST MASSES), electrostatic (DIST CHARGES),
magnetostatic (DIST CURRENT), or acoustic (DIST SOURCES).
Format
User subroutine FLUX is written with the following headers:
SUBROUTINE FLUX(F,TS,N,TIME)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION TS(6), N(7)
user coding
RETURN
END
where
F
is the surface or volumetric flux, to be defined at this
integration point in this user subroutine.
TS(1)
is the estimated temperature at the end of the increment.
TS(2)
is the current values of the area under the volumetric flux
versus time curve, that is,
∫o Qdt . This total includes all
t
uniform and nonuniform volumetric fluxes.
TS(3)
is the temperature at the beginning of the increment.
TS(4), TS(5), TS(6)
are the integration point coordinates.
N(1)
is the element number.
N(2)
is the parameter identifying the type of flux.
N(3)
is the integration point number.
MSC.Marc Volume D: User Subroutines and Special Routines
FLUX
2-13
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
N(4)
is the flux index.
N(5)
is not used.
N(6)
1 - heat transfer.
2 - joule.
3 - bearing.
4 - electrostatic.
5 - magnetostatic.
6 - acoustic.
8 - diffusion.
N(7)
is the internal element number.
TIME
is the current time.
This user subroutine is called at each time step for each integration point and element
listed with an appropriate flux type in the DIST FLUXES or similar input option.
The reading of data is not recommended in FLUX since this user subroutine is in the
recycling loop, and the user cannot know how many times per increment it is called.
2-14
UWELDFLUX
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UWELDFLUX
Input of User Defined Welding Flux
Description
For heat transfer analysis, this user subroutine allows surface or body welding fluxes
to be specified as functions of time, temperature, or position. The use of this user
subroutine is flagged by the appropriate flux type in the WELD FLUX input option
where the type chosen depends on element type (see MSC.Marc Volume B:
Element Library).
Format
User subroutine UWELDFLUX is written with the following headers:
SUBROUTINE UWELDFLUX(F,TEMFLU, MIBODY, WELDDIM,TIME)
INCLUDE ’../COMMON/IMPLICIT’
DIMENSION MIBODY(*),TEMFLU(*),WELDDIM(*)
user coding
RETURN
END
where
Input:
TEMFLU(1)
integration point coordinate in local X direction (along Weld
Width Direction).
TEMFLU(2)
integration point coordinate in local Y direction (along Weld
Depth Direction).
TEMFLU(3)
integration point coordinate in local Z direction (along Weld
Path Direction).
TEMFLU(4)
integration point coordinate in global X direction.
TEMFLU(5)
integration point coordinate in global Y direction.
TEMFLU(6)
integration point coordinate in global Z direction.
MIBODY(1)
user element number.
MIBODY(2)
distributed flux type.
MIBODY(3)
integration point number.
MSC.Marc Volume D: User Subroutines and Special Routines
UWELDFLUX
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
MIBODY(4)
weld flux index.
WELDDIM(1)
weld width.
WELDDIM(2)
weld depth.
WELDDIM(3)
weld forward length.
WELDDIM(4)
weld rear length.
TIME
time at end of increment.
2-15
Required Output:
F
is the surface or volumetric welding flux to be defined at this
integration point in this user subroutine.
This user subroutine is called at each time step for each integration point and element
listed with an appropriate load type in the WELD FLUX model definition option. Since
this user subroutine is in the recycling loop, the reading of data is not recommended
in UWELDFLUX as the user does not know how many times per increment it is called.
The weld path to be followed by the heat source specified in this subroutine can be
directly given in the input file or specified through the UWELDPATH user subroutine.
This weld path is used to define the local coordinate system at the current position of
the weld source. The global integration point coordinates TEMFLU(4 - 6) are then
transformed to local integration point coordinates TEMFLU(1 - 3) using the direction
cosines of the local coordinate system. Any path offsets in the local X and Y directions
are also applied during this process. Both the global and local integration point
coordinates are provided as input in the program.
The weld dimensions WELDDIM are optional input. They can be varied as a function
of time or arc length using tables. The weld dimensions can be used for defining the
weld pool size. The latter can be used for three purposes: for defining the weld flux F
in this subroutine; for defining a filler element bounding box which can be used to
identify filler elements that are in the weld pool (note that if separate bounding box
dimensions are provided, they over-ride the weld pool dimensions); and for defining
a moving adaptive box with the heat source that identifies which elements need to be
adaptively subdivided.
2-16
UWELDPATH
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UWELDPATH
Input of User Defined Welding Path
Description
This user subroutine allows the specification of a weld path to be followed by a weld
heating source. The use of this user subroutine is flagged by the appropriate weld path
and arc orientation types (type 5) in the WELD PATH input option.
Format
User subroutine UWELDPATH is written with the following headers:
SUBROUTINE UWELDPATH(NWELD, NPATH, NFILL,DISTWELD,STARTPOS,
FINALPOS, WELDVEC, ARCVEC, CPTIM, TIMINC)
INCLUDE ’../COMMON/IMPLICIT’
DIMENSION WELDVEC(*), ARCVEC(*), STARTPOS(*), FINALPOS(*),
NWELD(*), NPATH(*), NFILL(*)
user coding
RETURN
END
where
Input:
NWELD(1)
external weld flux ID.
NWELD(2)
internal weld flux ID.
NPATH(1)
external weld path ID.
NPATH(2)
internal weld path ID.
NFILL(1)
external weld filler ID.
NFILL(2)
internal weld filler ID.
DISTWELD
incremental distance travelled by weld heat source.
STARTPOS
weld position vector at start of increment.
CPTIM
time at start of increment.
TIMINC
incremental time step.
MSC.Marc Volume D: User Subroutines and Special Routines
UWELDPATH
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
2-17
Required Output:
FINALPOS
weld position vector at end of increment.
WELDVEC
weld path vector at end of increment position.
ARCVEC
arc orientation vector at end of increment position.
This user subroutine is called once at the beginning of each increment or when the
time step for the increment is changed due to a cut-back. The position of the weld
source at the end of the increment and the corresponding path and orientation vectors
are required to be specified by the user. This information is used to construct the local
coordinate system at the end of increment position. Note that the specified ARCVEC
vector should be perpendicular to the WELDVEC vector. Otherwise, MSC.Marc makes
the ARCVEC vector perpendicular to the WELDVEC vector.
The UWELDPATH subroutine should be used in conjunction with a weld heat source
that is either directly specified through the WELD FLUX model definition option or
through the UWELDFLUX user subroutine. Note that when this subroutine is used to
specify the weld path, the position of the associated weld source should be initialized
on the WELD FLUX model definition option, else MSC.Marc terminates with exit 20.
Also, note that when this subroutine is used to specify the weld path, it is the
responsibility of the user to cater to any filler elements that may lie along the path. If
the elements are initially deactivated, this can be done by calling the general activation
UACTIVE user subroutine at the end of the increment.
2-18
MSC.Marc Volume D: User Subroutines and Special Routines
CUPFLX
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ CUPFLX
Coupling of Inelastic Energy and Internal Heat Generation
Description
This user subroutine allows the user to modify the default routine for the calculation
of the internal heat generated due to inelastic energy dissipation. This user subroutine
is only used if a coupled thermal-mechanical or thermal-Joule-mechanical analysis is
being performed and a DIST FLUXES type 101 is chosen.
Format
User subroutine CUPFLX is written with the following headers:
SUBROUTINE CUPFLX (F,TS,N,TIME,TIMINC,TOTPLE,DIFPLE,DEN, FCMECH)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION TS(1), N(1)
user coding
RETURN
END
where
Input:
TS(1)
TS(3)
TS(4), TS(5), TS(6)
N(1)
N(2)
N(3)
N(7)
TIME
TIMINC
TOTPLE
DIFPLE
DEN
FCMECH
Required Output:
F
is the estimated temperature at the end of the increment.
is the temperature at the beginning of the increment.
are the integration point coordinates.
is the element number.
is 101.
is the integration point number.
is the internal element number.
is the time at the beginning of increment.
is the time increment.
is the total plastic strain energy.
is the incremental plastic strain energy.
is the mass density.
is the factor entered through the CONVERT model
definition option.
is the volumetric flux to be defined by the user.
MSC.Marc Volume D: User Subroutines and Special Routines
UINSTR
2-19
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UINSTR
Input of Initial State of Stresses
Description
This user subroutine is called in a loop over all the elements in the mesh when the
ISTRESS parameter is used. Note that this user subroutine is called twice for each
point. During the first call, the user-defined stress vector S is used to define the net
nodal force. During the second call, the user-defined stress vector S is used to define
the initial stress at each point. In a rigid-plastic analysis, this user subroutine is called
at every increment; otherwise, only in increment zero.
Format
User subroutine UINSTR is written with the following headers:
SUBROUTINE UINSTR (S,NDI,NSHEAR,N,NN,KC,XINTP,NCRD,
+INC,TIME,TIMEINC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION S(1), XINTP(NCRD), N(2)
user coding
RETURN
END
where:
Input:
NDI
is the number of direct stress components.
NSHEAR
is the number of shear stress components.
N(1)
is the user element number.
N(2)
is the internal element number.
NN
is the integration point number.
KC
is the layer number (shells or beams).
XINTP
is the array of integration point coordinates.
NCRD
is the number of coordinates.
INC
is the increment number.
TIME
is the total time at beginning of increment.
TIMEINC
is the incremental time.
Required Output:
S
is the stress vector defined by the user.
2-20
MSC.Marc Volume D: User Subroutines and Special Routines
UFOUR
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UFOUR
Input of a User-defined Function F(Θ) for Fourier Analysis
Description
This user subroutine allows input of a function F(Θ) where it can be expressed
analytically. The values of F(Θ) are then passed into a MSC.Marc routine that
calculates the Fourier expansion coefficients.
Format
User subroutine UFOUR is written with the following headers:
SUBROUTINE UFOUR (F,N,NS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION F(1)
user coding
RETURN
END
where
Input:
N
The number of stations around the circumference for which the function value F is
specified. N is to be defined by the user.
NS
The number of the Fourier series.
Required Output:
F
The F-array should contain the N values of F (Θ) in sequential order starting at
Θ = 0° and ending with Θ = 360°.
The user specifies the N values of F(Θ) in degrees sequentially from 0 to 360° in
positions N + 1 through 2N of the F-array.
Example
For example, suppose the following function is to be expanded in a Fourier series:
F(Θ) =
1
-1
0
Θ = 135°, 315°
Θ = 45°, 225°
elsewhere.
MSC.Marc Volume D: User Subroutines and Special Routines
UFOUR
2-21
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
This might be accomplished through the following code for the UFOUR user
subroutine which calculates F(Θ) for 25 values of Θ from 0° to 360° by 15°.
SUBROUTINE UFOUR (F,N,NS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION F(1)
C
10
DO 10 I=1,N
F(I)=0
F(I+N) = (I-1)*15
CONTINUE
F(4) = -1.0
F(10) = +1.0
F(16) = -1.0
F(22) = +1.0
C
RETURN
END
The UFOUR user subroutine is called by using the following model definition option:
FOURIER
0,0,25,
2-22
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDT
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ FORCDT
Input of Time Dependent Nodal based Boundary Conditions
Stress Analysis
Description
Simple time dependent load or displacement histories can be input on data lines.
However, in more general cases, when the load history is complex, it is often more
convenient to input the history through a user subroutine. For distributed loads, this is
achieved with the FORCEM user subroutine; for point loads, it is achieved via the
FORCDT user subroutine.
When not using the table driven input format, this user subroutine is flagged by
introducing a model definition set, FORCDT, listing the node numbers for which this
user subroutine is called. Then, at each increment of the analysis, for each of the nodes
on the list, the user subroutine is called. When using table driven input format, one
explicitly activates this routine on the POINT LOADS or FIXED DISP options. In static
analyses, displacement and load arrays are available and, for dynamics, velocity and
acceleration analyses are also given. For nodes without kinematic boundary
conditions, the user can define increments of point loads (thus overwriting any point
load input at the same nodes in the POINT LOAD option). For nodes with kinematic
boundary conditions (that is, listed in the FIXED DISP or DISP CHANGE options), the
user can define increments of displacement.
Note: FORCDT cannot be used to modify Fourier type boundary conditions.
Format
User subroutine FORCDT is written with the following headers:
SUBROUTINE FORCDT (U,V,A,DP,DU,TIME,DTIME,NDEG,NODE,
1 UG,XORD,NCRD,IACFLG,INC, IPASS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION
U(NDEG),V(NDEG),A(NDEG),DP(NDEG),DU(NDEG),UG(1),XORD(1)
user coding
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDT
2-23
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
where
U
is the array of total displacements at this node.
V
is the array of total velocities at this node (dynamics only).
A
is the array of total accelerations at this node (dynamics only).
non table driven input
Non-table Driven Input:
DP
is the array of incremental point loads at this node – can be set by the user at
degrees of freedom without kinematic boundary conditions.
DU
is the array of incremental displacements at this node, is the array of total
accelerations at this node, or is the array of total velocities, see IACFLG –
can be set by the user for degrees of freedom listed as having kinematic
boundary conditions.
Table Driven Input:
DP
is the array of total force to be applied to the node
DU
is the array of total displacement to be applied to the node
DTIME
is the increment of time (only relevant for dynamics or creep).
TIME
is the total time (only relevant for dynamics or creep) at the beginning of
the increment.
NDEG
is the number of degrees of freedom per node.
NODE
is the global node number.
UG
is the array of total displacements in the global system.
XORD
is the array of original nodal coordinates.
NCRD
is the number of coordinates per node.
IACFLG
is set to 1 if accelerations are prescribed and is set to 2 if velocities are
prescribed in dynamic analysis.
INC
is the increment number.
IPASS
= 1 stress portion.
To obtain transient time corresponding to heat transfer analysis, where temperatures
are read in using the CHANGE STATE/AUTO THERM option, add
include ’xxx/common/heattm’
where
CUTIME
is the time at the beginning of the current increment from heat
transfer analysis.
DUTIME
is the change in time during current increment from heat transfer analysis.
are variables in the common block heattm.
2-24
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDT
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
As an example, suppose a sinusoidal forcing is required at the third degree of freedom
at a node.
The forcing function is
P = B sin ω t
so
dp = B(sin ω (t + dt) - sin ω t)
Hence, for non table driven input, we write the user subroutine as follows:
SUBROUTINE FORCDT (U,V,A,DP,DU,TIME,DTIME,NDEG,NODE,
1 UG,XORD,NCRD,IACFLG,INC, IPASS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION U(1),V(1),A(1),DP(1),DU(1),UG(1),XORD(1)
B =
OMEGA =
DP(3) = B*(SIN(OMEGA*(TIME+DTIME)) - SIN(OMEGA*TIME))
RETURN
END
Heat Transfer Analysis
Description
Time dependent nodal fluxes or temperature boundary conditions can be input most
conveniently through the use of user subroutine FORCDT. For distributed fluxes, the
FLUX user subroutine should be used to input the value of the distributed flux as a
function of time and position.
When not using the table driven input format, the FORCDT user subroutine is flagged
by a model definition set, FORCDT, listing the node numbers. Then at each step in the
analysis, for each of the nodes in the list, the user subroutine is called. The current,
calculated temperature is provided at the nodes. For nodes not specified as having
temperature boundary conditions, the user can give the point flux. For those nodes
specified with temperature, boundary conditions (in FIXED TEMPERATURE or TEMP
CHANGE) sets the temperature.
When using the table driven input, one explicitly activates this routine on the POINT
FLUX or FIXED TEMPERATURE option.
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDT
2-25
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Format
User subroutine FORCDT is written with the following headers:
SUBROUTINE FORCDT (X1,X2,X3,F,T,TIME,DTIME,NDEG,NODE,X4,
1 XORD,NCRD,IACFLG,INC,IPASS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION F(NDEG),T(NDEG),XORD(NCRD)
user coding
RETURN
END
where
X1,X2,X3
F
T
TIME
DTIME
NDEG
NODE
X4
XORD
NCRD
IACFLG
INC
IPASS
are not used.
is the array of fluxes at the node – can be re-defined for nodes free of
temperature boundary conditions.
is the array of temperatures at the node – can be redefined for nodes
having temperature boundary conditions.
is the total time at the end of the current step.
is the current time increment.
is 1 unless heat transfer shell elements are used.
is the global node number.
is not used.
is the array of nodal coordinates.
is the number of coordinates per node.
is not used.
is the increment number.
= 2 heat transfer portion.
Joule Heating Analysis
Description
Time dependent nodal currents or voltage boundary conditions can be input most
conveniently through the use of user subroutine FORCDT. For distributed current, the
FLUX user subroutine should be used to input the value of the distributed current as a
function of time and position.
When not using the table driven input format, the FORCDT user subroutine is flagged
by a FORCDT model definition set, listing the node numbers. Then, at each step in the
analysis, for each of the nodes in the list, the user subroutine is called. The calculated
voltage is provided at the nodes. For nodes not specified as having voltage boundary
conditions, the user can give the point current. For those nodes specified with voltage,
2-26
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDT
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
boundary conditions (in VOLTAGE or VOLTAGE CHANGE) sets the voltage. When
using table driven input format, one explicitly activates this routine on the POINT
CURRENT or FIXED VOLTAGE option.
Format
User subroutine FORCDT is written with the following headers:
SUBROUTINE FORCDT (X1,X2,X3,F,T,TIME,DTIME,NDEG,NODE,X4,
1 XORD,NCRD,IACFLG,INC,IPASS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION F(NDEG),T(NDEG),XORD(NCRD)
user coding
RETURN
END
where
X1,X2,X3
F
T
TIME
DTIME
NDEG
NODE
X4
XORD
NCRD
IACFLG
INC
IPASS
are not used.
is the array of currents at the node – can be re-defined for nodes free of
voltage boundary conditions.
is the array of voltages at the node – can be redefined for nodes having
voltage boundary conditions.
is the total time at the end of the current step.
is the current time increment.
is 1 unless heat transfer shell elements are used.
is the global node number.
is not used.
is the array of nodal coordinates.
is the number of coordinates per node.
is not used.
is the increment number.
= 4 electrical pass in Joule heating analysis.
Diffusion Analysis
Description
Time dependent nodal mass flux or pressure boundary conditions can be input most
conveniently through the use of the FORCDT user subroutine. For distributed mass
flux, the FLUX user subroutine should be used to input the value of the distributed mass
flux as a function of time and position.
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDT
2-27
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
When not using the table driven input format, the FORCDT user subroutine is flagged
by a model definition set, FORCDT, listing the node numbers. Then at each step in the
analysis, for each of the nodes in the list, the user subroutine is called. The current,
calculated pressure is provided at the nodes. For nodes not specified as having
pressure boundary conditions, the user can give the point mass flux. For those nodes
specified with pressure, boundary conditions (in FIXED PRESSURE or PRESS
CHANGE) sets the pressure.When using the table driven input format, one explicitly
activates this routine on the POINT MASS or FIXED PRESSURE option.
Format
User subroutine FORCDT is written with the following headers:
SUBROUTINE FORCDT (X1,X2,X3,F,T,TIME,DTIME,NDEG,NODE,X4,
1 XORD,NCRD,IACFLG,INC,IPASS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION F(NDEG),T(NDEG),XORD(NCRD)
user coding
RETURN
END
where
X1,X2,X3
F
T
TIME
DTIME
NDEG
NODE
X4
XORD
NCRD
IACFLG
INC
IPASS
are not used.
is the array of mass fluxes at the node – can be re-defined for nodes free of
pressure boundary conditions.
is the array of pressure at the node – can be redefined for nodes having
pressure boundary conditions.
is the total time at the end of the current step.
is the current time increment.
is 1 unless heat transfer shell elements are used.
is the global node number.
is not used.
is the array of nodal coordinates.
is the number of coordinates per node.
is not used.
is the increment number.
= 5 diffusion pass.
2-28
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDT
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Electrostatic Analysis
Description
Time dependent nodal charges or potential boundary conditions can be input most
conveniently through the use of the FORCDT user subroutine. For distributed charges,
the FLUX user subroutine should be used to input the value of the distributed charge
as a function of time and position.
When not using the table driven input format, the FORCDT user subroutine is flagged
by a model definition set, FORCDT, listing the node numbers. Then at each step in the
analysis, for each of the nodes in the list, the user subroutine is called. The current,
calculated potential is provided at the nodes. For nodes not specified as having
potential boundary conditions, the user can give the point charge. For those nodes
specified with potential, boundary conditions (in FIXED POTENTIAL or POTENTIAL
CHANGE) sets the potential. When using the table driven input, one explicitly
activates this routine on the POINT CHARGE or the FIXED POTENTIAL option.
Format
User subroutine FORCDT is written with the following headers:
SUBROUTINE FORCDT (X1,X2,X3,F,T,TIME,DTIME,NDEG,NODE,X4,
1 XORD,NCRD,IACFLG,INC,IPASS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION F(NDEG),T(NDEG),XORD(NCRD)
user coding
RETURN
END
where
X1,X2,X3
F
T
TIME
DTIME
NDEG
NODE
X4
XORD
NCRD
are not used.
is the array of charges at the node – can be re-defined for nodes free of
potential boundary conditions.
is the array of potential at the node – can be redefined for nodes having
potential boundary conditions.
is the total time at the end of the current step.
is the current time increment.
is 1 unless heat transfer shell elements are used.
is the global node number.
is not used.
is the array of nodal coordinates.
is the number of coordinates per node.
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDT
2-29
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
is not used.
is the increment number.
= 6 for electrostatic pass.
IACFLG
INC
IPASS
Magnetostatic Analysis
Description
Time dependent nodal current or potential boundary conditions can be input most
conveniently through the use of the FORCDT user subroutine. For distributed currents,
the FLUX user subroutine should be used to input the value of the distributed current
as a function of time and position.
When not using the table driven input format, the FORCDT user subroutine is flagged
by a model definition set, FORCDT, listing the node numbers. Then at each step in the
analysis, for each of the nodes in the list, the user subroutine is called. The calculated
potential is provided at the nodes. For nodes not specified as having potential
boundary conditions, the user can give the point current. For those nodes specified
with potential, boundary conditions (in FIXED POTENTIAL or POTENTIAL CHANGE)
sets the potential. When using the table driven input, one explicitly activates this
routine on the POINT CURRENT or the FIXED POTENTIAL option.
Format
User subroutine FORCDT is written with the following headers:
SUBROUTINE FORCDT (X1,X2,X3,F,T,TIME,DTIME,NDEG,NODE,X4,
1 XORD,NCRD,IACFLG,INC,IPASS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION F(NDEG),T(NDEG),XORD(NCRD)
user coding
RETURN
END
where
X1,X2,X3
are not used.
F
is the array of currents at the node – can be re-defined for nodes free of
potential boundary conditions.
T
is the array of potentials at the node – can be redefined for nodes having
potential boundary conditions.
TIME
is the total time at the end of the current step.
DTIME
is the current time increment.
NDEG
is 1 unless heat transfer shell elements are used.
2-30
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDT
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
NODE
is the global node number.
X4
is not used.
XORD
is the array of nodal coordinates.
NCRD
is the number of coordinates per node.
IACFLG
is not used.
INC
is the increment number.
IPASS
= 7 for magnetostatic pass.
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDF
2-31
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ FORCDF
Input of Frequency Dependent Loads or Displacements in
Harmonic Analysis
Stress Analysis
Description
Simple nodal load or displacement excitations can be input on data lines. However, in
more general cases, when the load is nonhomogeneous, it is often more convenient to
input the excitation through a user subroutine. In harmonic analysis, for distributed
loads, this is achieved with the FORCEM user subroutine; for point loads or
displacements, it is achieved via the FORCDF user subroutine.
When not using the table driven input format, this user subroutine is flagged by
introducing a model definition option, FORCDT, listing the node numbers for which
this user subroutine is called. Then, at each harmonic sub-increment of the analysis,
for each of the nodes on the list, the user subroutine is called. For nodes without
kinematic boundary conditions, the user can define increments of point loads (thus,
overwriting any point load input at the same nodes in the POINT LOAD option). For
nodes with kinematic boundary conditions (that is, listed in the FIXED DISP or DISP
CHANGE options), the user can define increments of harmonic displacement. When
using table driven input format, one explicitly activates this routine on the POINT
LOAD or FIXED DISP option.
Format
User subroutine FORCDF is written with the following headers:
SUBROUTINE FORCDF (U,FR,FI,DUR,DUI,FREQ,DTIME,NDEG,NODE,
1 UG,XORD,NCRD,ICOMPL,INC,INCSUB)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION (NDEG),FR(NDEG),FI(NDEG),DUR(NDEG),DUI(NDEG),
+UG(1),XORD(1)
user coding
RETURN
END
2-32
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDF
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
where
Input:
U
is the array of total displacements at this node.
FREQ
is the excitation frequency.
DTIME
is not used.
NDEG
is the number of degrees of freedom per node.
NODE
is the global node number.
UG
is the array of total displacements in the global system.
XORD
is the array of original nodal coordinates.
NCRD
is the number of coordinates per node.
ICOMPL
is 0 if real analysis; 1 if complex analysis.
INC
is the increment number.
Required Output:
FR
is the array of the real components of the harmonic point loads.
FI
is the array of the imaginary components of the harmonic point loads.
DUR
is the array of the real components of the harmonic displacements.
DUI
is the array of the imaginary components of the harmonic displacements.
Piezoelectric Analysis
Description
Simple nodal load, charge, displacement, or potential excitations can be input on data
lines. However, in more general cases, when the load is nonhomogeneous, it is often
more convenient to input the excitation through a user subroutine. For distributed
loads, this is achieved with the FORCEM user subroutine; for distributed charge, this
is achieved with the FLUX user subroutine; for point loads, point charge,
displacements, or potential, this is achieved via the FORCDF user subroutine.
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDF
2-33
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
When not using the table driven input, this user subroutine is flagged by the FORCDT
model definition option listing the node numbers for which this user subroutine is
called. Then, at each harmonic subincrement of the analysis for each of the nodes on
the list, the user subroutine is called. For nodes without kinematic boundary
conditions, increments of point loads and increments of point charge can be defined
(this overwrites any point load input at the same nodes in the POINT LOAD option or
overwriting any point charge in the POINT CHARGE option). For nodes with kinematic
boundary conditions (that is, listed in the FIXED DISP, FIXED POTENTIAL, DISP
CHANGE, or FIXED POTENTIAL options), the user can define increments of harmonic
displacement and/or potential. When using the table driven input, one explicitly
activates this routine on the POINT LOAD, POINT CHARGE, FIXED DISP, or FIXED
POTENTIAL option.
Format
User subroutine FORCDT is written with the following headers:
SUBROUTINE FORCDF (U,FR,FI,DUR,DUI,FREQ,DTIME,NDEG,NODE,
1 UG,XORD,NCRD,ICOMPL,INC,INCSUB)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION U(NDEG),FR(NDEG),FI(NDEG),DUR(NDEG),DUI(NDEG),UG(1)
1 XORD(1)
user coding
RETURN
END
where
Input:
U
is the array of total displacements and potential at this node.
FREQ
is the excitation frequency.
DTIME
is not used.
NDEG
is the number of degrees of freedom per node.
NODE
is the global node number.
UG
is the array of total displacements in the global system.
XORD
is the array of original nodal coordinates.
NCRD
is the number of coordinates per node.
ICOMPL
is 0 if real analysis; 1 if complex analysis.
INC
is the increment number.
Required Output:
FR
is the array of the real components of the harmonic point loads and
harmonic point charge.
2-34
MSC.Marc Volume D: User Subroutines and Special Routines
FORCDF
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
FI
is the array of the imaginary components of the harmonic point loads
and harmonic point charge.
DUR
is the array of the real components of the harmonic displacements and
harmonic potential.
DUI
is the array of the imaginary components of the harmonic displacements
and harmonic potential.
The first ndeg-1 elements of the arrays refer to the structural point loads
or displacements.
The ndeg’th element of the arrays refers to the point charge or harmonic potential.
MSC.Marc Volume D: User Subroutines and Special Routines
FILM
2-35
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ FILM
Input of Nonuniform Film Coefficients
This user subroutine is used when the table input format is not used;
otherwise, use the UFILM user subroutine.
Description
In heat transfer analysis, it is often necessary to include nonuniform film coefficients
and sink temperatures for the calculation of convection or radiation boundary
conditions. The FILM user subroutine facilitates this. It is called at each time step for
each integration point on each element surface given in the FILMS model definition
set, and allows the user to modify the film coefficient and sink temperature that is
input through the data lines. In coupled contact analyses, the UHTCOE, UHTNRC, and
UHTCON user subroutines are preferred
Format
User subroutine FILM is written with the following headers:
SUBROUTINE FILM (H,TINF,TS,N,TIME)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION H(2), N(7),TS(6)
user coding
RETURN
END
where:
Input:
TS(1)
is the estimated surface temperature at the end of the increment.
TS(2)
is the surface temperature at the beginning of the increment.
TS(3)
is not used.
TS(4)
is the integration point 1st coordinate.
TS(5)
is the integration point 2nd coordinate.
TS(6)
is the integration point 3rd coordinate.
2-36
MSC.Marc Volume D: User Subroutines and Special Routines
FILM
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
N(1)
is the element number.
N(2)
is the IBODY code.
N(3)
is the integration point number.
N(4)
is the film index.
N(5)
is the sink temperature index.
N(6)
is not used.
N(7)
is the internal element number.
TIME
is the current time.
Required Output:
H(1)
is the ratio of the desired film coefficient to that given on the FILMS data set for
this element to be defined by the user (preset to 1).
TINF
is the ratio of the desired sink temperature to that given on the FILMS data set
for this element to be defined by the user (preset to 1).
Optional Output:
H(2)
is the derivative of the ratio of the film coefficient to that given on the FILMS
data set; this can be defined optionally and may improve the convergence
behavior in a nonlinear heat transfer analysis.
Note that since H and TINF are defined as ratios, if the user does not re-define them in
this user subroutine, the data set values are used. If the user wishes to give absolute
values here, the corresponding values on the FILMS data set can be conveniently set
to 1.
MSC.Marc Volume D: User Subroutines and Special Routines
FLOW
2-37
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ FLOW
Input of Mass Flow Rate and Inlet Temperature
Description
In a heat transfer analysis involving fluid channel elements, user subroutine FLOW is
available to the user for the modification of mass flow rate, inlet temperature, and film
coefficient. Both the inlet temperature and mass flow rate can be dependent on time;
the film coefficient can also be a function of streamline distance.
Format
User subroutine FLOW is written with the following header:
SUBROUTINE FLOW
(II,IFACE,N1,NBSURF,STOT,RATE,TINLET,SURFJ,TSURJ,
+HJ,TFLUID,TIMINC,CPTIME)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION SURFJ(4),TSURJ(4),HJ(4)
user coding
RETURN
END
where:
Input:
II
is the channel number.
IFACE
is the channel face identification, defining the flow direction.
N1
is the fluid channel element number.
NBSURF
is the number of channel surfaces.
STOT
is the total stream line distance.
SURFJ(I)
is the channel surface area array.
TSURJ(I)
is the channel surface temperature array.
TFLUID
is the fluid element temperature.
TIMINC
is the time increment.
CPTIME
is the current total time.
2-38
MSC.Marc Volume D: User Subroutines and Special Routines
FLOW
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Required Output:
RATE
is the mass flow rate (redefined by the user in this user subroutine).
TINLET
is the inlet temperature (redefined by the user in this user subroutine).
HJ(I)
is the film coefficient of the ith surface (redefined by the user in this
user subroutine).
In two-dimensional analyses, SURFJ(1), SURFJ(2) are the lengths of the edges
bordering the channel element. In three-dimensional analyses, SURFJ(1) through
SURFJ(4) are the areas on adjacent faces. In a similar manner, TSURJ is the average
temperature on adjacent edges (for 2-D) or adjacent faces (for 3-D).
MSC.Marc Volume D: User Subroutines and Special Routines
UFOUND
2-39
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UFOUND
Input of Nonlinear Foundation Stiffness and Damping
This user subroutine is used when the table input format is used;
otherwise, use the USPRNG user subroutine.
Description
The UFOUND user subroutine permits the introduction of nonlinear spring constants
for use with the FOUNDATION option, and input of nonlinear damping for dynamics or
harmonics. The user coding must supply both of the spring stiffness and the total
spring force. The data value of the stiffness/damping constant, total time, and the
element or spring number are made available to the user subroutine. For harmonic
analysis, the stiffness/damping constants can be a function of the frequency. The
UFOUND user subroutine is activated by the FOUNDATION option.
Format
User subroutine UFOUND is written with the following headers:
SUBROUTINE UFOUND(EFFK,EFORC,U,TIME,N,IHRESP)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION EFFK(*),U(*),TIME(*),N(*),EFORC(2)
user coding
RETURN
END
where:
For Elastic Foundation
EFFK(1)
foundation stiffness
EFFK(2)
foundation damping (dynamics and/or harmonics)
For Statics or Dynamics
EFORC(1)
foundation resistance force due to stiffness
EFORC(2)
foundation resistance force due to damping
U(1)
total displacement
2-40
MSC.Marc Volume D: User Subroutines and Special Routines
UFOUND
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
U(2)
total velocity
TIME(1)
time at beginning of increment
TIME(2)
incremental time
For Harmonics
EFORC(1)
real component of foundation resistance force
EFORC(2)
imaginary component of foundation resistance force
U(1)
real component of harmonic displacement
U(2)
imaginary component of harmonic displacement
TIME(1)
time
TIME(2)
frequency
N(1)
element number
N(2)
face id (ibody)
N(3)
integration point number
N(4)
boundary condition id
N(5)
boundary condition id
N(6)
internal element id
IHRESP
0 statics or dynamics
1 harmonics
MSC.Marc Volume D: User Subroutines and Special Routines
UFILM
2-41
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UFILM
Input of Nonuniform Convective Coefficients
This user subroutine is used when the table input format is used;
otherwise, use the FILM user subroutine.
Description
In heat transfer analysis, it is often necessary to include nonuniform convective
coefficients and sink temperatures for the calculation of convection or radiation
boundary conditions. The UFILM user subroutine facilitates this. It is called at each
time step for each integration point on each element surface given in the FILMS model
definition set, and allows the user to modify the convective coefficient and sink
temperature that is input through the data lines. In coupled contact analyses, the
UHTCOE and UHTCON user subroutines are preferred
Format
User subroutine UFILM is written with the following headers:
SUBROUTINE UFILM(UHFILM,UTSINK,UHNATUR,UEXPNAT,
* UEFFVIEW,UEMISS,UQFLUX,TS,N,TIME,INC)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION TS(*),N(*)
user coding
RETURN
END
where:
UHFILM
conventional convective heat transfer coefficient.
UTSINK
sink temperature.
UHNATUR
natural convection coefficient.
UEXPNAT
natural convection exponent.
UEFFVIEW
effective view factor.
UEMISS
emissivity.
2-42
MSC.Marc Volume D: User Subroutines and Special Routines
UFILM
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
UQFLUX
applied flux.
TS(1)
estimated surface temperature at the end of increment.
TS(2)
surface temperature at the beginning of increment.
TS(3)
not used.
TS(4)
integration point 1st coordinate.
TS(5)
integration point 2nd coordinate.
TS(6)
integration point 3rd coordinate.
TS(7)
first component of direction cosine of surface normal.
TS(8)
second component of direction cosine of surface normal.
TS(9)
third component of direction cosine of surface normal.
N(1)
element number.
N(2)
ibody number.
N(3)
integration point number.
N(4)
boundary condition id.
N(5)
boundary condition id.
N(6)
not used.
N(7)
internal element number.
TIME
time.
INC
increment number.
MSC.Marc Volume D: User Subroutines and Special Routines
USINKPT
2-43
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ USINKPT
Input of Sink Point Temperatures
Description
The USINKPT user subroutine allows the user to change the sink point temperatures as
a function of time. For every integration point associated with an element face defined
in the FILMS model definition option, the closest sink point will be determined. This
routine will be called for each one of these integration points.
Format
User subroutine USINKPT is written with the following headers:
SUBROUTINE USINKPT(M,NN,ISINK,TSINK,TIME,INC,XINT,XSINK,NCRD)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION XINT(NCRD),XSINK(NCRD)
user coding
RETURN
END
where:
Updates Temperature Of Sink Point
M
element number.
NN
integration point number.
ISINK
sink id.
TSINK
temperature of sink point - to be updated by the user.
TIME
time at the end of the increment.
INC
increment number.
XINT
coordinates of surface integration point.
XSINK
coordinates of sink point.
NCRD
number of coordinates.
2-44
MSC.Marc Volume D: User Subroutines and Special Routines
GAPT
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ GAPT
Input of Thermal Contact (Conrad) Gap Temperature
Description
In a heat transfer analysis involving thermal contact (CONRAD) gap elements, the
gap temperature is compared with a given gap closure temperature for the
determination of gap open/closed condition. In MSC.Marc, the gap temperature is
estimated from the average of gap nodal temperatures 0.5∗ ( T1 + T2 ) and the gap
closure temperature is entered through the CONRAD GAP model definition option.
The GAPT user subroutine allows for the redefinition of gap temperature (TGAP) based
on the nodal temperatures T1 and T2. If the gap temperature (TGAP) is greater than or
equal to the gap closure temperature (TCLOSE), the gap is closed. Otherwise, the gap
is open. This also influences the electrical contact in a coupled Joule heating analysis.
Format
User subroutine GAPT is written with the following header:
SUBROUTINE GAPT(N,I1,I2,T1,T2,TCLOSE,TGAP,INC,TIME,TIMINC)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
N
is the gap (tie) number.
I1,I2
are the nodal numbers.
T1,T2
are the nodal temperatures.
TCLOSE
is the gap closure temperature.
INC
is the increment number.
TIME
is the total transient time.
TIMINC
is the time increment.
Required Output:
TGAP
is the gap temperature (to be defined the user).
MSC.Marc Volume D: User Subroutines and Special Routines
UFORMS
2-45
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UFORMS
Definition of Constraint Conditions
Description
The UFORMS user subroutine allows the definition of a constraint condition.
MSC.Marc's capability for applying arbitrary homogeneous constraints between
nodal displacements is used through this user subroutine. To distinguish user
constraints from MSC.Marc's built-in constraints, those constraints formed by the
user in UFORMS must be of type less than zero (ISTYP in the user subroutine: first
field of data block 3 of the TYING model definition option). The constraint conditions
can be supplied by using the UFORMS user subroutine. The conventions adopted for
these constraints are:
1. A constraint is defined by:
{ ua }
 ub

= [ S]  uc

 etc





where:
{ ua }
 ub

 uc

 etc
The vector of displacement at node a, referred to as the
tied mode.





Vector of displacements at b, c, etc.; these nodes are referred to
as the retained nodes.
2. In the matrix [S], a row of zeros indicates that particular degree of freedom
at node a is not constrained.
3. To apply a constraint between degrees of freedom at the same node, the
node must appear on both sides of the equation, with rows of zeros in [S]
corresponding to the degrees of freedom on the left-hand side, which are
retained on the right-hand side, and columns of zeros in [S] corresponding
to the tied nodes appearing on the left-hand side.
Note: When the retained nodes have transformations applied to them, the constraint
matrix, S, is written with respect to the transformed displacements.
2-46
MSC.Marc Volume D: User Subroutines and Special Routines
UFORMS
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Format
The user subroutine supplying the [S] matrix must have the following headers:
SUBROUTINE UFORMS(S,NRETN,LONG,NDEG,ISTYP,ITI,ISTART,ITIE,
1 LONGSM,ITIEM,IPASS,NUMNP,DICOS,TRANSM,XORD,NPBT,NBCTRA,
2 NCRD,TDICOS,LEVELM,II,LONGTM,DISP,ITYFL)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION S(NDEG,LONGSM),ITI(LONGTM,ITIEM)
DIMENSION DICOS(NDEG,NDEG),TRANSM(6,1),
1 XORD(NCRD,LONGTM),NPBT(1),TDICOS(NDEG,NDEG),
2 DISP(NDEG,LONGTM)
user coding
RETURN
END
where:
Input:
NRETN
is the number of retained nodes for this type
of tying.
LONG
is NDEG*NRETN.
NDEG
is the number of degrees of freedom at a node.
ISTYP
is the type of this constraint equation (given in
TYING set of blocks). MSC.Marc adds 1000 to all
ISTYP that are less than -1000 before calling
UFORMS; any use of ISTYP in UFORMS should
account for this.
ITI(1, II)
is the node on left-hand side of this (the IIth)
constraint equation.
ITI(2,II), ITI(3,II), etc.
are the nodes on the right-hand side of this
constraint equation.
ISTART
is not used.
ITIE
is the number of constraint equations.
LONGSM
is the size of constraint matrix = ITIEM*NDEG.
ITIEM
is the maximum number of constraint equations.
IPASS
1 if stress pass
2 if heat pass
3 if fluid pass
4 if Joule pass
5 if diffusion pass
6 if electrostatic pass
7 if magnetostatic pass
8 if electromagnetic pass
MSC.Marc Volume D: User Subroutines and Special Routines
UFORMS
2-47
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
NUMNP
is the number of nodal points in mesh.
DICOS
is the work space.
TRANSM(6, 1)
are supplied as data (given in TRANSFORMATION
set of blocks).
XORD(N1, N)
are the N1th coordinate of node ITI(N,II).
NPBT(L)
is the information about Lth boundary condition
transformation.
NBCTRA
is the number of nodes with transformations.
NCRD
is the number of coordinate directions.
TDICOS
is the work space.
LEVELM
is not used.
II
is the tying number.
LONGTM
is the maximum number of retained nodes plus one.
DISP(N1,N)
is the N1th total displacement of node ITI(N,II) if
ISTYP, as defined on the TYING option, is less
than -1000.
Required Output:
S
is the constraint matrix to be defined by the user
(dimension (NDEG, LONGSM), LONGSM = NDEG*
(number of retained nodes)).
ITYFL
is set to zero to remove this tie constraint; note that
this only works if re-assembly is forced.
Example
Suppose a change from a coarse to a fine mesh of two-dimensional isoparametric
elements is required. For any node in the fine mesh which does not correspond to a
node in the coarse mesh, a constraint is necessary. The displacement at these nodes
can be expressed as a linear combination of the displacements of the two corner nodes
of the coarse mesh since the displacement is linear between these nodes due to the
element formulation.
In the coarse mesh:


 uj 
1–λ 0

 =
0 1–λ
 vj 


λ
0
0
λ







ui 

vi 

ul 

vl 
2-48
MSC.Marc Volume D: User Subroutines and Special Routines
UFORMS
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
where:
λ = x ij ⁄ x il
Thus, we supply the following user subroutine:
SUBROUTINE UFORMS(S,NRETN,LONG,NDEG,ISTYP,ITI,ISTART,ITIE
1 LONGSM,ITIEM,IPASS,NUMNP,DICOS,TRANSM,XORD,NPBT,NBCTRA,
2 NCRD,TDICOS,LEVELM,II,LONGTM,DISP,ITYFL)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION S(NDEG,LONGSM),ITI(LONGTM,ITIEM)
DIMENSION DICOS(NDEG,NDEG),TRANSM(6,1),
1 XORD(NCRD,LONGTM),NPBT(1),TDICOS(NDEG,NDEG),
2 DISP(NDEG,LONGTM)
J=1
I=2
L=3
XIJ = SQRT((XORD(1,I)-XORD(1,J))**2+(XORD(2,I)XORD(2,J))**2)
XIL = SQRT((XORD(1,I)-XORD(1,L))**2+(XORD(2,I)XORD(2,L))**2)
XLAMBD = XIJ/XIL
S(1,1) = 1. -XLAMBD
S(2,2) = 1. -XLAMBD
S(1,3) = XLAMBD
S(2,4) = XLAMBD
user coding
RETURN
END
Assuming that nodes j and k are located between nodes I and L and nodes m, n are
located between nodes L and P, the constraint is then imposed by specifying j, k, m,
n, etc., on data lines as the tied nodes, and I, L; I, L; L, P; L, P; etc., as the
corresponding pairs of retained nodes. The TYING option would then become:
TYING
4,
-1,j,2
i,l,
-1,k,2
i,l,
-1,m,2
l,p,
-1,n,2
l,p,
MSC.Marc Volume D: User Subroutines and Special Routines
UFORMS
2-49
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Note that this coarse to fine mesh tying constraint is in MSC.Marc as default tying
types 31 and 32 for planar elements and as tying type 33 and 34 for three-dimensional
brick elements. See MSC.Marc Volume A: User Information for further details.
p
n
xij
m
l
k
j
i
xil
Figure 2-1
Coarse to Fine Mesh Example
2-50
MSC.Marc Volume D: User Subroutines and Special Routines
CREDE
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ CREDE
Input of Pre-specified State Variables
Description
The CREDE user subroutine is available to the user for the input of pre-specified state
variables. The simplest option allows the specification of temperature increments
throughout the mesh. Through the use of the STATE VARS parameter, the number of
state variables per point in the structure can be increased. For example, radiation
fluxes (in reactor core problems) can be included. MSC.Marc always assumes
temperature is the first state variable given at a particular point, since the first state
variable is used in conjunction with the tables of temperature dependence input
specified in the TEMPERATURE EFFECTS option, and the first state variable is used to
compute thermal strains. All state variables are available to all constitutive routines.
THe CREDE user subroutine is called once per element in a loop over the elements
when the THERMAL LOADS option is used. Any data blocks required should appear
immediately after data block 2 of the THERMAL LOADS option in the input data. If the
first field of data block 2 in the THERMAL LOADS option is a 3, total state variable
values must be provided at all points of all elements at which constitutive calculations
are made. If the first field is a 2, the incremental values are defined. Depending on the
inclusion of the CENTROID or ALL POINTS parameters, centroidal values or values at
all numerical integration points of an element are expected. For shell elements, the
values of state variable increments must be given for each layer through the thickness
at every integration point. For beam elements, the values of state variable increments
must be given at all points used to define the beam section (16 for default element type
14, 25, 76 or 78; user-defined for element type 13, 77, or 79).
Format
User subroutine CREDE is written with the following headers:
SUBROUTINE CREDE (DTDL,M,NSTRES,NEQST,NSTATS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DTDL (NSTATS,NEQST,NSTRES)
user coding
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
CREDE
2-51
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
where:
Input:
is the user element number and must remain unchanged in CREDE. The
internal element number is obtained as
M
mint = ielint(m)
NSTRES
is the maximum number of integration points per element, if ALL POINTS was
included in the parameters, and is 1 if the CENTROID parameter is used.
NEQST
is the maximum number of layers per element.
NSTATS
is the number of state variables requested by the user in the STATE VARS
parameter. (This number equals 1 if only temperature is required).
Required Output:
DTDL
is the array of state variable increments or total values (to be defined here by
the user).
For meshes with several element types, NEQST and NSTRES take on maximum values,
but the DTDL array need only be filled as far as necessary for a particular element type.
Example
As an example, suppose a linear gradient through the thickness is to be imposed on a
shell with NSTATS = 1. The same gradient is imposed throughout the structure.
The following coding will suffice:
SUBROUTINE CREDE (DTDL,M,NSTRES,NEQST,NSTATS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DTDL (NSTATS,NEQST,NSTRES)
TOUT=500.0
TIN=300.0
T=TIN
DT=(TOUT-TIN)/FLOAT(NEQST-1)
DO 2 I=1, NEQST
DO 1 J=1, NSTRES
1 DTDL (1,I,J)=T
2 T=T+DT
RETURN
END
2-52
MSC.Marc Volume D: User Subroutines and Special Routines
INITSV
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ INITSV
Initialize State Variable Values
Description
This user subroutine, allows the user to define initial values of state variables. When
not using the table driven input format, it is called in a loop over all the elements in
the mesh when the INITIAL STATE option appears in the model definition options with
a 2 in the second field of the second data block of that option. When using the table
driven input, it is called for those elements specified in the INITIAL STATE model
definition option if a 7 is given in the second field of the second data block and the
intitial condition is activated by the LOADCASE model definition option.
Format
User subroutine INITSV is written with the following headers:
SUBROUTINE INITSV(SV,LAYERS,INTPTS,M,ID)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION SV(LAYERS,INTPTS)
user coding
RETURN
END
where:
Input:
LAYERS
is the number of layers through the thickness if this is a shell element, or the
number of points in the cross-section if this is a beam element. It is 1 for a
continuum element.
INTPTS
is the number of integration points in this element if the ALL POINTS
parameter is used. If the CENTROID parameter is used, INTPTS = 1.
M
is the user element number. The internal element number is obtained as
mint = ielint(m)
ID
is the state variable number (from columns 1-5 of the second data block of the
INITIAL STATE set).
Required Output:
SV
is the array of values of this state variable; to be defined here for this element
by the user.
MSC.Marc Volume D: User Subroutines and Special Routines
NEWSV
2-53
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ NEWSV
Input New State Variable Values
Description
This user subroutine allows the new values of any state variable to be defined at the
end of the current step. When not using the table driven input format, it is called in a
loop over all the elements in the mesh when the CHANGE STATE option appears in the
model definition or the history definition set with a 2 in the second field of the second
data block of that option. When using the table driven input, it is called for those
elements specified in the CHANGE STATE model definition option, if a 7 is given in
the second field of the second data block and the boundary condition is activated by
the LOADCASE option.
Format
User subroutine NEWSV is written with the following headers:
SUBROUTINE NEWSV(SV,LAYERS,INTPTS,M,ID)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION SV(LAYERS,INTPTS)
user coding
RETURN
END
where:
Input:
LAYERS
INTPTS
M
is the number of layers through the thickness if this is a shell element, of the
number of points in the cross-section if this is a beam element. It is 1 for a
continuum element.
is the number of integration points in this element if the ALL POINTS
parameter is used. If the CENTROID parameter is used, INTPTS=1.
is the user element number. The internal element number is obtained as
mint = ielint(m)
is the state variable number (from columns 1-5 of the second data block of
the CHANGE STATE set [model definition or history definition]).
Required Output:
SV
is the array of new values of this state variable; to be defined here for this
element by the user.
ID
2-54
MSC.Marc Volume D: User Subroutines and Special Routines
NEWSV
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Note: If the user wants to define the state variable values as the function of time, the updated total
time is available by adding the include statement in this subroutine. For example:
include ’path/common/creeps’
within ’creeps’:
cptim
timinc
is the total time at the end of the last step.
is the time increment at the current step.
MSC.Marc Volume D: User Subroutines and Special Routines
USSD
2-55
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ USSD
Input of Spectral Response Density
Description
The USSD user subroutine allows the user to input the spectral density function for the
frequencies required in the spectrum response calculation. These frequencies are
obtained by performing a modal analysis.
Format
User subroutine USSD is written with the following headers:
SUBROUTINE USSD(SD,OMEG,I)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
OMEG
is the frequency in cycles per time unit.
I
is the degree of freedom.
Required Output:
SD
is the spectral response density for the Ith degree of freedom to be defined
by the user.
2-56
MSC.Marc Volume D: User Subroutines and Special Routines
USINC
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ USINC
Input of Initial Conditions
Description
This user subroutine allows the user to input initial displacements, velocities, and
accelerations for dynamic stress analysis, initial temperatures for heat transfer
analysis or thermal stress analysis, temperature history for thermal stress analysis, or
initial pressure. The user must supply the values for all degrees of freedom in vector
F. This user subroutine is used with either the INITIAL DISP, INITIAL VEL, INITIAL TEMP,
or INIT PRESSURE model definition options, or the POINT TEMP model and history
definition options. It is called for every node in the structure if it is used.
Format
User subroutine USINC is written with the following headers:
SUBROUTINE USINC(F,N,NDEG,IFLAG)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION F(NDEG)
user coding
RETURN
END
where:
F
is the vector of initial conditions or point temperatures to be given by the user.
N
is the node number.
NDEG
is the number of degrees of freedom per node.
IFLAG
is the flag that indicates the type of data that must be supplied.
= 1 initial displacement.
= 2 initial velocities.
= 3 initial temperatures.
= 4 initial accelerations.
= 5 point temperatures (only for thermal stress analysis).
= 7 initial pressure (only for diffusion analysis).
MSC.Marc Volume D: User Subroutines and Special Routines
USDATA
2-57
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ USDATA
Input of Initial Data
Description
This user subroutine is a mechanism to allow the user to read data into a user-defined
common block. This common block is stored on the restart file, and available in
subsequent increments. The common block USDACM must be given the correct
length in this user subroutine. This common block can also be used in any other
user subroutine.
Format
User subroutine USDATA is written with the following headers:
SUBROUTINE USDATA(KIN,KOU,IC)
COMMON/USDACM/MYDATA
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
KIN
is the unit number for input, usually 5.
IC
is the reader flag.
= 1 pre-reader.
= 2 real reader.
Required Output:
KOU
is unit number for output, usually 6.
Note that the maximum length of USDACM should be defined here. It should agree in
length in real *4 words as with that given on the USDATA model definition option.
2-58
UTIMESTEP
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UTIMESTEP
Input of User-defined Time Step
Description
This user subroutine allows the user to specify the time step when the AUTO STEP load
stepping scheme is used
Format
User subroutine UTIMESTEP is written with the following headers:
$
SUBROUTINE UTIMESTEP(TIMESTEP,TIMESTEPOLD,ICALL,
TIME,TIMELOADCASE)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
TIMESTEP
is the current time step as suggested by the program and which can
be modified in this routine.
TIMESTEPOLD
is the current time step before it was modified by the program.
ICALL
is a flag for when the routine is called.
= 1 for setting the initial time step during the reader phase.
= 2 if this routine is called during an increment
= 3 if this routine is called at the beginning of the increment
TIME
time at the start of the current increment
TIMELOADCASE
time period of the current load case
Required Output:
TIMESTEP
is the current time step as suggested by the program and which can
be modified in this routine.
This routine is called right after the time step has (possibly) been updated by the
program at different stages in the analysis depending on the value of ICALL. It is
allowed, but in general not recommended, to increase the time step during an
increment (ICALL=2). Note that only the variable TIMESTEP should be modified in
this routine.
MSC.Marc Volume D: User Subroutines and Special Routines
UVELOC
2-59
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UVELOC
Generation or Modification of Nodal Velocity Vectors
Description
In heat diffusion-convection, it is sometimes necessary to include a position
dependent velocity field. The UVELOC user subroutine, which is called for each node,
allows the user the specification or redefinition of previously specified nodal velocity
vectors. The inclusion of convection is activated on the HEAT parameter. This user
subroutine should not be used in a coupled fluid-thermal analysis, as the velocities are
calculated by MSC.Marc.
Format
User subroutine UVELOC is written with the following headers:
SUBROUTINE UVELOC (VELOC,COORD,NCRD,NODE)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION VELOC (NCRD),COORD(NCRD)
user coding
RETURN
END
where:
Input:
COORD
is the array of coordinates at this node.
NCRD
is the number of coordinates.
NODE
is the node number.
Required Output:
VELOC
is the array of nodal velocity components to be defined.
2-60
MOTION (2-D)
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ MOTION (2-D)
Definition of Rigid Surface Motion for 2-D Contact
Description
This user subroutine allows the definition of nonuniform rigid surface motions, in
conjunction with the CONTACT option. Its call is triggered by the UMOTION model
definition option. This user subroutine should only be used with velocity controlled
rigid surfaces.
The MOTION user subroutine is called during the calculations at the beginning of each
time increment and the user return the surface velocities for that increment. Imposed
displacement increments at nodal points in contact with rigid surfaces are obtained
from the velocity multiplied by the time increment. The surface path becomes an
explicit forward integration of velocities. Therefore, caution should be taken when
there are abrupt changes in surface path direction or abrupt changes in velocity by
CAUTION:
Please note that if the coordinates of the center of rotation are defined unconditionally
in this routine, they will be set to that same value for all increments of the analysis,
causing the rigid surface to rotate around a fixed point in space. On the other hand, if
the position of the center of rotation is defined only once in increment 0, as in
if(inc.eq.0) then
x(1)=...
etc.
endif
the center of the rotation is updated internally as motion and deformation take place.
Obviously, the results will be different for the two cases.
If, at the start of the analysis, a surface is placed apart from the body to be deformed,
the MOTION user subroutine is also used in the approaching phase.
If two-dimensional elements are being used, the surfaces have rigid body motions in
two dimensions. It is assumed that such motions can be defined by a translation of a
point (the center of rotation), plus a rotation around that point.
MSC.Marc Volume D: User Subroutines and Special Routines
MOTION (2-D)
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
2-61
Format
User subroutine MOTION is written with the following headers:
SUBROUTINE MOTION (X,F,V,TIME,DTIME,NSURF,INC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION X(*),V(*),F(*)
user coding
RETURN
END
where:
Input:
X(3)
F(3)
TIME
DTIME
NSURF
INC
Required Output:
V(3)
is the array of current die defining coordinates.
X(1) = first coordinate of center of rotation.
X(2) = second coordinate of center of rotation.
X(3) = angle rotated around z-axis.
is the array of current surface loads.
F(1) = first component of load.
F(2) = second component of load.
F(3) = moment.
is the time at which data is requested.
is the current time increment.
is the surface number for which data is requested.
is the increment number.
is the array of current surface velocities.
V(1) = first component of the velocity at the center of rotation.
V(2) = second component of the velocity at the center of rotation.
V(3) = angular velocity.
Example
Assume that a rigid surface is identified as surface number 1, and is moving in the
negative x-direction with a velocity of 1.0. The MOTION user subroutine can be
written as follows:
SUBROUTINE MOTION(X,F,V,TIME,DTIME,NSURF,INC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION X(*),V(*),F(*)
IF(NSURF.EQ.1) THEN
V(1)=-1.
V(2)=0.
V(3)=0.
ENDIF
RETURN
END
2-62
MOTION (3-D)
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ MOTION (3-D)
Definition of Rigid Surface Motion for 3-D Contact
Description
This user subroutine allows the definition of nonuniform rigid surface motions in
conjunction with the CONTACT option. Its call is triggered by the UMOTION model
definition option. This user subroutine should only be used with velocity controlled
rigid surfaces.
The MOTION user subroutine is called during the calculations at the beginning of each
time increment and the user’s return surface velocities for that increment. Imposed
displacement increments at nodal points in contact with rigid surfaces are obtained
from the velocity multiplied by the time increment. The surface path becomes an
explicit forward integration of velocities. Therefore, caution should be taken when
there are abrupt changes in surface path direction or abrupt changes in velocity by
making time increments as small as necessary.
CAUTION:
Please note that if the coordinates of the center of rotation are defined unconditionally
in this routine, they will be set to that same value for all increments of the analysis,
causing the rigid surface to rotate around a fixed point in space. On the other hand, if
the position of the center of rotation is defined only once in increment 0, as in
if(inc.eq.0) then
x(1)=...
etc.
endif
the center of the rotation is updated internally as motion and deformation take place.
Obviously, the results will be different for the two cases.
If, at the start of the analysis, a rigid surface is placed apart from the deformable body,
the MOTION user subroutine is also used in the approaching phase.
If three-dimensional elements are used, the surfaces have rigid body motions in three
dimensions. It is assumed that such motions can be defined by a translation of a point
(the center of rotation), plus a rotation about the axis of rotation through that point.
MSC.Marc Volume D: User Subroutines and Special Routines
MOTION (3-D)
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
2-63
Format
User subroutine MOTION is written with the following headers:
SUBROUTINE MOTION (X,F,V,TIME,DTIME,NSURF,INC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION X(*),V(*),F(*)
user coding
RETURN
END
where:
Input:
X(6)
is the array of current die defining coordinates.
X(1) = first coordinate of center of rotation.
X(2) = second coordinate of center of rotation.
X(3) = third coordinate of center of rotation.
Axis for specifying angular velocity:
X(4) = first component of direction cosine.
X(5) = second component of direction cosine.
X(6) = third component of direction cosine.
F(6)
is the array of current surface loads.
F(1) = first component of load.
F(2) = second component of load.
F(3) = third component of load.
F(4) = first component of moment.
F(5) = second component of moment.
F(6) = third component of moment.
TIME
is the time at which data is requested.
DTIME
is the current time increment.
NSURF
is the surface number for which data is requested.
INC
is the increment number.
Required Output:
V(4)
is the array of current surface velocities.
V(1) = first component of the velocity at the center of rotation.
V(2) = second component of the velocity at the center of rotation.
V(3) = angular velocity.
V(4) = angular velocity around axis defined above with X(4), X(5),
and X(6).
2-64
MOTION (3-D)
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Example
Assume that a rigid surface is identified as surface number 2 and is moving in the
negative x-direction with a velocity of 1.0. The MOTION user subroutine can be
written as follows:
SUBROUTINE MOTION(X,F,V,TIME,DTIME,NSURF,INC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION X(*),V(*),F(*)
IF(NSURF.NE.2) THEN
V(1)=-1.
V(2)=0.
V(3)=0.
V(4)=0.0
ENDIF
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
UGROWRIGID
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
2-65
■ UGROWRIGID
Changes the Size of a Rigid Body During the Analysis
Description
This user subroutine is called when the flag on the UMOTION model definition option
is turned on. The user can define the size of the rigid body as a function of time.
Format
User subroutine UGROWRIGID is written with the following headers:
SUBROUTINE UGROWRIGID(MD,RELX,RELY,RELZ,TIME)
IMPLICIT REAL*8 (A-H,O-Z)
user coding
RETURN
END
where:
Input:
MD
is the rigid body number.
TIME
is the time at which data is requested.
Required Output:
RELX
is the relative size defined by the user in the x-direction with respect
to the original size.
RELY
is the relative size defined by the user in the y-direction with respect
to the original size.
RELZ
is the relative size defined by the user in the z-direction with respect
to the original size.
Note: (1) RELX, RELY, and RELZ must be equal to one another if a rotation is applied to the
rigid body.
(2) At time = 0, RELX = RELY = RELZ = 1.0.
2-66
MSC.Marc Volume D: User Subroutines and Special Routines
UFRIC
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UFRIC
Definition of Friction Coefficients
Description
With this user subroutine, the user can define the variable friction coefficients or
friction factors in conjunction with the CONTACT model definition option. Its call is
triggered by the UFRICTION option.
For distributed based friction, the UFRIC user subroutine is called for every element
containing nodes that are in contact with surfaces at the nodes. These calls are made
every iteration both during the assembly phase and during the stress recovery phase.
In case of the variable IFRIC = 1, 3 or 7, a constant shear friction model is enacted
and the user returns a friction factor m defined in the equation:
ft = -m ky t
where:
ft
is the shear friction force being applied.
m
is the friction factor.
ky
is the shear flow stress of the material being deformed.
t
is the tangent unit vector in the direction of relative sliding velocity.
In case the variable IFRIC = 2, 4, 5 or 6, a Coulomb friction model is enacted,
and the user returns a friction coefficient µ defined in the equation:
ft = -µ fn t
where:
µ
is the friction coefficient.
fn
is the normal stress/force at the point of contact.
is the friction type based upon the 4th field of the 2nd data block of the
UFRICTION option.
IFRIC
MSC.Marc Volume D: User Subroutines and Special Routines
UFRIC
2-67
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Format
User subroutine UFRIC is written with the following headers:
SUBROUTINE UFRIC
(MIBODY,X,FN,VREL,TEMP,YIEL,FRIC,TIME,INC,NSURF)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION X(2),MIBODY(4),VREL(1),TEMP(2)
user coding
RETURN
END
where
Input:
For distributed friction based on nodal stresses:
MIBODY(1)
is the userr element number.
MIBODY(2)
is the side number.
MIBODY(3)
is the surface integration point number.
MIBODY(4)
is the internal element number.
For nodal friction based on nodal forces:
MIBODY(1)
is the userr node number.
MIBODY(2)
is not used; enter 0.
MIBODY(3)
is not used; enter 0.
MIBODY(4)
is the internal node number.
X
is the updated coordinates of contact point where friction is
being calculated.
FN
is the normal stress/force being applied at that point.
VREL
is the relative sliding velocity at contact point.
TEMP1
is the temperature of contact point.
TEMP2
is the voltage of contact point (Joule heating).
YIEL
is the flow stress of workpiece material at contact point.
TIME
is the current time.
INC
is the increment number.
NSURF
is the surface being contacted by the side for which friction calculations are
being made.
Required Output:
FRIC
is the friction coefficient or friction factor to be provided by the user.
2-68
MSC.Marc Volume D: User Subroutines and Special Routines
UFRICBBC
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UFRICBBC
Definition of Friction Coefficients for Beam-to-Beam Contact
Description
This user subroutine allows the user to define variable friction coefficients for beamto-beam contact, similar to the UFRIC user subroutine. Like the UFRIC user
subroutine, UFRICBBC is used in conjunction with the CONTACT model definition
option and its call is triggered by the UFRICTION model definition option . Unlike the
UFRIC user subroutine, however, UFRICBBC is called for every beam or truss element
that is in contact with another beam or truss element. These calls are made every
iteration both during the assembly phase and during the stress recovery phase. If beam
elements contact with other beam elements and some of the nodes of these beam
elements contact with rigid surfaces or with the faces of continuum or shell elements,
the UFRIC user subroutine is called for every node in contact and the UFRICBBC user
subroutine is called for every beam element in contact.
Since only the Coulomb friction model is supported by the beam-to-beam contact
option, the subroutine must return the friction coefficient µ defined by the equation:
ft = -µ fn t
where:
ft
is the friction force at the contact point on the touching element.
µ
is the friction coefficient.
fn
is the normal force at the contact point on the touching element.
t
is -v/|v|, where v is the relative velocity of the contact point on the touching
element with respect to the contact point on the touched element.
Also See
The UFRIC user subroutine.
MSC.Marc Volume D: User Subroutines and Special Routines
UFRICBBC
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
2-69
Format
User subroutine UFRICBBC is written with the following headers:
SUBROUTINE UFRICBBC(MIBODY1,DPOS1,X1,TEMP1,
MIBODY2,DPOS2,X2,TEMP2,
FN,VREL,TIME,TIMINC,INC,FRIC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION MIBODY1(3),X1(3),MIBODY2(3),X2(3),VREL(2)
user coding
RETURN
END
where
Input:
Touching point:
MIBODY1(1)
is the user number of the touching element.
MIBODY1(2)
is the internal number of the touching element.
MIBODY1(3)
is the number of the touching body.
DPOS1
is the natural coordinate (between 0 and 1) of the touching point on the
touching element.
X1
are the updated coordinates of the touching point.
TEMP1
is the temperature of the touching point.
Touched point:
MIBODY2(1)
is the user number of the touched element.
MIBODY2(2)
is the internal number of the touched element.
MIBODY2(3)
is the number of the touched body.
DPOS2
is the natural coordinate (between 0 and 1) of the touched point on the
touched element.
X2
are the updated coordinates of the touched point.
TEMP2
is the temperature of the touched point.
Other input:
FN
is the normal force being applied at that point.
VREL
is the relative sliding velocity of the touching point with respect to the
touched point.
TIME
is the time at the beginning of the increment.
TIMINC
is the current time increment.
INC
is the increment number.
FRIC
is the friction coefficient.
Required Output:
FRIC
is the friction coefficient.
2-70
MSC.Marc Volume D: User Subroutines and Special Routines
DIGEOM
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ DIGEOM
Definition of 3-D Rigid Surface Patch
Description
In three-dimensional problems in which complicated rigid surfaces need to be entered,
it might be easier to define them with other software aids, such as a CAD system or
an FEA preprocessor. In such cases, this user subroutine lets the user enter the
geometry directly. This user subroutine is used in conjunction with the CONTACT
option for three-dimensional problems only.
Rigid surfaces are normally entered by means of several geometrical entities. If the
discrete representation is used these are internally subdivided into 4-point patches.
This user subroutine allows the user to directly enter the coordinates associated with
each patch.
The DIGEOM user subroutine is called for every geometrical entity of type 7 (patch)
for which the Fortran logical unit from where data is read is declared as -1.
Format
User subroutine DIGEOM is written with the following headers:
SUBROUTINE DIGEOM (IPATCH,NDIE,XYZ,NPATCH)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XYZ(3,4)
user coding
RETURN
END
where:
Input:
IPATCH
is the current patch number of this entity.
NDIE
is the surface (body) number.
NPATCH
is the total number of patches defining this entity.
Required Output:
XYZ
are the three (x, y, z) coordinates of the four points of the patch to be
entered by the user.
MSC.Marc Volume D: User Subroutines and Special Routines
SEPFOR
2-71
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ SEPFOR
Definition of Separation Force
Description
This user subroutine allows the definition of the separation force in conjunction with
the CONTACT model definition option. The separation forces, FNORM and FTANG, are
either calculated by MSC.Marc or entered through the CONTACT option, and then
passed into this user subroutine. The user decides whether these values at the current
increment are appropriate to determine whether separation occurs.
is the normal reaction force above which a node in contact separates from a
surface. Any compressive or negative value indicates real contact while a positive
reaction force indicates a tendency to separate. The default is taken as the maximum
value of the residual force in the structure for the current increment. This value can be
reset by the user through the input format. Defining a too small value can result in an
increased number of iterations. Defining a very large value eliminates the possibility
of separation. FTANG is the tangential force used to determine whether a nodal point
positioned at a convex corner of surface should be sliding from patch to patch or
remaining on its current patch. The default value is half of FNORM. These two default
reaction forces vary from increment to increment.
FNORM
Format
User subroutine SEPFOR is written with the following headers:
SUBROUTINE SEPFOR (FNORM,FTANG,IBODY,NNODE,INC)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
IBODY
is the current body number the node touched.
NNODE
is the current touched external node number.
INC
is the current increment number.
Required Output:
FNORM
is the normal separation force to be supplied by the user.
FTANG
is the tangential separation force to be supplied by the user.
2-72
MSC.Marc Volume D: User Subroutines and Special Routines
SEPFOR
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Example
If the user desires the default separation force for surface 2, and does not want any
separation of nodes from surface 3, the user subroutine is written as follows:
SUBROUTINE SEPFOR (FNORM,FTANG,IBODY,NNODE,INC)
IMPLICIT REAL *8 (A-H, O-Z)
IF(IBODY.NE.3)GO TO 999
C
RESET FNORM TO A VERY LARGE VALUE TO ELIMINATE
POSSIBILITY OF
C
SEPARATION
FNORM=2.E7
C
WRITE(6,101) IBODY,FNORM,NNODE,INC
101 FORMAT(‘THE SEPARATION FORCE OF BODY ‘,15,
*HAS BEEN RESET TO BE ‘,E15.5,
*FOR NODE ‘,15,’ AT INCREMENT ‘,15)
999 CONTINUE
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
SEPFORBBC
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
2-73
■ SEPFORBBC
Definition of Separation Force for Beam-to-Beam Contact
Description
This user subroutine allows the definition of the separation force for beam-to-beam
contact, similar to the SEPFOR user subroutine. Like SEPFOR, SEPFORBBC is used in
conjunction with the CONTACT model definition option. Unlike the SEPFOR user
subroutine, however, SEPFORBBC is called for every beam or truss element that is in
contact with another beam or truss element. If beam elements contact with other beam
elements and some of the nodes of these beam elements contact with rigid surfaces or
with the faces of continuum or shell elements, then the SEPFOR user subroutine is
called for every node in contact and the SEPFORBBC user subroutine is called for
every beam element in contact.
The FSEP separation force is either calculated by MSC.Marc or entered through the
CONTACT or CONTACT TABLE option, and then passed into this user subroutine. It is
the normal reaction force above which a beam element in contact separates from
another beam element. Any compressive or negative value indicates real contact while
a positive force indicates a tendency to separate. The user decides whether these
values at the current increment are appropriate to determine whether separation
occurs. The default separation force calculated by MSC.Marc is the maximum value
of the residual force in the structure for the current increment.
Also See
The SEPFOR user subroutine.
2-74
SEPFORBBC
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Format
User subroutine SEPFORBBC is written with the following headers:
SUBROUTINE SEPFORBBC(MIBODY1,MIBODY2,TIME,TIMINC,INC,FSEP)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION MIBODY1(3),MIBODY2(3)
user coding
RETURN
END
where:
Input:
Touching element:
MIBODY1(1)
is the user number of the touching element.
MIBODY1(2)
is the internal number of the touching element.
MIBODY1(3)
is the number of the touching body.
Touched element:
MIBODY2(1)
is the user number of the touched element.
MIBODY2(2)
is the internal number of the touched element.
MIBODY2(3)
is the number of the touched body.
Other input:
TIME
is the time at the beginning of the increment.
TIMINC
is the current time increment.
INC
is the increment number.
FSEP
is the separation force.
Required Output:
FSEP
is the separation force.
MSC.Marc Volume D: User Subroutines and Special Routines
SEPSTR
2-75
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ SEPSTR
Definition of Separation Stress
Description
This user subroutine allows the definition of the separation stress in conjunction with
the CONTACT model definition option. The separation stresses, SNORM and STANG, are
either calculated by MSC.Marc or entered through the CONTACT option, and then
passed into this user subroutine. The user decides whether these values at the current
increment are appropriate to determine whether separation occurs.
SNORM is the stress normal to the surface above which a node in contact separates from
another body. Any compressive or negative value indicates real contact while a
positive stress indicates a tendency to separate. The default is taken as the maximum
value of the residual force in the structure for the current increment divided by an
effective area. This value can be reset by the user through the input format. Defining
a too small value can result in an increased number of iterations. Defining a very large
value eliminates the possibility of separation. STANG is the tangential stress used to
determine whether a nodal point positioned at a convex corner of surface should be
sliding from patch to patch or remaining on its current patch. The default value is half
of SNORM. These two default values vary from increment to increment.
Format
User subroutine SEPSTR is written with the following headers:
SUBROUTINE SEPSTR (SNORM,STANG,IBODY,NNODE,INC)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
IBODY
is the current body number the node touched.
NNODE
is the current touched external node number.
INC
is the current increment number.
Required Output:
SNORM
is the normal separation stress to be supplied by the user.
STANG
is the tangential separation stress to be supplied by the user.
2-76
MSC.Marc Volume D: User Subroutines and Special Routines
UHTCOE
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UHTCOE
Definition of Environment Film Coefficient
Description
This user subroutine allows the definition of variable film coefficients and sink
temperatures on free surfaces, in conjunction with the CONTACT option and the
COUPLE parameter. Its call is triggered by the UHTCOEF option.
The UHTCOE user subroutine is called at every element surface containing nodes that
are on a free body boundary and for each surface at the trapezoidal rule integration
points (that is, the nodes). These calls are made every iteration both during the
assembly phase and the recovery phase of the heat transfer pass of a coupled analysis.
A distributed heat flux is being calculated according to the equation:
q = H(T - TS)
where:
q
is the heat flux entering the surface.
T
is the surface temperature.
TS
is the sink temperature.
H
is the film coefficient.
By modifying H and TS, the user can model varying heat transfer conditions along
the boundary. Special attention has been given to provide the user the capability of
simulating radiation heat transfer, by making available the location and temperatures
of all the surfaces in the environment.
The user can either specify H and TS or specify the flux q directly which is treated
strictly as such.
MSC.Marc Volume D: User Subroutines and Special Routines
UHTCOE
2-77
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Format
User subroutine UHTCOE is written with the following headers:
SUBROUTINE UHTCOE(MIBODY,XP,TEMP,IBODY,ICONNO,XORD,XT,DXT,
TMPALL,TMPALO,TOTINC,TIMINC,INC,NCRD,
NDEGS,NDEGH,NCRDMX,NDEGMX,NBCD,NBCN,TSINK,
HTCOEF,IFLAG)
IMPLICIT REAL *8(A-H,O-Z)
DIMENSION MIBODY(*),XP(*),ICONNO(*),XORD(*),XT(*),DXT(*),
+
TEMP(*),TMPALL(*),NBCD(*),,TSINK(*),TMPALO(*)
+
+
+
user coding
RETURN
END
where:
Input
MIBODY(1)
is the element number where the surface flux is being calculated.
MIBODY(2)
is the side of the element.
MIBODY(3)
is the integration point of said side.
MIBODY(4)
is the internal element number.
XP(NCRD)
are the coordinates of point where calculation is being made; it is
updated to end of increment.
TEMP(2)
is the current temperature of said point.
TEMP(4)
is the current voltage of said point.
TEMP(5)
is the pressure of said point.
IBODY
is the flexible surface to which point belongs.
ICONNO(*)
are the nodal points that make up the boundary of the deformable
surfaces declared in the CONTACT option.
NBCN
is the upper bound to the number of nodes on a flexible
surface boundary.
NBCD(*)
is the array of actual number of boundary nodes on flexible surfaces.
XORD(*)
is the array of original nodal point coordinates.
XT(*)
is the array of nodal point displacements.
DXT(*)
is the array of nodal displacement increments.
TMPALL(*)
is the array of nodal temperatures (current estimate at end of increment).
TMPALO(*)
is the array of nodal temperatures (at beginning of increment).
TOTINC
is the current accumulated time.
TIMINC
is the time increment.
INC
is the increment number.
2-78
MSC.Marc Volume D: User Subroutines and Special Routines
UHTCOE
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
NCRD
is the number of coordinates per node.
NDEGS
is the number of degrees of freedom per node for the stress part of
the analysis.
NDEGH
is the number of degrees of freedom per node for the thermal part of the
analysis (usually 1).
NCRDMX
is the maximum number of coordinates per node for the whole model
(can be different from NCRD if different element types are used).
NDEGMX
is the maximum number of degrees of freedom per node for the whole
model (can be different from NDEG if different element types are used).
TSINK(4)
is the sink voltage declared in the CONTACT option for this
flexible surface.
TSINK(5)
is the sink pressure declared in CONTACT option for this
flexible surface.
Required Output
IFLAG
=0 HTCOEF is a heat transfer coefficient
=1 HTCOEF is a flux.
HTCOEF
is the heat transfer coefficient between surface and environment, such
that the heat flux per unit area that leaves the surface is:
Q = HTCOEF (TEMP - TSINK)
or
the heat flux per unit area that leaves the surface.
TSINK(2)
is the sink temperature declared in the CONTACT option for this
flexible surface.
MSC.Marc Volume D: User Subroutines and Special Routines
UHTCON
2-79
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UHTCON
Definition of Contact Film Coefficient
Description
This user subroutine allows the definition of variable film coefficients of surfaces that
are in contact with other surfaces in conjunction with the CONTACT option and
COUPLE parameter. Its call is triggered by the UHTCON option.
The UHTCON user subroutine is called at every element surface containing nodes that
are on a body boundary that is in contact, and for each surface at the trapezoidal rule
integration points (that is, the nodes). These calls are made every iteration during both
the assembly phase and the stress recovery phase of the heat transfer pass of a
coupled analysis.
A distributed heat flux is being calculated according to the equation
q = HD(T - TD)
where:
q
is the heat flux entering the surface.
T
is the surface temperature.
TD
is an interpolated temperature of the body being contacted.
HD
is the film coefficient.
By modifying HD, the user can model varying heat transfer conditions along the
contact regions.
Format
User subroutine UHTCON is written with the following headers:
SUBROUTINE UHTCON(MIBODY,XP,TEMP,IBODY,IOBODY,FN,TOTINC,
+TIMINC,INC,NCRD,NDEG,TSINK,HTCOEF)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION MIBODY(4),XP(*),TMEP(*),TSINK(*)
user coding
RETURN
END
2-80
MSC.Marc Volume D: User Subroutines and Special Routines
UHTCON
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
where:
Input
MIBODY(1)
is the element where the surface flux is being calculated.
MIBODY(2)
is the side of said element.
MIBODY(3)
is the integration point of said side.
MIBODY(4)
is the internal element number.
XP(NCRD)
is the coordinates of point where calculation is being made; it is updated
to end of increment.
TEMP(2)
is the temperature of said pointer.
TEMP(4)
is the voltage of said point.
TEMP(5)
is the pressure of said point.
IBODY
is the flexible surface to which point belongs.
IOBODY
is the surface being contacted.
FN
is the contact pressure between contacting surfaces.
TOTINC
is the current accumulated time.
TIMINC
is the time increment.
INC
is the current increment.
NCRD
is the number of coordinates per node.
NDEG
is the number of degrees of freedom per node.
TSINK(2)
is the temperature of surface being contacted.
TSINK(4)
is the voltage of surface being contacted.
TSINK(5)
is the pressure of surface being contacted.
Required Output
HTCOEF
is the heat transfer coefficient between surfaces in contact, such that the
heat flux per unit area that leaves the surface is:
Q = HTCOEF (TEMP(2) - TSINK(2)).
MSC.Marc Volume D: User Subroutines and Special Routines
UHTNRC
2-81
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UHTNRC
Definition of Thermal Near Contact Film Coefficient
Description
This user subroutine allows the definition of variable film coefficients of surfaces that
are almost in contact with other surfaces in conjuction with the CONTACT option and
COUPLE parameter. Its call is triggered by the UHTCON option.
The UHTNRC user subroutine is called at every element surface containing nodes that
are on a body boundary that is almost in contact, and for each surface at the trapezoidal
rule integration points (that is, the nodes). These calls are made every iteration both
during the assembly phase and the recovery phase of the heat transfer pass of a
coupled analysis.
A distributed heat flux is being calculated according to the equation:
q = HD ( T – TD ) + HDN ( T – TD )
HEX
4
4
+ EMS ( T – TD )
d 
 HDC – ( HDC – HDD ) ----------- ( T – TD )

d near
where:
q
is the heat flux entering the surface.
T
is the surface temperature.
TD
is the interpolated temperature of the body being contacted.
HD
is the heat transfer coefficient between surfaces.
HDN
is the heat transfer coefficient of natural convection between surfaces.
HEX
is the exponent associated with natural convection between surfaces.
EMS
is the emissivity for radiation calculation between surfaces.
HDC
is the upper bound in distance dependent heat transfer coefficient.
HDD
is the lower bound in distance dependent heat transfer coefficient.
d
d near
is the distance between the surfaces.
is the upper limit of the near contact distance.
By modifying HD, HDN, HEX, EMS, HDC, and HDD, the user can model varying heat transfer
conditions along the boundary, which are dependent of the distance between the
contacting surfaces.
2-82
MSC.Marc Volume D: User Subroutines and Special Routines
UHTNRC
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Format
User subroutine UHTNRC is written with the following headers:
SUBROUTINE UHTNRC(MIBODY,XP,TEMP,IBODY,IOBODY,FN,TOTINC,
+
TIMINC,INC,NCRD,NDEG,TSINK,HTCOEF,
+
HTNAT,EXPNAT,EMIS,HDD,HC,D)
IMPLICIT REAL*8(A-H, O-Z)
DIMENSION MIBODY(4),XP(*),TEMP(*),TSINK(*)
RETURN
END
where:
Input
MIBODY(1)
is the element where the surface flux is being calculated.
MIBODY(2)
is the side of said element.
MIBODY(3)
is the integration point of said side.
XP(NCRD)
is the coordinates of point where calculation is being made; it is updated
to end of increment.
TEMP(2)
is the temperature of said point.
TEMP(4)
is the voltage of said point.
TEMP(5)
is the pressure of said point.
IBODY
is the flexible surface to which point belongs.
IOBODY
is the surface being contacted.
FN
is the contact pressure between contacting surfaces.
TOTINC
is the current accumulated time.
TIMINC
is the time increment.
INC
is the current increment.
NCRD
is the number of coordinates per node.
NDEG
is the number of degrees of freedom per node.
TSINK(2)
is the temperature of surface being contacted.
TSINK(4)
is the voltage of surface being contacted.
TSINK(5)
is the pressure of surface being contacted.
D
is the distance between the surfaces.
Required Output
HTCOEF
is the heat transfer coefficient between surfaces almost in contact.
HTNAT
is the heat transfer coefficient of natural convection between surfaces
almost in contact.
MSC.Marc Volume D: User Subroutines and Special Routines
UHTNRC
2-83
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
EXPNAT
is the exponent associated with natural convection between surfaces
almost in contact.
EMIS
is the emissivity for radiation calculation between surfaces almost in
contact.
HDD
is the lower bound of the distance dependent heat transfer coefficient.
HC
is the upper bound of the distance dependent heat transfer coefficient,
such that the heat flux per unit area that leaves the surface is
Q = HTCOEF ( TEMP(2) - TSINK(2) ) +
HTNAT * ( TEMP(2) - TSINK(2) ) ** EXPNAT +
SIGMA * EMIS * ( TEMP(2) ** 4 - TSINK(2) ** 4 ) +
( HC - ( HC - HDD ) * d / dnear ) * ( TEMP(2) - TSINK(2) )
2-84
MSC.Marc Volume D: User Subroutines and Special Routines
UVTCOE
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UVTCOE
Definition of Environment Electrical Film Coefficient
Description
This subroutine allows the definition of variable electrical film coefficients and sink
voltage of free surfaces, in conjunction with the CONTACT option and JOULE
parameter. Its call is triggered by the UHTCOEF option.
The UVTCOE user subroutine is called at every element surface containing nodes that
are on a free body boundary and for each surface at the trapezoidal rule integration
points (that is, the nodes). These calls are made every iteration both during the
assembly phase and the recovery phase of the electrical pass of a coupled structuralJoule heating analysis.
A distributed electrical heat flux is being calculated according to the equation:
q = H ( V – VS )
where:
q
is the electrical flux entering the surface.
V
is the surface voltage.
VS
is the sink voltage.
H
is the film coefficient.
By modifying H and VS, the user can model varying electrical transfer conditions along
the boundary. Special attention has been given to provide the user the capability of
simulating complex behavior, by making available the location and temperatures of
all the surfaces in the environment.
The user can either specify H or VS or specify the flux q directly which is treated strictly
as such.
MSC.Marc Volume D: User Subroutines and Special Routines
UVTCOE
2-85
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Format
User subroutine UVTCOE is written with the following headers:
SUBROUTINE UVTCOE(MIBODY,XP,TEMP,IBODY,ICONNO,XORD,XT,DXT,
+
TMPALL,TMPALO,TOTINC,TIMINC,INC,NCRD,
+
NDEGS,NDEGH,NCRDMX,NDEGMX,NBCD,NBCN,TSINK,
+
ETCOEF,IFLAG)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION MIBODY(*),XP(*),ICONNO(*),XORD(*),XT(*),DXT(*),
+
TEMP(*),TMPALL(*),NBCD(*),TSINK(*)
user coding
RETURN
END
where:
Input
MIBODY(1)
is the element where the surface flux is being calculated.
MIBODY(2)
is the side of said element.
MIBODY(3)
is the integration point of said side.
MIBODY(4)
is the internal element number.
XP(NCRD)
is the coordinates of point where calculation is being made; it is updated
to end of increment.
TEMP(2)
is the temperature of said point.
TEMP(4)
is the voltage of said point.
TEMP(5)
is the pressure of said point.
IBODY
is the flexible surface to which point belongs.
ICONNO(*)
are the nodal points that make the boundary of deformable surfaces
declared in option contact.
NBCN
is the upper bound to the number on nodes on a flexible
surface boundary.
NBCD(*)
is the array of actual number of boundary nodes on flexible surfaces.
XORD(*)
is the array of original nodal point coordinates.
XT(*)
is the array of nodal point displacements.
DXT(*)
is the array of nodal displacement increments.
TMPALL(*)
is the array of nodal voltage (current estimate at end of increment).
TMPALO(*)
is the array of nodal voltage (at beginning of increment).
TOTINC
is the current accumulated time.
TIMINC
is the time increment.
2-86
MSC.Marc Volume D: User Subroutines and Special Routines
UVTCOE
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
INC
is the current increment.
NCRD
is the number of coordinates per node.
NDEGS
is the number of degrees of freedom per node for the stress part of
the analysis.
NDEGH
is the number of degrees of freedom per node for voltage (usually 1).
NCRDMX
is the maximum number of coordinates per node for the whole model
(can be different from NCRD if different element types are used).
NDEGMX
is the maximum number of degrees of freedom per node for the whole
model (can be different from NDEG if different element types are used).
TSINK(2)
is the sink temperature declared in CONTACT option for this
flexible surface.
TSINK(4)
is the sink voltage declared in CONTACT option for this flexible surface.
TSINK(5)
is the sink pressure declared in CONTACT option for this
flexible surface.
Required Output
IFLAG
= 0 ETCOEF is a electrical transfer coefficient.
= 1 ETCOEF is a flux.
ETCOEF
is the electrical transfer coefficient between surface and environment,
such that the heat flux per unit area that leaves the surface is:
q = ETCOEF (VOLT - VSINK)
or
the electrical flux per unit area that leaves the surface.
MSC.Marc Volume D: User Subroutines and Special Routines
UVTCON
2-87
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UVTCON
Definition of Electrical Film Coefficient
Description
This subroutine allows the definition of variable electrical film coefficients of
surfaces that are in contact with other surfaces in conjunction with the CONTACT
option and the JOULE parameter. Its call is triggered by the UHTCON option.
The UVTCON user subroutine is called at every element surface containing nodes that
are on a body boundary that is in contact, and for each surface at the trapezoidal rule
integration points (that is, the nodes). These calls are made every iteration during both
the assembly phase and the recovery phase of the electrical pass of a coupled
structural-Joule heating analysis.
A distributed heat flux is being calculated according to the equation:
q = HD ( V – VD )
where:
q
is the electrical flux entering the surface.
V
is the surface voltage.
VD
is the interpolated voltage of the body being contacted.
HD
is the film coefficient.
By modifying HD and VD, the user can model varying electrical transfer conditions
along the boundary.
Format
User subroutine UVTCON is written with the following headers:
+
SUBROUTINE UVTCON(MIBODY,XP,TEMP,IBODY,IOBODY,FN,TOTINC,
TIMINC,INC,NCRD,NDEG,TSINK,ETCOEF)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION MIBODY(4),XP(*),TEMP(*),TSINK(*)
RETURN
END
2-88
MSC.Marc Volume D: User Subroutines and Special Routines
UVTCON
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
where:
Input
MIBODY(1)
is the element where the surface flux is being calculated.
MIBODY(2)
is the side of said element.
MIBODY(3)
is the integration point of said side.
XP(NCRD)
are the coordinates of point where calculation is being made; it is
updated to end of increment.
TEMP(2)
is the temperature of said point.
TEMP(4)
is the voltage of said point.
TEMP(5)
is the pressure of said point.
IBODY
is the flexible surface to which point belongs.
IOBODY
is the surface being contacted.
FN
is the contact pressure between contacting surfaces.
TOTINC
is the current accumulated time.
TIMINC
is the time increment.
INC
is the current increment.
NCRD
is the number of coordinates per node.
NDEG
is the number of degrees of freedom per node.
TSINK(2)
is the temperature of surface being contacted.
TSINK(4)
is the voltage of surface being contacted.
TSINK(5)
is the pressure of surface being contacted.
ETCOEF
is the electrical transfer coefficient between surfaces in contact, such
that the electrical flux per unit area that leaves the surface is
TSINK(2)
is the temperature of surface being contacted.
TSINK(4)
is the voltage of surface being contacted.
TSINK(5)
is the pressure of surface being contacted.
Required Output
ETCOEF
is the electrical transfer coefficient between surfaces in contact, such
that the electrical flux per unit area that leaves the surface is:
Q = ETCOEF (TEMP(4) - TSINK(4))
MSC.Marc Volume D: User Subroutines and Special Routines
UVTNRC
2-89
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UVTNRC
Definition of Electrical Near Contact Film Coefficient
Description
This subroutine allows the definition of variable electrical film coefficients of
surfaces that are almost in contact with other surfaces in conjuction with the CONTACT
option and the JOULE parameter. Its call is triggered by the UHTCON option.
The UVTNRC user subroutine is called at every element surface containing nodes that
are on a body boundary that is almost in contact, and for each surface at the trapezoidal
rule integration points (that is, the nodes). These calls are made every iteration both
during the assembly phase and the recovery phase of the electrical pass of a coupled
structural-Joule heating analysis.
A distributed electrical flux is being calculated according to the equation:
d
q = ET ( V – VD ) +  ETC – ( ETC – EDD ) ------------ ( V – VD )
dnear
where:
q
is the electrical flux entering the surface.
V
is the surface voltage.
VD
is the interpolated voltage of the body being contacted.
ET
is the electrical transfer coefficient between surfaces.
ETC
is the upper bound in distance dependent electrical transfer coefficient.
EDD
is the lower bound in distance dependent electrical transfer coefficient.
d
d near
is the distance between the surfaces.
is the upper limit of the near contact distance.
By modifying ET, ETC and EDD, the user can model varying electrical transfer
conditions along the boundary, which are dependent of the distance between the
contacting surfaces.
2-90
MSC.Marc Volume D: User Subroutines and Special Routines
UVTNRC
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Format
User subroutine UVTNRC is written with the following headers:
SUBROUTINE UVTNRC(MIBODY,XP,TEMP,IBODY,IOBODY,FN,TOTINC,
+
TIMINC,INC,NCRD,NDEG,TEMPO,ETCOEF,ETDD,ETC,D)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION MIBODY(4),XP(*),TEMP(*),TEMPO(*)
RETURN
END
where:
Input
MIBODY(1)
MIBODY(2)
MIBODY(3)
XP(NCRD)
TEMP(2)
TEMP(4)
TEMP(5)
IBODY
IOBODY
FN
TOTINC
TIMINC
INC
NCRD
NDEG
TEMPO(2)
TEMPO(4)
TEMPO(5)
D
is the element where the surface flux is being calculated.
is the side of said element.
is the integration point of said side.
is the coordinates of point where calculation is being made; it is updated
to end of increment.
is the temperature of said point.
is the voltage of said point.
is the pressure of said point.
is the flexible surface to which point belongs.
is the surface being contacted.
is the contact pressure between contacting surfaces.
is the current accumulated time.
is the time increment.
is the current increment.
is the number of coordinates per node.
is the number of degrees of freedom per node.
is the temperature of surface being contacted.
is the voltage of surface being contacted.
is the pressure of surface being contacted.
is the distance between the surfaces.
Required Output
ETCOEF
ETDD
ETC
is the electrical transfer coefficient between surfaces in contact.
is the lower bound of the distance dependent electrical
transfer coefficient.
is the upper bound of the distance dependent electrical transfer
coefficient, such that the electrical flux per unit area that leaves the
surface is
Q = ETCOEF ( TEMP(4) - TEMPO(4) ) +
( ETC - ( ETC - ETDD ) * d / dnear ) * ( TEMP(4) - TEMPO(4) )
MSC.Marc Volume D: User Subroutines and Special Routines
UMDCOE
2-91
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UMDCOE
Definition of Environment Mass Diffusion Coefficient
Description
This user subroutine allows the definition of variable mass diffusion coefficients and
sink pressure on free surfaces, in conjunction with the CONTACT option and
DIFFUSION or PYROLYSIS parameter. Its call is triggered by the UHTCOEF option.
The UMDCOE user subroutine is called at every element surface containing nodes that
are on a free body boundary and for each surface at the trapezoidal rule integration
points (that is, the nodes). These calls are made every iteration both during the
assembly phase and the recovery phase of the mass diffusion pass of an analysis.
A distributed mass flux is being calculated according to the equation:
q = H(P - PS)
where:
q
P
PS
H
is the mass flux entering the surface.
is the surface pressure.
is the sink pressure.
is the film coefficient.
By modifying H and PS, the user can model varying mass diffusion conditions along
the boundary.
The user can either specify H and PS or specify the flux q directly which is treated
strictly as such.
Format
User subroutine UMDCOE is written with the following headers:
SUBROUTINE UMDCOE(MIBODY,XP,TEMP,IBODY,NF,XORD,XT,DXT,PRSALL,
+PRSALO,TOTINC,TIMINC,INC,NCRD,NDEGS,NDEGH,NCRDMX,NDEGMX,NBCD
,NBCN,
+TSINK,PRCOEF,IFLAG)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION
MIBODY(4),XP(1),NF(NBCN,1),XORD(NCRDMX,*),XT(NDEGMX,*),
+DXT(NDEGMX,*),TMPALL(1),NBCD(1),PRSPALO(1),TEMP(*),TSINK(*)
user coding
RETURN
END
2-92
MSC.Marc Volume D: User Subroutines and Special Routines
UMDCOE
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
where:
MIBODY(1)
is the element where the surface flux is being calculated.
MIBODY(2)
is the side of said element.
MIBODY(3)
is the integration point of said side.
MIBODY(4)
is the internal element number.
XP(NCRD)
are the coordinates of point where calculation is being made, updated to
end of increment.
TEMP(2)
is the temperature of said point.
TEMP(4)
is the voltage of said point.
TEMP(5)
is the pressure of said point.
IBODY
is the flexible surface to which point belongs.
NF(NBCN,1)
are the nodal points that make the boundary of deformable surfaces
declared in the CONTACT option.
NBCN
is the upper bound to the number of nodes on a flexible surface boundary.
NBCD(1)
is the array of actual number of boundary nodes on flexible surfaces.
XORD(1)
is the array of original nodal point coordinates.
XT(1)
is the array of nodal point displacements.
DXT(1)
is the array of nodal displacement increments.
PRSALL(1)
is the array of nodal pressure (current estimate at end of increment).
PRSALO(1)
is the array of nodal pressure (at beginning of increment).
TOTINC
is the current accumulated time.
TIMINC
is the time increment.
INC
is the increment number.
NCRD
is the number of coordinates per node of this element.
NDEGS
is the number of degrees of freedom per node for structural (stress) part of
the analysis.
NDEGH
is the number of heat transfer degrees of freedom.
NCRDMX
is the maximum number of coordinate per node in this model.
NDEGMX
is the maximum number of structural degrees of freedom per node in
this model.
TSINK(2)
is the sink temperature declared in contact option for this flexible surface.
TSINK(4)
is the sink voltage declared in contact option for this flexible surface.
MSC.Marc Volume D: User Subroutines and Special Routines
UMDCOE
2-93
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
TSINK(5)
is the sink pressure declared in contact option for this flexible surface.
IFLAG
=0 PRCOEF is a heat transfer coefficient
=1 PRCOEF is a flux.
PRCOEF
is the mass diffusion coefficient between surface and environment, such
that the mass flux per unit area that leaves the surface is:
Q = PRCOEF (TEMP(5) - TSINK(5))
or
the mass flux per unit area that leaves the surface.
PRCOEF is to be defined here.
2-94
MSC.Marc Volume D: User Subroutines and Special Routines
UMDCON
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UMDCON
Definition of Contact Mass Diffusion Coefficient
Description
This user subroutine allows the definition of variable mass diffusion coefficients of
surfaces that are in contact with other surfaces in conjunction with the CONTACT
option and DIFFUSION or PYROLYSIS parameter. Its call is triggered by the
UHTCON option.
The UMDCON user subroutine is called at every element surface containing nodes that
are on a body boundary that is in contact, and for each surface at the trapezoidal rule
integration points (that is, the nodes). These calls are made every iteration both
during the assembly phase and the stress recovery phase of the mass diffusion pass
of an analysis.
A distributed mass flux is being calculated according to the equation:
q = PC(P - PD)
where:
q
is the mass flux entering the surface.
P
is the surface pressure.
PD
is an interpolated pressure of the body being contacted
PC
is the film coefficient.
By modifying HPD, the user can model varying heat transfer conditions along the
contact regions.
Format
User subroutine UMDCON is written with the following headers:
SUBROUTINE
UMDCON(MIBODY,XP,TEMP,IBODY,IOBODY,FN,TOTINC,TIMINC,
+INC,NCRD,NDEG,TSINK,PC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION MIBODY(4),XP(1),TEMP(*),TSINK(*)
user coding
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
UMDCON
2-95
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
where:
MIBODY(1)
is the element where the surface flux is being calculated.
MIBODY(2)
is the side of said element.
MIBODY(3)
is the integration point of said side.
MIBODY(4)
is the internal element number.
XP(NCRD)
are the coordinates of point where calculation is being made, updated to end
of increment.
TEMP(2)
is the temperature of said point.
TEMP(4)
is the voltage of said point.
TEMP(5)
is the pressure of said point.
IBODY
is the flexible surface to which point belongs.
IOBODY
is the surface being contacted.
FN
is the contact pressure between contacting surfaces.
TOTINC
is the current accumulated time.
TIMINC
is the time increment.
INC
is the increment number.
NCRD
is the number of coordinates per node.
NDEG
is the number of degrees of freedom per node.
TSINK(2)
is the temperature of surface being contacted.
TSINK(4)
is the voltage of surface being contacted.
TSINK(5)
is the pressure of surface being contacted.
PC
is the heat transfer coefficient between surface in contact, such that the heat
flux per unit area that leaves the surface is:
Q = PC (P-PD)
2-96
MSC.Marc Volume D: User Subroutines and Special Routines
UMDNRC
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UMDNRC
Definition of Mass Diffusion Coefficients between Surfaces
almost in Contact
Description
The UMDNRC user subroutine allows the definition of the convection between
surfaces that are nearly in contact. If the surfaces are not close to one another, the
convective coefficients defined by the UMDCOE user subroutine will be used. If the
surfaces are in contact, then the values from UHTCON will be used. The CONTACT
option and UHTCON option must be included.
The UMDNRC user subroutine is called at every element surface containing nodes that
are on the boundary that are also close to contact. These calls are made every iteration
during both the assembly phase and the recovery phase of the mass diffusion pass of
an analysis.
A distributed heat flux is being calculated according to the equation
Q = PRCOEF * ( P2 – P1 ) + PRDD * ( P2 – P1 )
where:
PRCOEF
P2, P1
are provided by the user.
are the pressure on the contacted surface and contacting surface respectively.
DN
PRDD = PRC – ( PRC – PRDD ) * ------------------------DQNEAR
DN is the normal distance between the current point and the closest surface.
DQNEAR is the distance at which bodies are considered to be near one another,
defined by user in the CONTACT TABLE option.
MSC.Marc Volume D: User Subroutines and Special Routines
UMDNRC
2-97
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
Format
User subroutine UMDNRC is written with the following headers:
SUBROUTINE
UMDNRC(MIBODY,XP,TEMP,IBODY,IOBODY,FN,TOTINC,TIMINC,
* INC,NCRD,NDEG,TEMPO,PRCOEF,PRDD,PRC,DN)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION MIBODY(4),XP(*),TEMP(*),TEMPO(*)
user coding
RETURN
END
where:
Input
MIBODY(1)
is the element where the surface flux is being calculated.
MIBODY(2)
is the side of said element.
MIBODY(3)
is the integration point of said side.
TEMP(2)
is the temperature of said point.
TEMP(4)
is the voltage of said point.
TEMP(5)
is the pressure of said point.
IBODY
is the flexible surface to which point belongs.
IOBODY
is the surface being contacted.
FN
is the contact pressure between contacting surfaces.
TOTINC
is the current accumulated time.
TIMINC
is the time increment.
INC
is the current increment.
NCRD
is the number of coordinates per node.
NDEG
is the number of degrees of freedom per node.
TEMPO(2)
is the temperature of surface being contacted.
TEMPO(4)
is the voltage of surface being contacted.
TEMPO(5)
is the pressure of surface being contacted.
DN
is the distance to the contact surface.
Required Output
PRCOEF
is the mass diffusion coefficient between surfaces almost in contact
PRDD
is the lower bound on the distance dependent mass diffusion coefficient
PRC
is the upper bound on the distance dependent mass diffusion coefficient,
usually equal to the contact mass diffusion coefficient
2-98
MSC.Marc Volume D: User Subroutines and Special Routines
UNORST
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UNORST
Definition of Normal Stress, Flow Stress and Temperature at
Contact Node
Description
With this user subroutine, The user can define the normal stress at each node in contact
instead of using the extrapolated value from the integration points. It is only called for
user-defined elements and is used in the calculation of Coulomb friction for contact
analysis. The magnitude of the user-defined normal stress must be in the local system
of the patch to which the nodal point is in contact with.
Format
User subroutine UNORST is written with the following headers:
+
SUBROUTINE UNORST(STRINT,USTR,TRANS,NODE,IBODY,KC,
NDIE,NODCLS,LMM,NOD,M,N,TIMINC,NDIM,NDEG,NSTRMX,
NNODE,INTEL)
IMPLICIT REAL *8 (A-H, O-Z)
C
DIMENSION STRINT(8,INTEL),USTR(NDIM,1)
DIMENSION LMM(1),NODCLS(1),TRANS(3,3)
user coding
C
C
RETURN
END
where:
Input
STRINT (1-NSTRMX,INTEL)
are the stresses at all integration points.
STRINT (NSTRMX+1,INTEL)
is the temperature at all integration points.
STRINT (NSTRMX+2,INTEL)
is the flow stress at all integration points.
USTR (2,NODE)
is the current sliding velocity in the first local direction.
USTR(NSTRMX+1, NNODE)
is the temperature at node.
USTR(NSTRMX+2, NNODE)
is the flow stress at node.
USTR(NSTRMX+3, NNODE)
is the previous sliding velocity 1.
USTR(NSTRMX+4, NNODE)
is the previous sliding velocity 2.
USTR (2,NODE)
is the current sliding velocity in the first local direction.
MSC.Marc Volume D: User Subroutines and Special Routines
UNORST
2-99
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
USTR (3,NODE)
(in 3-D contact) current sliding velocity in the second
local direction.
TRANS
local transformation matrix at the node.
For 3-D contact:
TRANS(1-3,1)
three components of local x-direction.
TRANS(1-3,2)
three components of local y-direction.
TRANS(1-3,3)
three components of local z-direction.
For 2-D contact:
TRANS(1,1) and TRANS(2,2)
is the directional cosine.
TRANS(1,2)
-sine, TRANS(2,1) is the directional cosine.
TRANS(3,3)
= 1.
NODE
is the current local node number belonging to the
element face (it is neither a MSC.Marc internal node
number nor an external user node number).
IBODY
the element side or face number that the node
belongs to.
KC
is the current layer number.
NDIE
is the die number that the current node touches.
NODCLS
is the node array to indicate if the nodes on the IBODY
are currently in contact. Zero value indicates no
contact and nonzero value is the die number it
currently touches.
LMM
is the connectivity array for current element side or
face (local node number).
for 2-D contact it contains IBODY and IBODY+1
for 3-D contact it stores 1,2,3,4,
for 3-D shell element:
IBODY=1 it stores 1,2,3,4, and 9,10,11,12 if
20-node element.
IBODY=2 it stores 6,5,8,7, and 13,14,15,16 if
20-node element.
IBODY=3 it stores 2,1,5,6, and 9,17,13,18 if
20-node element.
IBODY=4 it stores 3,2,6,7, and 10,18,14,19 if
20-node element.
IBODY=5 it stores 4,3,7,8, and 11,19,15,20 if
20-node element.
IBODY=6 it stores 1,4,8,5, and 12,20,16,17 if
20-node element.
NOD
is the external user node number.
M
is the element number.
N
is the elsto buffer number.
TIMINC
is the time increment.
MSC.Marc Volume D: User Subroutines and Special Routines
2-100 UNORST
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
NDIM
is the NSTRMX+4 for 3-D contact.
NDIM
is the NSTRMX+3 for 2-D contact.
NDEG
is the number of degrees of freedom per node.
NSTRMX
is the maximum number of stress components.
NNODE
is the maximum number of nodes per element.
INTEL
is the number of integration points at which stresses
are stored.
Required Output:
USTR (NSTRMX1,NODE)
is the normal stress at current node.
USTR (NSTRMX+1,NODE)
is the temperature at current node.
USTR (NSTRMX+2,NODE)
is the flow stress at current node.
Example
+
SUBROUTINE UNORST(STRINT,USTR,TRANS,NODE,IBODY,KC,
NDIE,NODCLS,LMM,NOD,M,N,TIMINC,NDIM,NDEG,NSTRMX,NNODE,
INTEL)
INCLUDE ’../COMMON/IMPLICIT
DIMENSION STRNOD(NDIM,NNODE),STRINT(8,INTEL),USTR(NDIM,1)
DIMENSION LMM(1),NODCLS(1),TRANS(3,3)
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
UCONTACT
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
2-101
■ UCONTACT
User-defined Contact Condition
Description
This user subroutine allows The user to calculate his own contact conditions with rigid
surfaces based upon the MSC.Marc contact algorithm. This user subroutine requires
the use of the UCONTACT model definition option and is triggered by this option. In
general, the four stages in MSC.Marc contact procedures are: checking contact,
enforce contact constraint, check separation, and check penetration. The user can
either specify contact conditions at one stage and let MSC.Marc do the work in the
remainder of stages or the user can substitute his calculations for all stages. The calls
and the user’s requirements are defined as follows:
IFLAG=1
at first contact stage; check contact
IFLAG=2
at second contact stage; enforce contact constraint
IFLAG=3
at third contact stage; check separation
IFLAG=4
at fourth contact stage; check penetration
The user must set IUSED=1 if his code is to be used.
Format
User subroutine UCONTACT is written with the following headers:
SUBROUTINE UCONTACT(IPATCH,NDIE,XYZ,NPATCH,XP,DU,XNORM,
+FNORM,FACTOR,DIST,DERROR,THICK,SNORM,TIMINC,CFORCE,
+INC,NCYCLE,ICLOSE,ISEPAR,I2OR3,NODE,IUSED,IFLAG)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XYZ(I2OR3,1),XP(1),DU(1),XNORM(1),SNORM(1)
user coding
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
2-102 UCONTACT
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
where:
Input
IPATCH
is the current patch number.
NDIE
is the surface number.
XYZ(I2OR3,4) are the coordinates of ipatch for 3-D.
XYZ(I2OR3,2) are the coordinates of ipatch for 2-D.
NPATCH
is the total number of patches used to generate the surface.
XP
is the updated nodal coordinates.
DU
is the incremental displacement in global system.
FNORM
is the contact forces at the node.
DERROR
is the contact distance.
THICK
is the shell thickness at the node. For 3-D shell element only.
SNORM
is the shell normal vector at the node. For 3-D shell element only.
TIMINC
is the time step at current increment.
CFORCE
is the default contact separation force.
INC
is the current increment number.
NCYCLE
is the iteration number at current increment.
I2OR3
2 for 2-D contact
3 for 3-D contact.
NODE
is the user’s node number.
Required Output:
XNORM
is the normal vector of current patch.
DIST
is the incremental displacement projected along the normal direction.
FACTOR
is the factor = (normal distance between node and patch)/dist.
ICLOSE
indicates if the node touches the patch.
0 means no touch,
1 is touch. Only redefine if IFLAG=1.
ISEPAR
indicates if the node separates from the patch.
0 means no separation
1 is to separate. Only redefine if IFLAG=3.
IUSED
0 means this user
1 means this user
subroutine is not used during current contact stage.
subroutine is used during current contact stage.
MSC.Marc Volume D: User Subroutines and Special Routines
UCONTACT
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
IFLAG
2-103
2-D contact:
output: iused, iclose and xnorm(1), xnorm(2).
3-D contact:
output: iused, iclose and xnorm(1), xnorm(2), and
xnorm(3).
If IFLAG=2
2-D contact:
output: iused, xnorm(1), xnorm(2). The xnorm are normal vector
of ipatch.
3-D contact:
output: iused, xnorm(1), xnorm(2), xnorm(3). xnorm(4),
xnorm(5), and xnorm(6).
The xnorm(1-3) are the three components of normal vector of ipatch.
The xnorm(4-6) are the three components of tangent vector of ipatch
to define the local-x direction of transformation system. Those two
vectors must be unitized.
If IFLAG=3 output: iused, isepar.
If IFLAG=4 output: iused, dist, and factor.
MSC.Marc Volume D: User Subroutines and Special Routines
2-104 INITPL
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ INITPL
Initialize Equivalent Plastic Strain Values
Description
This user subroutine allows the user to define initial values of equivalent plastic strain.
It is often necessary to enter the amount of previously accumulated plastic strain. This
initial value is only used in the work (strain) hardening calculation when not using
table driven input format it is called in a loop over all the elements in the mesh when
the INITIAL PLASTIC STRAIN option appears in the model definition options with a two
in the second field of the second data block of that option. When using the table driven
input, it is called for those elements specified in the INITIAL PLASTIC STRAIN model
definition option, if a 7 is given in the second field of the second data block and the
initial condition is activated by the LOADCASE model definition option.
Format
User subroutine INITPL is written with the following headers:
SUBROUTINE INITPL(SV,LAYERS,INTPTS,M)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION SV(LAYERS,INTPTS)
user coding
RETURN
END
where:
Input
LAYERS
is the number of layers through the thickness if this is a shell element, or the
number of points in the cross section if this is a beam element. It is 1 for a
continuum element.
INTPTS
is the number of integration points in this element. It is 1 if the CENTROID
parameter is used.
M
is the element number.
Required Output:
SV
is the array of equivalent plastic strains, to be defined here for this element
by the user.
MSC.Marc Volume D: User Subroutines and Special Routines
INITPO
2-105
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ INITPO
Initialize Pore Pressure in an Uncoupled Fluid-Soil Analysis
Description
This user subroutine allows the user to prescribe the initial pore pressure in an
uncoupled fluid-soil analysis. This user subroutine can only be used if an uncoupled
analysis is chosen on the PORE parameter, and the user subroutine is activated using
the INITIAL PORE model definition option.
Format
User subroutine INITPO is written with the following headers:
SUBROUTINE INITPO(POREP,INTPTS,M)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION POREP(INTPTS)
user coding
RETURN
END
where:
Input
INTPTS
is the number of integration points associated with this element.
M
is the user’s element number.
Required Output:
POREP
is the array of pore pressures to be defined for this element.
MSC.Marc Volume D: User Subroutines and Special Routines
2-106 NEWPO
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ NEWPO
Modify Pore Pressure in an Uncoupled Fluid-Soil Analysis
Description
This user subroutine allows the user to modify the pore pressure in an uncoupled fluidsoil analysis. This user subroutine can only be used if a coupled analysis is chosen on
the PORE parameter, and the user subroutine is activated using the CHANGE PORE
model definition option.
Format
User subroutine NEWPO is written with the following headers:
SUBROUTINE NEWPO(POREP,INTPTS,M)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION POREP(INTPTS)
user coding
RETURN
END
where:
Input
INTPTS
is the number of integration points associated with this element.
M
is the user’s element number.
Required Output:
POREP
is the array of pore pressures to be defined for this element.
MSC.Marc Volume D: User Subroutines and Special Routines
UREACB
2-107
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UREACB
Definition of Reactive Boundary Coefficients in an Acoustic
Harmonic Analysis
Description
This user subroutine allows the user to redefine the reactive boundary coefficients as
a function of the frequency in a harmonic acoustic analysis. This data is normally
entered through the CONTACT (2-D) or (3-D) model definition option.
Format
User subroutine UREACB is written with the following headers:
SUBROUTINE UREACB(OXK1,OC1,FREQC,IBODYT,IBODYR)
IMPLICIT REAL*8 (A-H,O-Z)
user coding
RETURN
END
where:
Input:
FREQC
is the frequency in cycles per time.
IBODYT
is the number of the acoustic body.
IBODYR
is the number of the boundary body.
Required Output:
OXK1
= 1./k1 where k1 is the coefficient of reactive boundary.
OC1
= 1./c1 where c1 is the coefficient reactive boundary.
Note that the complex admittance
1
-----------Z(ω)
is defined as
1
1 iω
------------ = ----- + ------ ,
c1 k1
Z(ω)
frequency in radians per time and
Z(ω)
the complex impedance.
with
ω
the
MSC.Marc Volume D: User Subroutines and Special Routines
2-108 UCAV
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UCAV
Input of Volume-Dependant Pressure Load for Cavities
Description
This user subroutine allows the user to define the pressure load for internal cavities.
It is called in every load increment of the analysis for every element in every cavity
in the model, allowing flexibility in the specification of new relations for cavity
pressure loads. This routine is only called if icavity-type = 9. See the DIST LOAD
model definition or Cavity Pressure Loading in MSC.Marc Volume A: Theory and
User Information.
Format
User subroutine UCAV is written with the following headers:
SUBROUTINE UCAV(ICAV,INC,NCYCLE,M,IBODY,VOL,VOLP,AMBPRES,
&
GAMGAS,RPRESS,RTEMP,RDENS,CMASS,CTEMP,PRESS)
IMPLICIT REAL*8 (A-H,O-Z)
User coding
RETURN
END
Note: AMBPRES, GAMGAS, RPRESS, RTEMP, and RDENS are from the CAVITY model
definition option.
where:
Input:
ICAV
is the cavity id.
INC
is the increment number.
NCYCLE
is the cycle number.
M
is the element number.
IBODY
is the load type.
VOL
is the cavity volume at the beginning of the increment.
VOLP
is the cavity volume at beginning of previous increment.
AMBPRES
is the ambient pressure.
GAMGAS
is the Polytropic process exponent.
RPRESS
is the gas reference pressure.
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
RTEMP
is the gas reference temperature.
RDENS
is the gas reference density.
CMASS
is the gas mass at the beginning of the increment.
CTEMP
is the gas temperature at the beginning of the increment.
PRESS
is the cavity pressure as based upon input data.
Required Output:
PRESS
is the total pressure to be applied in this increment.
Optional Output:
CMASS
is the current gas mass (for post processing only).
CTEMP
is the current gas temperature (for post processing only).
UCAV
2-109
MSC.Marc Volume D: User Subroutines and Special Routines
2-110 UOBJFN
Chapter 2 User-defined Loading, Boundary Conditions, and State Variables User Subroutines
■ UOBJFN
Definition of Objective Function and its Gradient
Description
This user subroutine allows The user to define the objective function and its gradient
for design optimization analysis using the current values of the design variables.
Format
User subroutine UOBJFN is written with the following headers:
SUBROUTINE UOBJFN(OBJFN,DVVECT,GRADOF)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION DVVECT(*),GRADOF(*)
User coding
RETURN
END
where:
Input:
DVVECT
is the array of current values of design variables.
Required Output:
OBJFN
is the objective function.
GRADOF
is the gradient vector of the objective function with respect to the
design variables.
Example
SUBROUTINE UOBJFN(OBJFN,DVVECT,GRADOF)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION DVVECT(*),GRADOF(*)
C
OBJFN=2.5D00*DVVECT(1)+0.3D00*DVVECT(2)/DVVECT(3)
GRADOF(1)=2.5D00
GRADOF(2)=0.3D00/DVVECT(3)
GRADOF(3)=-0.3D00*DVVECT(2)/DVVECT(3)**2
C
RETURN
END
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines List
CHAPTER
3
User Subroutine
User-defined Anisotropy and
Constitutive Relations
User Subroutines List
Page
ANELAS .
ANEXP . .
ANKOND
ANPLAS .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-22
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-24
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-17
CRPLAW
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-33
GAPU . . .
GENSTR
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-91
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-82
MSC.Marc Volume D: User Subroutines and Special Routines
3-ii
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines List
User Subroutine
HOOKLW .
HYPELA2 .
Page
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-68
ORIENT .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-20
TENSOF.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-49
UACOUS . . . . . . . . . . .
UARRBO . . . . . . . . . . .
UBEAM . . . . . . . . . . . .
UCOMPL . . . . . . . . . . .
UCRACK . . . . . . . . . . .
UCRPLW (Viscoplastic) .
UDAMAG . . . . . . . . . . .
UELASTOMER . . . . . . .
UELDAM . . . . . . . . . . .
UENERG . . . . . . . . . . .
UEPS . . . . . . . . . . . . . .
UFAIL . . . . . . . . . . . . . .
UFINITE . . . . . . . . . . . .
UGENT . . . . . . . . . . . .
UGRAIN . . . . . . . . . . . .
UMOONY . . . . . . . . . . .
UMU . . . . . . . . . . . . . .
UNEWTN . . . . . . . . . . .
UOGDEN . . . . . . . . . . .
UPERM . . . . . . . . . . . .
UPHI . . . . . . . . . . . . . .
UPOWDR . . . . . . . . . . .
URPFLO. . . . . . . . . . . .
USELEM . . . . . . . . . . .
USHRET . . . . . . . . . . .
USIGMA . . . . . . . . . . . .
USPCHT . . . . . . . . . . .
USPRNG . . . . . . . . . . .
USSUBS . . . . . . . . . . .
UVOID . . . . . . . . . . . . .
UVOIDN . . . . . . . . . . . .
UVOIDRT . . . . . . . . . . .
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
..............................................
3-101
3-99
3-84
3-89
3-47
3-31
3-56
3-77
3-66
3-62
3-26
3-19
3-74
3-100
3-55
3-61
3-27
3-96
3-64
3-60
3-87
3-58
3-97
3-93
3-50
3-29
3-30
3-44
3-102
3-51
3-52
3-54
MSC.Marc Volume D: User Subroutines and Special Routines
3-iii
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines List
User Subroutine
VSWELL.
WKSLP
Page
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-41
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
CHAPTER
3
User-defined Anisotropy and
Constitutive Relations
User Subroutines
This chapter describes the user subroutines available to allow you to provide material
data to standard MSC.Marc constitutive relations, or for the user to create his own
model. The routines in this chapter cover the spectrum of anisotropic elasticity and
plasticity, creep, plasticity, rate independent nonlinear elasticity, cracking, electrical,
and magnetic materials among others. These routines are, in general, called for each
integration point for each element they have been invoked. This provides a powerful
method to provide nonhomogeneous, nonlinear material behavior. Table 3-1
summarizes these routines and indicates what parameters or model definition options
are required to invoke the user subroutine.
MSC.Marc Volume D: User Subroutines and Special Routines
3-2
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Table 3-1
User-defined Anisotropy and Constitutive Relations User
Subroutine Requirements
User
Subroutine
Required Parameters or
Model Definition Options
Purpose
ANELAS
ORTHOTROPIC or
ANISOTROPIC
Definition of factors to scale elastic stress strain law.
ANEXP
ORTHOTROPIC or
ANISOTROPIC
Definition of thermal strain increment.
ANKOND
ORTHOTROPIC or
ANISOTROPIC
Definition of thermal conductivity or electrical resistance
in Joule heating.
ANPLAS
ORTHOTROPIC or
ANISOTROPIC
Definition of parameters for Hill yield criteria
CRPLAW
CREEP
Definition of function to describe creep strain rate.
GAPU
GAP DATA
Definition of contact gap closure distance
GENSTR
SHELL SECT
Definition of generalized stress-strain law for shells.
HOOKLW
ORTHOTROPIC or
ANISOTROPIC
Definition of elastic stress-strain or compliance relation.
HYPELA2
HYPOELASTIC
Definition of nonlinear stress-strain relationship.
ORIENT
ORIENTATION
Definition of preferred material orientation for orthotropic
or anisotropic behavior.
TENSOF
ISOTROPIC
CRACK DATA
Definition of tension softening modulus.
UACOUS
ACOUSTIC
CONTACT (2-D)
CONTACT (3-D)
Definition of material properties for an acoustic medium.
UARRBO
ARRUDBOYCE
Definition of constants in strain energy function.
UBEAM
HYPOELASTIC
Definition of nonlinear generalized stress-strain law for
element types 52 or 98.
UCOMPL
HARMONIC
Definition of stress-strain rate relationship for
harmonic analysis.
UCRACK
ISOTROPIC
CRACK DATA
Definition of ultimate stress for cracking analysis.
UCRPLW
CREEP
Definition of complex relationships for the factors in the
power law expression for the creep strain rate.
UDAMAG
DAMAGE
Definition of the Kachanov damage factor to be applied
to the material properties
MSC.Marc Volume D: User Subroutines and Special Routines
3-3
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Table 3-1
User-defined Anisotropy and Constitutive Relations User
Subroutine Requirements (Continued)
User
Subroutine
Required Parameters or
Model Definition Options
Purpose
UELASTOME
R
ELASTICITY
FOAM or
MOONEY or
ARRUDBOYCE or
GENT or
OGDEN
Allows definition of the user’s own hyperelastic models.
UELDAM
OGDEN
DAMAGE
Definition of damage parameters for Ogden
rubber model.
UENERG
MOONEY
Definition of strain energy function.
UEPS
ELECTRO or
EL-MA
ORTHOTROPIC
Definition of anisotropic electrical permittivity.
UFAIL
FAIL DATA
Definition of composite failure criteria.
UFINITE
PLASTICITY or
ELASTICITY
Definition of finite deformation isotropic material models.
UGENT
ARRUDBOYCE
Definition of constants in strain energy function.
UGRAIN
GRAIN SIZE
Definition of typical grain size calculation based upon
the state of material
UMOONY
MOONEY
Definition of temperature dependent
Mooney-Rivlin constants.
UMU
MAGNETO or
EL-MA
ORTHOTROPIC
Definition of anisotropic magnetic permeability.
UNEWTN
R-P FLOW or
FLUID
Definition of material viscosity.
UOGDEN
OGDEN
Definition of Ogden material parameters.
UPERM
PORE
Definition of soil permeability.
UPHI
HARMONIC
MOONEY
PHI-COEFFICIENTS
Definition of phi coefficients for rubber-viscoelastic
harmonic analysis.
UPOWDR
POWDER
Definition of powder material data.
URPFLO
R-P FLOW
Definition of yield surface for rigid plastic flow.
USELEM
USER
Definition of consistent nodal loads, mass matrix,
stiffness matrix, and residuals for user-defined element.
USHRET
ISOTROPIC
CRACK DATA
Definition of shear retention factor for elements that
have cracks.
MSC.Marc Volume D: User Subroutines and Special Routines
3-4
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Table 3-1
User-defined Anisotropy and Constitutive Relations User
Subroutine Requirements (Continued)
User
Subroutine
Required Parameters or
Model Definition Options
Purpose
USIGMA
EL-MA
Definition of anisotropic electrical conductivity.
USPCHT
HEAT or
COUPLE or
FLUID
Definition of specific heat.
USPRNG
SPRINGS or
FOUNDATION
Definition of nonlinear spring or foundation stiffness.
USSUBS
SUPER
SUPERINPUT
Definition of superelements not generated by
MSC.Marc.
UVOID
DAMAGE
Definition of initial void fraction for Gurson
damage model.
UVOIDN
DAMAGE
Definition of void nucleation for Gurson damage model.
UVOIDRT
TABLE
INITIAL VOID RATIO
INITIAL POROSITY
Definition of the Initial Void Ratio or Initial Porosity
VSWELL
CREEP
Definition of volumetric swelling.
WKSLP
ISOTROPIC or
ORTHOTROPIC or
ANISOTROPIC
WORK HARD
Definition of work hardening or strain hardening data.
MSC.Marc Volume D: User Subroutines and Special Routines
ANELAS
3-5
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ ANELAS
Elastic Anisotropy
Description
This user subroutine allows the user to define the anisotropic elastic law. In the most
generally allowed case, the isothermal stress-strain law in the preferred orientation is:











σ 11 
r 11 D11 r 12 D 12 r 13 D 13

σ 22 
r 22 D 22 r 23 D 23

σ 33 
r 33 D 33
 =
Symmetric
τ 12 
r 44

τ 23 

τ 31 
0
0
0
0
0
0
0
0
0
D 44 0
0
r 55 D 55 0
r 66 D 66











ε 11 

ε 22 

ε 33 

γ 12 

γ 23 

γ 31 
The arrangement of the {σ},{ε} vectors is defined for each element type in MSC.Marc
Volume B: Element Library. Dij are the incremental elastic stress-strain relation
calculated by MSC.Marc based on material data given through input data. The rij are
supplied by the user in the ANELAS user subroutine. It is often easier to directly
specify the stress-strain for compliance relationship in the HOOKLW user subroutine.
This routine is only available for the additive elastic-plastic formulation or small
strain incompressible elasticity. It is not available for the FeFp formulation.
Format
User subroutine ANELAS is written with the following headers:
SUBROUTINE ANELAS (N,NN,KC,R,IRDIM,NDI,NSHEAR,MATUS,DT,DTDL,
+D,RPROPS,IPROPS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION R (IRDIM,IRDIM),DT(1),DTDL(1),D(IRDIM,IRDIM),N(2),
RPROPS(1),IPROPS(1),MATUS(2)
user coding
RETURN
END
3-6
MSC.Marc Volume D: User Subroutines and Special Routines
ANELAS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
where:
Input:
N(1)
is your element number.
N(2)
is the internal element number.
NN
is integration point number.
KC
is the layer number (always 1 for continuum elements).
IRDIM
is the dimension of the R array for the current element.
NDI
is the number of direct components.
NSHEAR
is the number of shear components.
MATUS(1)
is the user material id.
MATUS(2)
is the internal material id.
DT
is the array of state variables.
DTDL
is the array of increments of state variables.
D
is the stress-strain law as calculated by MSC.Marc using input data. To
modify this matrix directly, use user subroutine HOOKLW instead of
ANELAS.
RPROPS
is the array of real properties, see introduction.
IPROPS
is the array of integer properties, see introduction.
Required Output
is the r to be defined by you; the number of allowable r being given in
Table 3-2.
R
Table 3-2
Allowable Anisotropy
Library
Element
Number
Allowable Transformations
to Preferred Operation
Size of R.
Matrix
(IRDIM) for
IRDIM=1 No
Anisotropy
Possible
Number Number of
Shear
of Direct
Stresses Stresses
(NSHEAR)
(NDI)
1
None
1
2
1
2
Orthogonal in z-r plane
4
3
1
3
Orthogonal in x-y plane
3
2
1
4
Any in θ1 - θ2 surface
3
2
1
5
None
1
1
0
6
Orthogonal in x-y plane
4
3
1
7
Orthogonal in (x,y,z) space
6
3
3
MSC.Marc Volume D: User Subroutines and Special Routines
3-7
ANELAS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Table 3-2
Allowable Anisotropy (Continued)
Library
Element
Number
Allowable Transformations
to Preferred Operation
Size of R.
Matrix
(IRDIM) for
IRDIM=1 No
Anisotropy
Possible
Number Number of
Shear
of Direct
Stresses Stresses
(NSHEAR)
(NDI)
8
Any in θ1 - θ2 surface
6
2
1
9
None
1
1
0
10
Orthogonal in z-r plane
4
2
1
11
Orthogonal in x-y plane
4
3
1
12
None
1
0
0
13
None
1
1
0
14
None
1
1
1
15
None
1
2
0
16
None
1
1
0
17
None
1
2
0
18
Any in surface
3
2
1
19
Orthogonal in (x,y,z) space
4
2
1
20
Orthogonal in (x,y,z) space
6
3
3
21
Orthogonal in (x,y,z) space
6
3
3
22
Orthogonal in (x,y,z) space
5
2
3
23
None
1
1
0
24
Any in θ1 - θ2 surface
3
2
1
25
None
1
1
1
26
Orthogonal in x-y plane
3
2
1
27
Orthogonal in x-y plane
4
3
1
28
Orthogonal in x-y plane
4
3
1
29
Orthogonal in x-y plane
4
3
1
30
Any in surface
3
2
1
31
Not Available
-
-
-
32
Orthogonal in x-y plane
4
3
1
33
Orthogonal in z-r plane
4
3
2
34
Orthogonal in x-y plane
4
3
1
35
Orthogonal in (x,y,z) space
6
3
3
3-8
MSC.Marc Volume D: User Subroutines and Special Routines
ANELAS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Table 3-2
Library
Element
Number
Allowable Anisotropy (Continued)
Allowable Transformations
to Preferred Operation
Size of R.
Matrix
(IRDIM) for
IRDIM=1 No
Anisotropy
Possible
Number Number of
Shear
of Direct
Stresses Stresses
(NSHEAR)
(NDI)
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
45
None
1
1
1
46, 47, 48
None
-
-
-
49
Any in V1 - V2
3
2
1
50
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
51
None
1
1
0
52
None
1
1
0
53
Orthogonal in x-y plane
3
2
1
54
Orthogonal in x-y plane
4
3
1
55
Orthogonal in z-r plane
4
3
1
56
Orthogonal in x-y plane
4
3
1
57
Orthogonal in (x,y,z) space
6
3
3
58
Orthogonal in x-y plane
4
3
1
59
Orthogonal in z-r plane
4
3
1
60
Orthogonal in x-y plane
4
3
1
61
Orthogonal in (x,y,z) space
6
3
3
62
Orthogonal in z-r plane
6
3
3
63
Orthogonal in z-r plane
6
3
3
64
None
1
1
0
65
None
1
0
0
66
Orthogonal in z-r plane
6
3
3
67
Orthogonal in z-r plane
6
3
3
68
None
1
0
1
69
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
36, 37, 38,
39, 40, 41,
42, 43, 44
MSC.Marc Volume D: User Subroutines and Special Routines
3-9
ANELAS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Table 3-2
Library
Element
Number
Allowable Anisotropy (Continued)
Allowable Transformations
to Preferred Operation
Size of R.
Matrix
(IRDIM) for
IRDIM=1 No
Anisotropy
Possible
Number Number of
Shear
of Direct
Stresses Stresses
(NSHEAR)
(NDI)
70
Use the ANKOND user
subroutine to supply anisotropic
conductivity
-
-
-
71
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
72
Orthogonal in V1 - V2
3
2
1
73
Orthogonal in z-r plane
6
3
3
74
Orthogonal in z-r plane
6
3
3
75
Orthogonal in V1 - V2
5
2
3
76
None
1
1
1
77
None
1
1
0
78
None
1
1
1
79
None
1
1
0
80
Orthogonal in x-y plane
4
3
1
81
Orthogonal in x-y plane
4
3
1
82
Orthogonal in z-r plane
4
3
1
83
Orthogonal in z-r plane
4
3
1
84
Orthogonal in (x,y,z) space
6
3
3
85
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
86
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
87
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
88
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
3-10
MSC.Marc Volume D: User Subroutines and Special Routines
ANELAS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Table 3-2
Library
Element
Number
Allowable Anisotropy (Continued)
Allowable Transformations
to Preferred Operation
Size of R.
Matrix
(IRDIM) for
IRDIM=1 No
Anisotropy
Possible
Number Number of
Shear
of Direct
Stresses Stresses
(NSHEAR)
(NDI)
89
None
1
2
1
90
None
1
2
3
91
Orthogonal in x-y plane
4
3
2
92
Orthogonal in z-r plane
4
3
1
93
Orthogonal in x-y plane
4
3
1
94
Orthogonal in z-r plane
4
3
1
95
Orthogonal in z-r plane
6
3
3
96
Orthogonal in z-r plane
6
3
3
97
None
1
0
0
98
None
1
1
2
99
None
-
-
-
100
None
-
-
-
101
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
102
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
103
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
104
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
105
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
106
Use the ANKOND user
subroutine to supply
anisotropic conductivity
-
-
-
107
Orthogonal in (x,y,z) space
6
3
3
108
Orthogonal in (x, y, z) space
6
3
3
MSC.Marc Volume D: User Subroutines and Special Routines
3-11
ANELAS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Table 3-2
Library
Element
Number
Allowable Anisotropy (Continued)
Allowable Transformations
to Preferred Operation
Size of R.
Matrix
(IRDIM) for
IRDIM=1 No
Anisotropy
Possible
Number Number of
Shear
of Direct
Stresses Stresses
(NSHEAR)
(NDI)
109
Use the UMU user subroutine
-
-
-
110
Use the UMU user subroutine
-
-
-
111
Use the UEPS, UMU, USIGMA
user subroutines
-
-
-
112
Use the UEPS, UMU, USIGMA
user subroutines
-
-
-
113
Use the UEPS, UMU, USIGMA
user subroutines
-
-
-
114
Orthogonal in x-y plane
3
2
1
115
Orthogonal in x-y plane
4
3
1
116
Orthogonal in z-r plane
4
3
1
117
Orthogonal in x,y,z space
6
3
3
118
Orthogonal in x-y plane
4
3
1
119
Orthogonal in z-r plane
4
3
1
120
Orthogonal in x,y,z space
6
3
3
121
Use the ANKOND
user subroutine
-
-
-
122
Use the ANKOND
user subroutine
-
-
-
123
Use the ANKOND
user subroutine
-
-
-
124
Orthogonal in x-y plane
3
2
1
125
Orthogonal in x-y plane
4
3
1
126
Orthogonal in z-r plane
4
3
1
127
Orthogonal in x,y,z space
6
3
3
128
Orthogonal in x-y plane
4
3
1
129
Orthogonal in z-r plane
4
3
1
130
Orthogonal in x,y,z, space
6
3
3
131
Use the ANKOND
user subroutine
-
-
-
3-12
MSC.Marc Volume D: User Subroutines and Special Routines
ANELAS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Table 3-2
Library
Element
Number
Allowable Anisotropy (Continued)
Allowable Transformations
to Preferred Operation
Size of R.
Matrix
(IRDIM) for
IRDIM=1 No
Anisotropy
Possible
Number Number of
Shear
of Direct
Stresses Stresses
(NSHEAR)
(NDI)
132
Use the ANKOND
user subroutine
-
-
-
133
Use the ANKOND
user subroutine
-
-
-
134
Orthogonal in x,y,z space
6
3
3
135
Use the ANKOND
user subroutine
-
-
-
138
Orthogonal in V1-V2
3
2
1
139
Orthogonal in V1-V2
3
2
1
140
Orthogonal in V1-V2
5
2
3
141
None
-
1
0
142
None
-
1
0
143
None
-
1
0
144
None
-
1
0
145
None
-
1
0
146
None
-
1
0
147
None
-
1
0
148
None
-
1
0
149
orthogonal in (x, y, z) space
6
3
3
150
orthogonal in (x, y, z) space
6
3
3
151
orthogonal in x-y plane
4
3
1
152
orthogonal in z-r plane
4
3
1
153
orthogonal in x-y plane
4
3
1
154
orthogonal in z-r plane
4
3
1
155
orthogonal in x-y plane
4
3
1
156
orthogonal in z-r plane
4
3
1
157
orthogonal in (x, y, z) space
6
3
3
158
None
-
-
-
159
None
-
-
-
MSC.Marc Volume D: User Subroutines and Special Routines
3-13
ANELAS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Table 3-2
Library
Element
Number
Allowable Anisotropy (Continued)
Allowable Transformations
to Preferred Operation
Size of R.
Matrix
(IRDIM) for
IRDIM=1 No
Anisotropy
Possible
Number Number of
Shear
of Direct
Stresses Stresses
(NSHEAR)
(NDI)
160
Orthogonal in x-y plane
3
2
1
161
Orthogonal in x-y plane
4
3
1
162
Orthogonal in z-r plane
4
3
1
163
Orthogonal in x-y-z space
6
3
3
164
Orthogonal in x-y-z space
6
3
3
165
None
1
1
0
166
None
1
1
0
167
None
1
1
0
168
None
1
1
0
169
None
1
1
0
170
None
1
1
0
171
None
1
0
0
172
None
1
0
0
173
None
1
0
0
174
None
1
0
0
175
Use the ANKOND
user subroutine
-
-
-
176
Use the ANKOND
user subroutine
-
-
-
177
Use the ANKOND
user subroutine
-
-
-
178
Use the ANKOND
user subroutine
-
-
-
179
Use the ANKOND
user subroutine
-
-
-
180
Use the ANKOND
user subroutine
-
-
-
All parameters except the R array are defined by MSC.Marc. R must be defined by the
user in this user subroutine.
3-14
MSC.Marc Volume D: User Subroutines and Special Routines
ANELAS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Note that the R and D matrices have the dimension appropriate for the number of stress
components associated with the particular element (see Table 3-2). Thus, for example,
in elements 3 or 18, the R matrix would be of size 3 by 3, and the stress strain law
would take the form:

 σ1

 σ2

 σ 12



r 11 D 11 r 12 D 12 0

r 22 D 22 0
 =

Symmetric
r 33 D 33



 ε 11

 ε 22

 γ 12








To define an anisotropic stress-strain relation for the Herrmann incompressible
elements in MSC.Marc, the ANELAS user subroutine is used in a slightly different
manner. The compliance strain-stress relation is given directly in the fourth argument
R and is not used in the last argument D. For example, in the most generally allowed
case, the compliance relation in the preferred orientation is:











R 11 R 12 R 13
ε 11 

ε 22 
R 22 R 23

ε 33 
R 33
 =
γ 12 

γ 23 

γ 31 
0 

0 0 0 

0 0 0 

R44 0 0 

R 55 0 

R 66 
0
0
σ 11 

σ 22 

σ 33 

τ 12 

τ 23 

τ 31 
Note: This user subroutine should not be used if you desire that the material constants should be
design variables. Use the ORTHOTROPIC option instead.
MSC.Marc Volume D: User Subroutines and Special Routines
HOOKLW
3-15
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ HOOKLW
Anisotropic Elastic Law
Description
The HOOKLW user subroutine is an alternative mechanism to the ANELAS user
subroutine. In this user subroutine, the elastic stress-strain law is supplied by the user.
A maximum of 21 terms are necessary for a three-dimensional body. This law is given
in terms of the coordinate system defined in the ORIENTATION option. The user should
insure that the stress-strain law is symmetric. Note that this user subroutine is called
for each integration point of those elements that have anisotropic properties. The user
can define either the stress-strain relation or the compliance strain-stress relation. The
returned value of argument IMOD must be set accordingly. For example, if IMOD=1, the
stress-strain law is given and the user returns to the array B such that:











σ 11 

B11 B12 B13
σ 22 
B21 B22 B23

σ 33 
B31 B32 B33
 =
τ 12 
B41 B42 B43

B51 B52 B53
τ 23 

B61 B62 B63
τ 31 
B14
B24
B34
B44
B54
B64
B15
B25
B35
B45
B55
B65
B16
B26
B36
B46
B56
B66











ε 11 

ε 22 

ε 33 

γ 12 

γ 23 

γ 31 
The arrangement of {s}, {ε} vectors are defined for each element type in MSC.Marc
Volume B: Element Library.
This routine is only available for the additive elastic-plastic formulation or small
strain incompressible elasticity. It is not available for the FeFp formulation.
3-16
MSC.Marc Volume D: User Subroutines and Special Routines
HOOKLW
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Format
User subroutine HOOKLW is written with the following headers:
SUBROUTINE HOOKLW(M,NN,KC,B,NGENS,DT,DTDL,E,PR,NDI,NSHEAR,
+IMOD,RPROPS,IPROPS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION B(NGENS,NGENS),DT(1),DTDL(1),RPROPS(1),IPROPS(1),
+M(2)
user coding
RETURN
END
where:
Input:
M(1)
is the user element number.
M(2)
is the internal element number.
NN
is the integration point number.
KC
is the layer number.
NGENS
is the number of stresses and strain components.
DT
is the state variables at the beginning of the increment (temperature first).
DTDL
is the increment of state variables.
E
is the Young’s modulus including temperature effects.
PR
is the Poisson’s ratio including temperature effects.
NDI
number of direct components of stress.
NSHEAR
number of shear components of stress.
RPROPS
array of real properties; see Chapter 1 Introduction.
IPROPS
array of integer properties; see Chapter 1 Introduction.
Required Output
B
is the user-defined stress-strain law if IMOD=1; or the user-defined
compliance relation if IMOD=2 to be defined here.
IMOD
Set to 0 if the ANELAS user subroutine is used.
Set to 1 to indicate that the stress-strain law has been given.
Set to 2 to indicate that the compliance strain-stress, relation has
been given.
Note that for temperature dependent properties, this user subroutine is called twice for
each integration point. The first time to evaluate the stress-strain law at the beginning
of the increment; the second time at the end of the increment.
Note: This user subroutine should not be used if the user desires that the material constants
should be design variables. Use the ORTHOTROPIC option instead.
MSC.Marc Volume D: User Subroutines and Special Routines
ANPLAS
3-17
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ ANPLAS
Anisotropic Yield Surface and Creep Potential
Description
The anisotropic yield function and stress potential are assumed as:
2
2
2
2 + 3a τ 2 = 2σ
a 1 ( σ y – σ z ) + a 2 ( σ z – σ x ) + a 3 ( σ x – σ y ) + 3a 4 τ yz
6 xy
2
(R. Hill - Mathematical Theory of Plasticity, Oxford, 1950)
where: σ is the equivalent tensile yield stress for isotropic behavior: σ = σ ( ε P, T )
σx + σy + σz
and, for Mohr-Coulomb behavior: σ = σ ( J 1 ) ; J 1 = -----------------------------3
The user defines ratios of actual to isotropic yield (in the preferred orientation) in the
array YRDIR for direct tension yielding, and YRSHR for yield in shear (ratio of actual
shear yield to σ ⁄ 3 = isotropic shear yield). Then the a1 above are derived as (Hill):
1
1
1
a 1 = ----------------------------2- + ----------------------------2- – ----------------------------2YRDIR ( 2 )
YRDIR ( 3 ) YRDIR ( 2 )
1
1
1
a 2 = ----------------------------2- + ----------------------------2- – ----------------------------2YRDIR ( 3 )
YRDIR ( 1 ) YRDIR ( 2 )
1
1
a 3 = ----------------------------2- + ----------------------------2- – ----------------------------2YRDIR ( 1 )
YRDIR ( 2 ) YRDIR ( 3 )
2
a 4 = -----------------------------2YRSHR ( 3 )
2
a 5 = -----------------------------2YRSHR ( 2 )
2
a 6 = -----------------------------2YRSHR ( 1 )
3-18
MSC.Marc Volume D: User Subroutines and Special Routines
ANPLAS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Note that YRDIR and YRSHR should be given in the order appropriate for the element
(see Library Element description).
On the output, the von Mises intensity is not affected by these material parameters.
Format
User subroutine ANPLAS is written with the following headers:
SUBROUTINE ANPLAS(N,NN,LAYER,NDI,NSHEAR,MATUS,YRDIR,YRSHR)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION YRDIR (1),YRSHR(1),N(2),MATUS(2)
user coding
RETURN
END
where:
Input:
N(1)
is your element number.
N(2)
is the internal element number.
NN
is the integration point number.
LAYER
is the layer number (always 1 for continuum elements).
NDI
is the number of direct stresses.
NSHEAR
is the number of shear stresses.
MATUS(1)
is the user material id.
MATUS(2)
is the internal material id
Required Output
YRDIR
is the array of tensile yield ratios to be defined here.
YRSHR
is the array of shear yield ratios to be defined here.
All parameters except YRDIR and YRSHR are defined by MSC.Marc. YRDIR and YRSHR
are defined by the user in this user subroutine.
MSC.Marc Volume D: User Subroutines and Special Routines
UFAIL
3-19
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UFAIL
User-defined Failure Criterion
Description
The UFAIL user subroutine is provided to allow the user to calculate his own scalar
failure criterion. To call the UFAIL user subroutine, the user must specify failure
criterion type UFAIL in the FAIL DATA model definition option. UFAIL is then called
for every integration point associated with the material id specified in the
FAIL DATA option.
This routine may be used with all elastic-plastic materials. Progressive cracking is
only available with the additive elastic-plastic model.
Format
User subroutine UFAIL is written with the following headers:
SUBROUTINE UFAIL (N,NN,KC,MATUS,
1 STRESS,STRAIN,NDI,NSHEAR,FAILCR)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION STRESS(1),STRAIN(1),N(2),MATUS(2)
user coding
RETURN
END
where:
Input:
N(1)
is the user element number.
N(2)
is the internal element number.
NN
is the integration point number.
KC
is the layer number.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
STRESS
is the current total stress state.
STRAIN
is the current total strain.
NDI
is the number of direct stresses.
NSHEAR
is the number of shear stresses.
Required Output
FAILCR
is your calculated failure criterion.
3-20
MSC.Marc Volume D: User Subroutines and Special Routines
ORIENT
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ ORIENT
Specification of Preferred Orientation
Description
The ORIENT user subroutine is used to supply a preferred orientation so that ANELAS,
HOOKLW, ANKOND, and ANPLAS can supply anisotropic material constants in
this orientation. This user subroutine can be activated by anisotropic material
definition options, and/or the ORIENTATION option and/or the HYPOELASTIC option.
Format
User subroutine ORIENT is written with the following headers:
SUBROUTINE ORIENT (N,NN,KC,G)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION G(3,3),N(2)
user coding
RETURN
END
where:
Input:
N(1)
N(2)
NN
KC
is the user element number.
is the internal element number.
is the integration point number.
is the layer number (always 1 for continuum elements).
Required Output
G
is the transformation matrix to be defined here.
All parameters except G are passed in by MSC.Marc – the user must supply the G
matrix. G is the transformation to the preferred orientation from the usual
MSC.Marc orientation:


 v' 1 
G 11 G 12 G 13


 v' 2  = G 21 G 22 G 23


G 31 G 32 G 33
 v' 3 




 v1 


 v2 


 v3 


MSC.Marc Volume D: User Subroutines and Special Routines
ORIENT
3-21
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
where:
v
is the vector in the MSC.Marc system.
v'
is the vector in the preferred system.
For curvilinear systems (for example, element types 4, 8, and 24), G is defined by
i
G(I,J) = g j . For planar transformations, G(3,I) = G(I,3) = 0; G(3,3) = 1.0; I = 1,2 must
be given.
Note: This user subroutine should not be used if the user desires that the material orientation be
a design variable. Use the COMPOSITE option instead.
3-22
MSC.Marc Volume D: User Subroutines and Special Routines
ANEXP
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ ANEXP
Anisotropic Thermal Expansion
Description
The ANEXP user subroutine is used to specify anisotropic thermal strain increments in
the orientation defined by the ORIENTATION option. The user is given the temperature
at the beginning of the increment, the temperature increment, and the base value of
the thermal expansion coefficients given on the ISOTROPIC or ORTHOTROPIC
j
options. The user must supply the incremental thermal strain vector ∆ε ijth ( ∆ε th i for
doubly curved shell elements 4, 8, and 24) in the user subroutine. Any components of
the incremental thermal strain vector not defined in the user subroutine assume their
default program calculated values.
The ANEXP user subroutine is called for all elements at all integration points if the
temperature is nonzero for all material models.
Format
User subroutine ANEXP is written with the following headers:
SUBROUTINE ANEXP (N,NN,KC,T,TINC,COED,NDI,NSHEAR,EQEXP)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION EQEXP(1),TINC(1),T(1),COED(NDI),N(2)
user coding
RETURN
END
where:
Input:
N(1)
is the user element number.
N(2)
is the internal element number.
NN
is the integration point number.
KC
is the layer number for shells or beams (always 1 for
continuum elements).
T(1)
is the total temperature at the beginning of the increment.
T(2)
is the total values of other state variables at the beginning of
the increment.
TINC(1)
is the temperature increment.
MSC.Marc Volume D: User Subroutines and Special Routines
ANEXP
3-23
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
TINC(2) etc.
are the increments of other state variables.
COED(I)
is the base value of the Ith coefficient of thermal expansion as
given through the input data. There are NDI coefficients for
each element.
NDI
is the number of direct components of strain at this point.
NSHEAR
is the number of shear components of strain at this point.
Required Output
EQEXP
is the thermal strain increment vector, to be defined by the user in
this user subroutine.
Note: For the curvilinear coordinate elements (doubly curved shell
elements 4, 8, 24) the mixed strain tensor shear components,
ε12, ε21, are stored. Otherwise, shear components are
engineering shear strain.
3-24
MSC.Marc Volume D: User Subroutines and Special Routines
ANKOND
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ ANKOND
Input of Anisotropic Thermal Conductivity Matrix
Description
For anisotropic heat transfer analysis, this user subroutine allows the user to define an
anisotropic conductivity matrix at each integration point in each element. The
anisotropic conductivity matrix is defined with respect to the preferred orientation
specified in the ORIENTATION option. This user subroutine is also used for anisotropic
electrical resistance in a Joule heating analysis.
Format
User subroutine ANKOND is written with the following headers:
SUBROUTINE ANKOND (COND,CANISO,N,NN,KC,MATUS,ID,T,DT,TIME,
* DELTME,JOULHT)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION COND(ID,ID),CANISO(3),MATUS(2)
user coding
RETURN
END
where:
Input:
CANISO
are the anisotropic conductivities kij (T) established by the user via
data blocks.
N
is the element number.
NN
is the integration point number.
KC
is the layer number.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
ID
is the size of the COND matrix; that is, the number of derivatives.
T
is the temperature at the beginning of the time increment.
DT
is the estimated temperature increment.
TIME
is the transient time at the beginning of the increment.
DELTME
is the increment of time.
∂T
------∂x j
MSC.Marc Volume D: User Subroutines and Special Routines
ANKOND
3-25
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
JOULHT
= 0 return thermal conductivity.
= 1 return electrical conductivity.
Required Output
COND
is the conductivity matrix, kij:
∂T
q i = k ij ------∂x j
This is to be re-defined as necessary by the user.
This matrix is passed in as set-up for anisotropic conductivity. If the user
does not re-define it, it remains anisotropic according to kij (T) given on the
ISOTROPIC, ORTHOTROPIC, and TEMPERATURE EFFECTS or
TABLE options.
3-26
MSC.Marc Volume D: User Subroutines and Special Routines
UEPS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UEPS
Input of Anisotropic Permittivity Matrix
Description
For anisotropic electrostatic or electromagnetic analysis, this user subroutine allows
the user to define an anisotropic permittivity matrix at each integration point in each
element. The anisotropic permittivity matrix is defined with respect to the preferred
orientation specified in the ORIENTATION option.
Format
User subroutine UEPS is written with the following headers:
SUBROUTINE UEPS (EPS,M,NN,MATUS,ID)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION EPS(ID,ID),M(2),MATUS(2)
user coding
RETURN
END
where:
Input:
M(1)
is the user element number.
M(2)
is the internal element number.
NN
is the integration point number.
MATUS(1) is the user material identifier.
MATUS(2) is the internal material identifier.
ID
is the size of the matrix.
Required Output
EPS
is the permittivity matrix, [ε] (D = [ε]E).
This is to be re-defined as necessary by the user.
This matrix is passed in as set-up for anisotropic permittivity. If the user does
not redefine it, it remains as given through the ISOTROPIC or
ORTHOTROPIC options.
MSC.Marc Volume D: User Subroutines and Special Routines
UMU
3-27
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UMU
Input of Anisotropic Permeability Matrix
Description
For anisotropic magnetostatic or electromagnetic analysis, this user subroutine allows
the user to define an anisotropic permeability matrix at each integration point in each
element. The anisotropic permeability matrix is defined with respect to the preferred
orientation specified in the ORIENTATION option.
The permeability µ is used in the relation:
B=µH + Br
where:
B
is the magnetic induction.
H
is the magnetic field intensity.
µ
is the permeability.
Br
is the remanence.
Note: B is complex in a harmonic analysis.
Format
User subroutine UMU is written with the following headers:
SUBROUTINE UMU (XMU,M,NN,MATUS,ID,CPTIM,DTIME,B)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XMU(ID,ID),B(3),M(2),MATUS(2)
user coding
RETURN
END
3-28
MSC.Marc Volume D: User Subroutines and Special Routines
UMU
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
where:
Input:
M(1)
is your element number.
M(2)
is the internal element number.
NN
is the integration point number.
ID
is the size of the matrix.
CPTIM
is the frequency in a harmonic analysis.
DTIME
is the increment of time.
B
is the magnetic flux density in a transient analysis, or is zero in a
harmonic analysis.
Required Output
XMU
is the reluctivity matrix
1
1
---  H = --- ( B – Br ) .
µ
µ
This is to be re-defined as necessary by the user.
This matrix is passed in as set-up for anisotropic permeability. If the user does
not re-define it, it remains anisotropic according to µ (T) given on the
ISOTROPIC or ORTHOTROPIC options.
MSC.Marc Volume D: User Subroutines and Special Routines
USIGMA
3-29
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ USIGMA
Input of Anisotropic Electric Conductivity Matrix
Description
For anisotropic electromagnetic analysis, this user subroutine allows the user to define
an anisotropic conductivity matrix at each integration point in each element. The
anisotropic permittivity matrix is defined with respect to the preferred orientation
specified in the ORIENTATION option.
Format
User subroutine USIGMA is written with the following headers:
SUBROUTINE USIGMA (SIGMA,M,NN,MATUS,ID,CPTIM,DTIME)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION SIGMA(3,3),M(2),MATUS(2)
user coding
RETURN
END
where:
Input:
M(1)
is the user element number.
M(2)
is the internal element number.
NN
is the integration point number.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
CPTIM
is the transient time at the beginning of the increment; in a harmonic analysis,
it is the frequency.
DTIME
is the increment of time.
ID
is the size of the matrix.
Required Output
SIGMA
is the electric conductivity matrix, [σ] (J = [σ]E).
This is to be re-defined as necessary by the user.
This matrix is passed in as set-up for anisotropic conductivity. If the user does
not re-define it, it remains as given through the ISOTROPIC or
ORTHOTROPIC options.
3-30
MSC.Marc Volume D: User Subroutines and Special Routines
USPCHT
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ USPCHT
Definition of Specific Heat
Description
This user subroutine allows the user to define the specific heat in a heat transfer or
coupled analysis. This is an alternative to the use of the ISOTROPIC or ORTHOTROPIC
and TEMPERATURE EFFECTS or TABLE options. This user subroutine is called at each
increment for every element in the mesh, hence, allowing the user to specify a
nonlinear relationship. This is often useful in welding or casting analyses.
Format
User subroutine USPCHT is written with the following headers:
SUBROUTINE USPCHT (SPHEAT,M,NN,KC,INC,NCYCLE,MATUS,NSTATS,DT,
+DTDL,CPTIM,TIMINC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION SIGMA(3,3),M(2),DT(NSTATS),DTDL(NSTATS),MATUS(2)
user coding
RETURN
END
where:
Input:
M(1)
M(2)
NN
KC
INC
NCYCLE
MATUS(1)
MATUS(2)
NSTATS
DT
DTDL
CPTIM
TIMINC
is the user element number.
is the internal element number.
is the integration point number.
is the layer number.
is the increment number.
is the cycle number.
is the user material identifier.
is the internal material identifier.
is the number of state variables.
is the temperature at the start of the increment.
is the estimated increment of temperature.
is the time at the beginning of the increment.
is the increment of time.
Required Output
SPHEAT
is the specific heat per unit mass. This is to be defined by the user.
MSC.Marc Volume D: User Subroutines and Special Routines
UCRPLW (Viscoplastic)
3-31
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UCRPLW (Viscoplastic)
Input of Creep Factors for Power Law Implicit Creep
Description
The UCRPLW user subroutine can be used for defining complex relationships for the
factors in the power law expression for the creep strain rate. This user subroutine is
called automatically when the implicit creep option is used in MSC.Marc. Note that
the latter is implemented for isotropic materials exhibiting power law creep. For more
complex implicit creep behavior, use the UVSCPL user subroutine.
Format
UCRPLW
is written with the following headers:
C
SUBROUTINE UCRPLW(CPA,CFT,CFE,CFTI,CFSTRE,CPTIM,TIMINC,
*
EQCP,DT,DTDL,MDUM,NN,KC,MATUS)
CREEP STRAIN RATE = CPA*CFT*CFE*CFTI*(STRESS**CFSTRE)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION MDUM(*),MATUS(2)
user coding
RETURN
END
where:
Input:
CPTIM
time at the beginning of the increment.
TIMINC
time Increment.
EQCP
creep strain at the beginning of the increment.
DT
temperature at the beginning of the increment.
DTDL
incremental temperature.
MDUM(1)
user element number.
MDUM(2)
internal element number.
NN
integration point number.
KC
layer number.
MAT
material number.
3-32
MSC.Marc Volume D: User Subroutines and Special Routines
UCRPLW (Viscoplastic)
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Required Output
CPA
creep constant.
CFT
temperature factor.
CFE
creep strain factor.
CFTI
time factor.
CFSTRE
stress exponent.
MSC.Marc Volume D: User Subroutines and Special Routines
CRPLAW
3-33
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ CRPLAW
Input of Special Creep Law
Description
The CRPLAW user subroutine allows the user to specify the increment of creep strain.
The use of such a user subroutine is flagged by setting the fifth field of the second
block in the CREEP model definition option to zero. This user subroutine is called as
required during the analysis because of possible re-cycling due to nonconvergence.
The number of times the user subroutine is called in each increment is not fixed.
MSC.Marc allows the user to input his own creep law through the CRPLAW
user subroutine.
The assumed form of the law is:
·
ε c = f ( σ, T, t, ε c, p, α 1, α 2, etc )
where:
·
εc
is the equivalent creep strain rate, in uniaxial tension.
σ
is the current equivalent (J) stress, normalized for uniaxial tension.
T
is the current total temperature.
t
is the current total time.
εc
is the current total equivalent creep strain, normalized for
uniaxial tension.
p
is the hydrostatic stress.
α 1, α 2, etc.
are the state variables. MSC.Marc requires the user to program his
creep law so that an equivalent creep strain increment is defined.
3-34
MSC.Marc Volume D: User Subroutines and Special Routines
CRPLAW
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Format
User subroutine CRPLAW is written with the following headers:
SUBROUTINE CRPLAW(EQCP,EQCPNC,STR,CRPE,T,DT,TIMINC,CPTIM,M,
+NN,KC,MATUS,NDI,NSHEAR)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION T(3),DT(1),STR(1),CRPE(1),MATUS(2)
user coding
RETURN
END
where:
Input:
EQCP
Passed in as total equivalent creep strain.
1⁄2
2
ε c = Σ  --- ∆ε c ij ∆ε c ij
3
or, for ORNL Constitutive Theory, equivalent total creep strain,
1⁄2
2
ε c =  --- Σ∆ε c ij Σ∆ε c ij
3

STR
CRPE
T(1)
T(2)
T(3)
DT(1)
DT(2),DT(3)
TIMINC
CPTIM
M
NN
KC
MATUS(1)
MATUS(2)
to be re-defined as equivalent primary creep strain increment.
is the stress array.
is the incremental creep strain array. If you want to define a creep
strain law not following the normality condition, the creep strain
increment can be defined here.
is the current total equivalent (J2) stress.
is the current total hydrostatic stress.
is the current total swelling strain (from the VSWELL
user subroutine).
is the current total temperature.
are the additional state variables read in the CREDE
user subroutine.
is the current time increment.
is the current total time.
is the current element number.
is the integration point number.
is the layer number.
is the user material id.
is the internal material identifier.
MSC.Marc Volume D: User Subroutines and Special Routines
CRPLAW
3-35
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
is the number of direct components of strain.
is the number of shear components of strain.
NDI
NSHEAR
Required Output
is the equivalent creep strain increment; to be defined by the user
in this user subroutine. For ORNL Constitutive Theory, passed in
as equivalent total primary creep strain. Otherwise undefined when
passed in.
Must be redefined by the user as equivalent creep strain increment.
EQCPNC
The simplest way to define a creep strain increment from a given rate law
·
ε c = f ( σ, etc ) is to multiply by ∆t, the time increment:
∆ε c = ∆t ⋅ f ( σ, etc )
As an example, suppose we wish to use the creep law (where A and B are constants):
σ
·
ε c = A sinh  ---
B
This would be programmed as follows:
C
C
1
2
C
SUBROUTINE CRPLAW(EQCP,EQCPNC,STR,CRPE,T,DT,TIMINC,
+CPTIM,M,NN,KC,MATUS,NDI,NSHEAR)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION T(1),DT(1),STR(1),CRPE(1),MATUS(2)
DEFINE A AND B
A = CONSTANT1
B = CONSTANT2
OBTAIN SINH (T/B)
S = T(1)
IF (S.EQ.0.) GO TO 1
SINHT = .5*(EXP(S/B)-EXP(-S/B))
GO TO 2
SINHT = 0.
CONTINUE
NON DEFINE EQCPNC
EQCPNC = TIMINC*A*SINHT
RETURN
END
The ORNL recommendations include the use of a strain hardening creep formulation.
The following example of the CRPLAW user subroutine shows a simple technique of
numerical solution for a strain hardening formulation based on equivalent total creep
strain. The example is based on a Blackburn formulation with a single primary term,
3-36
MSC.Marc Volume D: User Subroutines and Special Routines
CRPLAW
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
but the technique is general and can be used for more complex formulations. The
numerical inversion of the total creep equation for equivalent time is achieved by
Newton’s method:
t n + 1 = t n + ∆t
– ε c + f ( T, σ, t n )
t = --------------------------------------– f′ ( T, σ, t n )
tn is the solution for equivalent time at the nth iteration.
∆t is the correction to t at the nth iteration, and the total creep equation is
ε c = f ( T, σ, t )
with
∂f
f′ = ---∂t
A tolerance of 10-6 has been placed on ∆t
----- .
tn
Practical experience shows this needs about four or five iterations for the creep law in
the example. The listing of CRPLAW follows:
C
C
C
C
C
C
C
C
C
C
C
C
A
C
C
C
SUBROUTINE CRPLAW(EQCP,EQCPNC,STR,CRPE,T,DT,TIMINC,CPTIM,
+M,NN,DC,MATUS,NDI,NSHEAR)
IMPILCIT *8 (A-H, O-Z)
DIMENSION T(1),DT(1),STR(1),CRPE(1),MATUS(2)
THIS ROUTINE FORMULATES THE STRAIN HARDENING FORMULATION OF
THE BLACKBURN CREEP LAW.
EPSILON
DOT=1/TIME SUB CAP T * (EPSILON SUR T - EPSILON SUSUPER T)
+ EPSILON DOT SUB M
THE FOLLOWING DEFINITION APPLIES TO THE FUNCTION CODED BELOW
A IS LN(A)
B IS ALPHA*SIGMA
E IS N
C IS Q
C IS T
EPSILON SUB T, T, SUB T AND EPSILON SUB M DOT ARE GIVEN BY
CURVE
FUN + A*SINH TO N OF ALPHA SIGMA TIMES E TO Q/T EXP
IHARD=0 USES STRAIN HARDENING
STRAIN NOW DIMENSIONAL
MSC.Marc Volume D: User Subroutines and Special Routines
CRPLAW
3-37
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
C
C
C
TEMPERATURE IN FAHRENHEIT
STRESS IN PSI
TIME IN HOURS
FTN(A,B,C,D,E)=EXP(A)*(.5*(EXP(B)-EXP(-B))**)E*EXP(C/D))
IHARD=0
IHARD=1
EQCPNC=0
IF(T(1).LT.25.)GO TO 1
TRANK=DT(1)+459.67
ET=FTN(2.76,1.976E-3*T(1),-1,03E4,TRANK,.08778)
TT=FTN(-21.38,.09546E-3*T(1),4.54E4,TRANK,-2.31)
EDOT=FTN(57.2,.02345E-3*T(1),-9.98E4,TRANK,6.933)
C THE FOLLOWING IS A NEWTON METHOD TO EXPRESS T IN TERMS OF
KNOWN
C QUANTITIES. INITIAL GUESS IS T= (F SUB C- ET) / E DOT M
IF(IHARD.EQ.1) GO TO 10
TIME=CPTIM GO TO 2
10
CONTINUE
TIME=(100.*EQCP-ET)/EDOT
FT=ET/TT
IF(EQCP.EQ.0.) GO TO 4
2
EFT=EXP (-TIME/TT)
FT=FT*EFT/TT
4
ST=EDOT
EQCPNC=(FT+ST)*TININC*0.01
1
RETURN
END
3-38
MSC.Marc Volume D: User Subroutines and Special Routines
VSWELL
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ VSWELL
Input of Special Swelling Law
Description
The VSWELL user subroutine allows the user to include pure swelling (dilatational)
creep in MSC.Marc.
Format
User subroutine VSWELL is written with the following headers:
SUBROUTINE VSWELL(SWELL,SIG,TEMP,N,NN,KC,CPTIM,TIMINC,MATUS,
+DTEMP)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION SIG(3),TEMP(1),DTEMP(1),MATUS(2)
user coding
RETURN
END
where:
Input:
SIG(1)
is the uniaxial equivalent of J2 stress.
SIG(2)
is the hydrostatic stress.
SIG(3)
is the current total swelling strain (accumulated from this
user subroutine).
Note: This is a uniaxial component; that is,
1 DV
--- -------3 V
TEMP(1)
is the temperature.
TEMP(2),TEMP(3),
etc.
are the additional state variables read in through the CREDE
user subroutine.
N
is the element number.
NN
is the integration point number.
KC
is the layer number.
CPTIM
is the total creep time.
TIMINC
is the current time increment.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
MSC.Marc Volume D: User Subroutines and Special Routines
VSWELL
3-39
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
DTEMP(1)
is the temperature increment.
DTEMP(2), etc.
are the increments of additional state variables.
Required Output
SWELL
is the user-defined increment of volumetric swelling
 = DV
- .
 ------V
The user defines the increment of dilatational creep by this user subroutine, which is
called at each integration point where constitutive calculations are being performed
by MSC.Marc. It is called automatically when any CREEP incremental option is used
(AUTO CREEP, CREEP INCREMENT, etc.) and can be used alone or in combination
with a Mises type creep law(CRPLAW user subroutine). This user subroutine is called
as required during the analysis, so that, because of possible re-cycling due to
nonconvergence, the number of times the user subroutine is called in each increment
is not fixed.
Example
The following is a typical irradiation swelling formulation:
b 1 b 2
 DV
 = c ( q ⋅ t ) a exp  b + ----+ ----------0

 V
T 1 T 2
where:
a, b0, b1, b2, c are numerical constants, q is flux, t is time and T is temperature.
Differentiating with respect to time,
b
b
d DV
-----  -------- = acq a t a – 1 exp  b 0 + -----11 + -----22

dt  V 
T
T 
so that user subroutine VSWELL becomes:
SUBROUTINE VSWELL(SWELL,SIG,TEMP,N,NN,KC,CPTIM,TIMINC,MATUS,
DTEMP)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION SIG(3),TEMP(1),DTEMP(1),MATUS(2)
C=
Q=TEMP(2)
A=
B0=
B1=
B2=
SWELL=A*C*Q**A*CPTIM**(A-1.)
3-40
VSWELL
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
SWELL=SWELL*EXP(B0+B1/TEMP+B2/TEMP**2)
SWELL=SWELL*TIMINC
RETURN
END
This assumes flux increments q are entered into the second state variable
using CREDE.
MSC.Marc Volume D: User Subroutines and Special Routines
WKSLP
3-41
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ WKSLP
Work-hardening Slope Definition
Description
This user subroutine makes it possible for the user to program the yield stress and the
corresponding work-hardening slope directly as a function of equivalent plastic strain
and temperature. See the WORK HARD model definition option. The user needs to
define the value of the slope of the equivalent stress vs. equivalent plastic strain. The
current yield stress can be defined also. The specification of the latter is optional. If
the value of the current yield is not given here, MSC.Marc calculates it from the initial
yield value and the work-hardening slopes defined in this user subroutine.
In order to use this user subroutine instead of the slope-break point data, the user
should set the number of work-hardening slopes equal to -1. No work-hardening slope
break point data blocks should be included. The user subroutine is called as required
by MSC.Marc during the elastic-plastic calculations. The number of times it is called
per increment depends on the number of points going plastic, on the nonlinearity of
the work-hardening curve, and on temperature dependence.
Format
User subroutine WKSLP is written with the following headers:
SUBROUTINE WKSLP(M,NN,KC,MATUS,SLOPE,EBARP,ERAT,STRYT,DT,
+IFIRST)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION MATUS(2)
user coding
RETURN
END
where:
Input:
M
is the current user element number.
NN
is the integration point number.
KC
is the layer number.
MATUS(1)
is the user material id.
MATUS(2)
is the internal material identifier.
3-42
MSC.Marc Volume D: User Subroutines and Special Routines
WKSLP
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
EBARP
is the current total equivalent plastic strain, ε
p
ε p = Σdε p
dε ρ =
2 p p
--- dε ij dε ij
3
·p
ε
ERAT
is the equivalent plastic strain rate,
DT
is the current total temperature.
IFIRST
is passed in as 1 for initial yield curve; is passed in as 2 for the tenth cycle
yield curve when ORNL constitutive theory is flagged.
Required Output
SLOPE
is the work-hardening slope to be defined by the user as:
p ·p
p
dσ σ ( ε , ε ) – ( ε , 0 )
-------p- + ------------------------------------------·p
dε
ε ∆t
σ = equivalent tensile stress =
3
--- S ij S ij
2
1
S ij = σ ij – --- δ ij σ kk
3
STRYT
is the current yield stress
Note:
dσ
--------Pdε
σ.
is not the slope of the tensile stress-strain curve, which is
dσ
-----dε
with:
dε = dε e + dε p
The time increment, ∆t, is given by variable TIMINC in common block CREEPS. The
user must take care to provide rate of change of stress with respect to plastic strain,
not total strain. The second term in the SLOPE expression allows the user to include
strain-rate effect if desired. The user must define SLOPE and STRYT in this user
subroutine. EBARP, DT, and IFIRST should not be changed.
Note: If UPDATE is used, the stresses are Cauchy (true) stress and the strains are
logarithmic strains.
MSC.Marc Volume D: User Subroutines and Special Routines
WKSLP
3-43
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Example
Let us assume that yield surface can be expressed as:
σy = A ( 1 + εp )n
then,
∂σ y
--------p- = nA ( 1 + ε p ) n – 1
∂ε
the user subroutine would look like:
SUBROUTINE WKSLP(M,NN,KC,MATUS,SLOPE,EBARP,ERAT,STRYT,DT,
+IFIRST)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION MATUS(2)
A=
N=
N1=n-1
SLOPE=n*A*(1.+EBARP)**N1
STRYT=A*(1.+EBARP)**N
RETURN
END
3-44
MSC.Marc Volume D: User Subroutines and Special Routines
USPRNG
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ USPRNG
Input of Nonlinear Spring, Dashpot and Foundation Stiffness
Description
The USPRNG user subroutine permits the introduction of further modification of
nonlinear spring constants for use with the SPRINGS and/or FOUNDATION options and
input of nonlinear damping. For linear springs, your coding must supply both the ratio
of the current value of spring stiffness to the reference data input value and the total
spring force. For dynamic analysis, the ratio of damping coefficient can also be
provided. For nonlinear springs that have already been defined using the TABLE option
in the data input, your coding must supply both the ratio of the user-defined spring
stiffness to the current tabular stiffness and the spring force. The value of the spring/
dashpot constant, total time, and the element or spring number are made available to
the user subroutine. For harmonic analysis, the spring/dashpot constants can be a
function of the frequency. The USPRNG user subroutine is accessible whenever either
the SPRINGS or the FOUNDATION option is used. USPRNG can also be used for
defining spring stiffnesses in thermal analysis (regular heat transfer analysis or
thermal part of a thermo-mechanical coupled analysis), and in Joule heating analysis.
Format
User subroutine USPRNG is written with the following headers:
SUBROUTINE USPRNG(RATK,F,DATAK,U,TIME,N,NN,NSPRNG)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION RATK(2),DATAK(2),U(2),TIME(2),N(2),F(2),NSPRNG(2)
user coding
RETURN
END
where:
Input:
DATAK(1)
is the data value of spring constant (or foundation stiffness) as defined by
the user in SPRINGS/FOUNDATION options data input. For previously
defined nonlinear springs, it is the current nonlinear data value calculated
from input tables. This is input to the program.
(a) For springs:
DATAK(1) = mechanical stiffness
(b) For thermal links: DATAK(1) = thermal conduction
(c) For electrical links: DATAK(1) = electrical conduction
MSC.Marc Volume D: User Subroutines and Special Routines
USPRNG
3-45
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
DATAK(2)
is the data value of the damping constant as defined by you in the
SPRINGS option data input. For previously defined nonlinear dashpots, it
is the current nonlinear data value calculated from input tables. It is only
used for transient mechanical analysis. This is input to the program.
For Elastic Foundation (Only Static Contribution):
U(1)
For elastic foundation: U(1) = Un.
(positive in the direction specified by face identification given in the
FOUNDATION option).
U(2)-U(4)
not used
For Springs/Dashpots (Static and/or Dynamic Contribution):
U(1)
For mechanical springs:
U ( 1 ) = U2 – U1 .
For thermal links:
U ( 1 ) = T2 – T1
For electrical links:
U ( 1 ) = V2 – V1
U ( 2 ) = U· 2 – U· 1 .
U(2)
For dynamic spring/dashpot
U(3)
For mechanical springs in coupled analysis and for electrical links in Joule
heating analysis:
U(4)
U ( 3 ) = Average Temperature of Spring or it is not used.
Not used
For springs/dashpots (harmonic analysis):
U(1)
U ( 1 ) = U 2 – U 1 static predeformation
U(2)
not used
U(3)
U ( 3 ) = U 2 – U 1 real part of harmonic deformation.
U(4)
U ( 4 ) = U 2 – U 1 imaginary part of harmonic deformation
TIME(1)
is the total time (for dynamic or creep analysis).
TIME(2)
is the frequency (for harmonic analysis with spring/dashpot).
N(1)
is the element number (for elastic foundation).
is the first user-node number (for spring)
N(2)
is the face number (for elastic foundation).
is the second user-node number (for spring)
NN
is the integration point number (only for elastic foundation).
3-46
MSC.Marc Volume D: User Subroutines and Special Routines
USPRNG
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
NSPRNG(1)
NSPRNG(2)
is the spring number, the position of the spring in the input data list (only
for springs).
= 1 mechanical analysis or stress part of coupled analysis (only
for springs)
= 2 heat transfer analysis or thermal part of coupled analysis (only
for springs)
= 4 electrical analysis (only for springs)
Required Output
RATK(1)
is the ratio of the present value of spring stiffness to the data value given
in the option input; to be defined by the user.
RATK(2)
is the ratio of the present value of the damping coefficient to the data
value given in the input; to be defined by the user. This applies to
SPRINGS in dynamic analysis only.
F(1)
is the force to be defined by the user (only needed for
mechanical analysis).
(a) For springs: F(1) = spring force.
(b) For elastic foundation: F(1) = pressure per unit area.
(c) For harmonics: F(1) = real part of harmonic force.
F(2)
is the force to be defined by the user (only needed for
mechanical analysis).
(a) For springs: F(2) = the damping force.
(b) For harmonics: F(2) = imaginary part of harmonic force.
If the user subroutine is called for an elastic foundation point, NSPRNG(1) and
NSPRNG(2) are zero.
If the user subroutine is called for a spring, NN is zero.
Note that if the user prefers to give the absolute value of the spring constant rather than
a ratio, the corresponding value in the SPRINGS or FOUNDATION option should be set
to 1. The same applies for a damping constant.
Note that for fixed degrees of freedom springs, U(1), U(2), U(3), and U(4) are
positive if the motion of the degrees of freedom associated with node 2 is greater than
the motion of the degrees of freedom associated with node 1. So, to ensure physically
consistent forces, care should be exercised on defining node 1 and node 2 correctly.
For true direction springs, U(1), U(2), U(3), and U(4) are positive if the spring is in
tension and negative if the spring is in compression.
During a heat transfer run or electrical run (NSPRNG(2) = 2 or 4), springs simply act as
links. Only the user-input conduction DATAK(1) comes into the routine and the user
needs to return the modified ratio RATK(1). The dashpot is not active. The spring force
F the gradient across the spring, U, is not needed and does not need to be defined.
MSC.Marc Volume D: User Subroutines and Special Routines
UCRACK
3-47
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UCRACK
Input of Ultimate Stress for Cracking Analysis
Description
This user subroutine allows the user to input a constant or a temperature dependent
ultimate stress at each integration point of an element for cracking analysis. In
addition, the user can define the strain softening modulus and the crushing strain.
Format
User subroutine UCRACK is written with the following headers:
SUBROUTINE UCRACK (SCRACK,ESOFT,ECRUSH,ECP,DT,DTDL,N,NN,KC,
1 INC, NDI, NSHEAR, SHRFAC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION ECP(1), DT(1), DTDL(1)
user coding
RETURN
END
where:
Input:
ECP
is the array of crack strains.
DT
is the array of state variables, temperature first.
DTDL
is the array of incremental state variables, temperature first.
N
is the element number.
NN
is the integration point number.
KC
is the layer number.
INC
is the increment number.
NDI
is the number of direct components.
NSHEAR
is the number of shear components.
SHRFAC
is the user-defined shear retention factor.
Required Output
SCRACK
is the user-defined ultimate cracking stress.
ESOFT
is the user-defined strain softening moduli.
ECRUSH
is the user-defined strain at which crushing occurs.
3-48
MSC.Marc Volume D: User Subroutines and Special Routines
UCRACK
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Let us assume that the ultimate stress looks like
σ CR = A ( 1 – e –RT )
The user subroutine would look like
SUBROUTINE UCRACK(SCRACK,ESOFT,ECRUSH,ECP,DT,DTDL,N,NN,KC,
1 INC,NDI,NSHEAR, SHRFAC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION ECP(1),DT(1),DTDL(1)
A=
R=
TT=DT(1)+DTDL(1)+473.0
SCRACK=A*(1.0D0-EXP(-R*TT))
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
TENSOF
3-49
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ TENSOF
Input of Tension Softening Modulus for Cracking Analysis
Description
The tension softening modulus defines the post-failure behavior at an integration
point. By default in MSC.Marc, the reduction of the cracking stress to zero is a linear
function of the crack strain. This user subroutine allows the user to define for instance
a nonlinear behavior. The user subroutine is automatically called for every crack in
the analysis.
Format
User subroutine TENSOF is written with the following headers:
SUBROUTINE TENSOF (D,SP,GFP,DEP,ECP,SCRACK,SOSTR,ETSNEW,
ETSOFT,XH,SPECLN,JSOFT)
where:
Input:
GFP
DEP
ECP
SCRACK
SOSTR
ETSNEW
ESOFT
XH
SPECLN
is the change in stress due to incremental crack growth.
is the current strain increment.
is the crack strain at end of increment.
is the critical cracking stress given in input.
is the current cracking stress based on previous softening.
is the current value of temperature dependent Young’s modulus.
is the tension softening modulus given in input.
is the characteristic element length.
is the test specimen length.
Required Output
D
SP
JSOFT
is the stiffness in the crack direction term to be defined by you.
is the stress at end of increment as function of crack strain to be defined by
the user.
is the status indicator for softening. Used for plotting only.
= 1 inside softening range.
= 2 outside softening range.
Note that the definition of the stiffness D does not need to be exact. The correct
definition of the stiffness only determines the speed of the convergence. In fact, in the
above user subroutine, a large negative value of the stiffness term should never be
used as this would result in convergence problems. The stress definition, however,
must be exact; otherwise, the wrong solution is obtained.
3-50
MSC.Marc Volume D: User Subroutines and Special Routines
USHRET
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ USHRET
Input of Shear Retention Factor for Cracking Analysis
Description
The shear retention factor is used to define the residual shear stiffness for a cracked
integration point in a cracking analysis. The shear retention factor is defined as the
factor with which the initial shear stiffness is multiplied. With this user subroutine, the
user can define the shear retention factor to be, for instance, a function of the crack
strain. The user subroutine is automatically called for each existing crack.
Format
User subroutine USHRET is written with the following headers:
SUBROUTINE USHRET (FACTOR,ECRA1,ECRA2,ECRA12)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
ECRA1
is the crack strain in the first crack direction.
ECRA2
is the crack strain in the second crack direction.
ECRA12
is the shear strain over the crack.
Required Output
FACTOR
is a user-defined shear retention factor to be defined here.
MSC.Marc Volume D: User Subroutines and Special Routines
UVOID
3-51
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UVOID
Definition of the Initial Void Volume Fraction
Description
This user subroutine allows the definition of the initial void fraction in an elastic
plastic material when the damage model is being used. This user subroutine is
automatically called if the Gurson damage model is specified for a specific material.
Format
User subroutine UVOID is written with the following header:
SUBROUTINE UVOID(VOIDFI,M,NN,KC,MATUS,X)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION M(2),X(1),MATUS(2)
user coding
RETURN
END
where:
Input:
M(1)
is the user element number.
M(2)
is the internal element number.
NN
is the integration point number.
KC
is the layer number.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
X
is the coordinate position of integration point.
Required Output
VOIDFI
is the initial void fraction to be defined here.
3-52
MSC.Marc Volume D: User Subroutines and Special Routines
UVOIDN
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UVOIDN
Definition of the Void Nucleation Rate
Description
This user subroutine allows the definition of the void nucleation rate in a material
using the Gurson model. This user subroutine is called if the void nucleation method
under the DAMAGE model definition option is set to 3.
In this model, the yield surface is given as:
σ e2
q 2 σ KK
2
F = ------2- + 2q 1 f cosh  --------------- – [ 1 + ( q 1 f ) ] = 0
2σ
σm
m
where:
σe
is the effective stress.
σm
is the equivalent tensile stress.
f
is the void ratio.
Format
User subroutine UVOIDN is written with the following headers:
SUBROUTINE UVOIDN(A,B,M,NN,KC,MATUS,EPL,EPLAS,S,NDI,NSHEAR,
+DT,DTDL)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION M(2),DT(1),DTDL(1),EPL(1),MATUS(2)
user coding
RETURN
END
where:
Input:
M(1)
is the user element number.
M(2)
is the internal element number.
NN
is the integration point number.
KC
is the layer number.
MSC.Marc Volume D: User Subroutines and Special Routines
UVOIDN
3-53
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
EPL
is the plastic strain components.
EPLAS
is the equivalent plastic strain.
S
is the stress array.
NDI
is the number of direct components.
NSHEAR
is the number of shear components.
DT
is the array of state variables, temperature first.
DTDL
is the array of increment of state variables.
Required Output
A
is the multiplier as shown below.
B
is the multiplier as shown below.
In this user subroutine, the following type of stress controlled nucleation rate can
be specified:
·
·
σ kk
·
f = Aσ + B -------3
·
·
where σ is the von Mises equivalent stress rate, and σ kk is the hydrostatic stress rate.
3-54
MSC.Marc Volume D: User Subroutines and Special Routines
UVOIDRT
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UVOIDRT
Definition of the Initial Void Ratio or Initial Porosity
Description
The UVOIDRT user subroutine allows the user to define either the initial void ratio or
the initial porosity in a soil analysis or a mass diffusion analysis. It may also be used
to define a nonhomogeneous distribution of these variables, which in turn are used as
independent variables to define other variables through the TABLE option. Whether the
void ratio or the porosity is defined is based upon whether the INITIAL VOID RATIO or
INITIAL POROSITY option.
Format
User subroutine UVOIDRT is written with the following header:
SUBROUTINE UVOIDRT(M,N,NN,KC,MATS,COORD,NCRD,INC,CPTIM,
*TIMINC,VALUE,IFLAG)
INCLUDE '../COMMON/IMPLICIT'
DIMENSION MATUS(2)
user coding
RETURN
END
where
Input
M
N
NN
KC
MATUS(1)
MATUS(2)
COORD
NCRD
INC
CPTIM
TIMINC
VALUE
IFLAG
element number.
elsto number.
integration point number.
layer number.
user material id.
internal material id.
coordinate of integration point.
number of coordinates.
increment number.
time at the beginning of the increment.
time increment.
if iflag = 1 define void ratio.
if iflag = 2 define porosity.
1 or 2.
MSC.Marc Volume D: User Subroutines and Special Routines
UGRAIN
3-55
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UGRAIN
Calculation of Grain Size
Description
This user subroutine allows the user to calculate the typical grain size based upon the
state of material. The UGRAIN user subroutine is used in conjunction with the GRAIN
SIZE option where the initial grain size is prescribed. This user subroutine is called at
each integration point.
The calculation of grain size may be performed with all constitutive models.
Format
User subroutine UGRAIN is written with the following header lines:
SUBROUTINE UGRAIN(M,N,NN,KC,MATUS,EPLAS,ERATE,DT,DTDl,
* IGNMOD,GRNDAT,GRNSIZ,TIME,DELTIME)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION DT(*),GRNDAT(*),MATUS(2)
user coding
RETURN
END
where:
Input:
M
N
NN
KC
MATUS(1)
MATUS(2)
EPLAS
ERATE
DT
DTDL
GRNDAT
TIME
DELTIME
IGNMOD
is the element number
is the elsto number
is the integration point number
is the layer
is the user material identifier.
is the internal material identifier.
is the equivalent plastic strain
is the equivalent plastic strain rate
is the state variables at beginning of increment
is the incremental state variables
is the material data, GRNDAT (1) is the initial grain size
is the time - beginning of increment
is the incremental time
is the input mode for different model (-1 for user-defined)
Required Output
GRNSIZ
is the current grain size
3-56
MSC.Marc Volume D: User Subroutines and Special Routines
UDAMAG
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UDAMAG
Prediction of Material Damage
Description
This user subroutine provides the user with the mechanism for providing a Kachanov
damage factor to be applied to the material properties. The UDAMAG user subroutine
is used in conjunction with the DAMAGE model definition option. The user defines the
damage factor (df). 0 ≤ df ≤ 1 where df = 0 implies a fully damaged material. If model
9 is used, then:
p ·p
σ y = σ y ( ε , ε , T )* ( 1.0 – df )
If model 10 is used, then:
p ·p
σ y = σ y ( ε , ε , T )* ( 1.0 – df )
and
E = E ( T )* ( 1.0 – df )
This model is only applied to elastic-plastic materials using the additive procedure; it
does not work with the FeFp procedure.
Format
User subroutine UDAMAG is written with the following header lines:
SUBROUTINE UDAMAG(M,N,NN,KC,MATUS,EPLAS,ERATE,DT,DTDl,
*DAMDAT,DAMFAC,TIME,DELTIME)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION DT (*),DAMDAT(*),DTDL(*),MATUS(2)
user coding
RETURN
END
where:
Input:
M
is the user element number.
N
is the internal element number.
NN
is the integration point number.
KC
is the layer number.
MATUS(1)
is the user material identifier.
MSC.Marc Volume D: User Subroutines and Special Routines
UDAMAG
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
MATUS(2)
is the internal material identifier.
EPLAS
is the equivalent plastic strain.
ERATE
is the equivalent plastic strain rate.
DT
is the state variables at beginning of increment.
DTDL
is the state variables increment.
DAMDAT
is the material data, DAMDAT (1) is the initial damage factor.
TIME
is the time at the beginning of increment.
DELTIME
is the time increment.
Required Output
DAMFAC
is the current damage factor.
3-57
3-58
MSC.Marc Volume D: User Subroutines and Special Routines
UPOWDR
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UPOWDR
Definition of Material Data for Powder Metallurgy Model
Description
Material properties of powder metals which are used in Hot Isostatic Pressing (HIP)
are typically dependent upon both the temperature and the relative density of the
material. This user subroutine provides an alternative mechanism to enter this data.
This user subroutine is called for all elements for which the POWDER option is used.
The elastic, plastic, and thermal properties can be defined in this user subroutine. In
this model, the yield function, F, is defined as:
1
P2 1 ⁄ 2
F = ---  S ij S ij + -----2-
– σy
γ
β
where:
γ and β
are material parameters to be entered here.
S
is the deviatoric stress.
P
is the hydrostatic stress.
σy
is the equivalent tensile stress.
The equivalent inelastic strain rate, ε· , is defined as:
1 F
·
ε = ---  -----
µ σy
where:
µ
is the viscosity.
MSC.Marc Volume D: User Subroutines and Special Routines
UPOWDR
3-59
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Format
User subroutine UPOWDR is written with the following headers:
SUBROUTINE UPOWDR(E,G,POISS,GAMMA,BETA,VISC,SIGY,AMB,COMPF,
+REDENS,DT,DTDL,DET,IHEAT,IHCPS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION POWDAT(32)
user coding
RETURN
END
where:
Input:
E
is the Young’s moduli.
G
is the shear moduli.
POISS
is the is the Poisson’s ratio.
REDENS
is the relative density.
DT
is the array of state variables, temperature first.
DTDT
is the array of increment of state variables.
DET
is the determinant which gives the change in volume.
IHEAT
is the indicates if this is the heat transfer calculation in a coupled analysis.
= 0 stress pass.
= 1 heat pass.
Required Output
GAMMA
is the parameter γ in the yield function.
BETA
is the parameter β in the yield function.
VISC
is the is the viscosity µ.
SIGY
is the temperature-dependent equivalent tensile stress σy
AMB
is the conductivity in a coupled analysis.
COMPF
is the specific heat in a coupled analysis.
In the stress pass, you should define E, G, POISS, GAMMA, VISC, and SIGY.
In the heat transfer pass, the user should define AMB and COMPF.
The values of E, G, POISS, GAMMA, BETA, VISC, AMB, COMPF upon entrance are the values
calculated by MSC.Marc based upon user input.
3-60
MSC.Marc Volume D: User Subroutines and Special Routines
UPERM
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UPERM
Definition of Permeability
Description
In a diffusion or soil analysis, it might be necessary to define the permeability as a
function of the porosity or other variables. This user subroutine allows the user to
enter a general nonlinear relationship. It is called during any coupled diffusion
analysis or fluid-soil analysis.
Format
User subroutine UPERM is written with the following headers:
SUBROUTINE UPERM(PERMEA,M,NN,DT,POROP,POROS,X,K,STRESS,NGENS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION PERMEA(K,K),X(1),STRESS (*)
user coding
RETURN
END
where:
Input:
M
is the element number.
NN
is the integration point number.
DT
is the temperature.
POREP
is the pore pressure.
POROS
is the porosity.
X
is the array of integration point coordinates.
K
is the dimension of the permeability matrix
STRESS
is the effective stress matrix.
(in a soil analysis. In a pure diffusion analysis, stress is not used.)
NGENS
is the number of stress components.
Required Output:
PERMEA
is the permeability matrix.
MSC.Marc Volume D: User Subroutines and Special Routines
UMOONY
3-61
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UMOONY
Mooney-Rivlin Material
Description
This user subroutine allows the user to redefine the constants used in the strain energy
function. This data is normally entered through the MOONEY model definition option.
The form of the strain energy function is:
W = C 10 ( I 1 – 3 ) + C 01 ( I 2 – 3 ) + C 11 ( I 1 – 3 ) ( I 2 – 3 ) + C 20 ( I 1 – 3 ) 2 + C 30 ( I 1 – 3 ) 3
Format
User subroutine UMOONY is written with the following headers:
SUBROUTINE UMOONY(C10,C01,C11,C20,C30,T,N,NN,MATUS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION N(2),MATUS(2)
user coding
RETURN
END
where:
Input:
T
is the temperature.
N(1)
is your element number.
N(2)
is the internal element number.
NN
is the integration point number.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
Required Output
C10,C01,C11,C20,C30
are the values used in the strain energy function to be
defined the user.
3-62
MSC.Marc Volume D: User Subroutines and Special Routines
UENERG
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UENERG
Strain Energy Function
Description
This user subroutine allows the user to define his own elastic strain energy function
for incompressible materials. Normally, the five constant second-order model is
entered using the MOONEY model definition option. This option must still be used to
invoke this user subroutine. This user subroutine can be used when either the total
Lagrange or updated Lagrange procedure is used. The five material parameters, C10,
C01, C11, C20, and C30 must be correctly defined with the MOONEY option for energy
calculation.
Format
User subroutine UENERG is written with the following headers:
SUBROUTINE UENERG (W,W1,W2,W11,W12,W22,WI1,WI2,C10,C01,C11,
+C20,C30,N,NN)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION N(2)
user coding
RETURN
END
where:
Input:
WI1
is I 2 –
3.
WI2
is I 2 –
3.
C10, C01, C11, C20, C30
are the five material parameters of the
Mooney formulation.
N(1)
is the user element number.
N(2)
is the internal element number.
NN
is the integration point number.
MSC.Marc Volume D: User Subroutines and Special Routines
UENERG
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Required Output
W
is the strain energy density.
W1
is
∂W ⁄ ∂I 1 .
W2
is
∂W ⁄ ∂I 2 .
W11
is
∂ 2 W ⁄ ∂I 1 .
W12
is
∂ 2 W ⁄ ∂I 1 ∂I 2 .
W22
is
∂ 2 W ⁄ ∂I 2 .
2
2
3-63
3-64
MSC.Marc Volume D: User Subroutines and Special Routines
UOGDEN
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UOGDEN
Definition of Ogden Material Parameters
Description
This user subroutine allows the definition of the Ogden material parameters.
Additionally, any temperature dependence of these properties can be entered here.
The OGDEN option must be used to indicate that the element uses this material law,
and the number of terms in the series must be entered through the model definition
option. When the Ogden model is used in the updated Lagrange formulation, this user
subroutine is called twice per integration point. The first time for the bulk modulus;
the second time for the µ and λ coefficients.
The strain energy function for this material is written as:
n
∑
W =
i=1
µi
----- ( λ 1αi + λ 2αi + λ 3αi – 3 ) + 4.5K ( J 1 / 3 – 1 ) 2
αi
Format
User subroutine UOGDEN is written with the following headers:
SUBROUTINE UOGDEN(MATUS,NSER,M,NN,KC,INC,CPTIM,TIMINC,XMTDAT,
+BULK,DT,DTDT)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XMTDAT(2,NSER),M(2),DT(1),DTDL(1),MATUS(2)
user coding
RETURN
END
where:
Input:
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
NSER
is the number of terms in the series.
M(1)
is the user element number.
M(2)
is the internal element number.
NN
is the integration point number.
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
KC
is the layer number.
INC
is the increment number.
CPTIM
is the time at the beginning of the increment.
TIMINC
is the time step.
DT
is the array of state variables, temperature first.
DTDT
is the array of increments of state variables.
Required Output
XMTDAT(1,i)
is the value of µi.
XMTDAT(2,i)
is the value of αi.
BULK
is the bulk modulus.
UOGDEN
3-65
3-66
MSC.Marc Volume D: User Subroutines and Special Routines
UELDAM
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UELDAM
Definition of Damage Parameters in Ogden Model
Description
This user subroutine allows the user to define the damage parameters for the Ogden
model. There are two types of damage: one is associated with the deviatoric (shear)
behavior, and one is associated with the dilatational (volumetric) behavior (additional
details can be found in MSC.Marc Volume A: User Information). This user subroutine
is, therefore, called twice per integration point, once for deviatoric behavior and once
for volumetric behavior. This user subroutine is called only if the damage type is set
to 6 through the DAMAGE model definition option.
Format
User subroutine UELDAM is written with the following headers:
2
3
SUBROUTINE UELDAM(M,N,NN,KC,INC,LOVL,MATUS,TIMINC,CPTIM,
TOTEN,DEVEN,TOTEND,TOTENV,SURFC,SURFD,DT,
DTDL,DAMD,DDAMD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DT(1),DTDL(1),MATUS(2)
user coding
RETURN
END
where:
Input:
M
is the user element number.
N
is the internal element/elsto number.
NN
is the integration point number.
KC
is the layer number.
INC
is the increment number.
LOVL
is 4 for assembly phase.
is 6 for stress recovery phase.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
TIMINC
is the time increment.
CPTIM
is the time at the beginning of the increment.
MSC.Marc Volume D: User Subroutines and Special Routines
UELDAM
3-67
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
TOTEN
is the total instantaneous strain energy at the end of the current step
excluding damage.
DEVEN
is the deviatoric part of the instantaneous strain energy at the end of the
current step excluding damage.
TOTEND
is the stored deviatoric energy at previous step (including damage).
TOTENV
is the stored volumetric energy at previous step (including damage).
SURFC
is the current radius of continuous damage surface.
SURFD
is the current radius of discontinuous damage surface.
DT
is the temperature.
DTDL
is the incremental temperature.
Required Output:
DAMD
is the value of Kachanov deviatoric damage parameter.
DDAMD
is the derivative of the damage parameter with respect to the maximum total
strain energy.
3-68
MSC.Marc Volume D: User Subroutines and Special Routines
HYPELA2
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ HYPELA2
User-defined Material Behavior
Description
This user subroutine gives the user the ability to implement arbitrary material models
in conjunction with the HYPOELASTIC model definition option (see MSC.Marc
Volume C: Program Input). MSC.Marc supplies the user with the total displacement,
incremental displacement, total mechanical strain (mechanical strain = total strain –
thermal strain), the increment of mechanical strain, and other information. Stress, total
strain, and state variable arrays at the beginning of the increment ( t = n ) are passed
to HYPELA2. The user is expected to calculate stresses S, tangent stiffness D, and state
variables (if present) that correspond to the current strain at the end of the increment
( t = n + 1 ).
Format
User subroutine HYPELA2 is written with the following headers
SUBROUTINE HYPELA2(D,G,E,DE,S,T,DT,NGENS,N,NN,KC,MATUS,NDI,
2 NSHEAR,DISP,DISPT,COORD,FFN,FROTN,STRECHN,EIGVN,FFN1,
3 FROTN1,STRECHN1,EIGVN1,NCRD,ITEL,NDEG,NDM,NNODE,
4 JTYPE,LCLASS,IFR,IFU)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION E(1),DE(1),T(1),DT(1),G(1),D(NGENS,NGENS),S(1)
DIMENSION N(2),COORD(NCRD,NNODE),DISP(NDEG,NNODE),
2 DISPT(NDEG,NNODE),FFN(ITEL,ITEL),FROTN(ITEL,ITEL)
3 STRECHN(ITEL),EIGVN(ITEL,ITEL),FFN1(ITEL,ITEL)
4 FROTN1(ITEL,ITEL),STRECHN1(ITEL),EIGVN1(ITEL,ITEL)
DIMENSION MATUS(2)
user coding
RETURN
END
where:
Input:
E
is the total elastic mechanical strain.
DE
is the increment of mechanical strain.
T
is the state variables (comes in at t = n; must be updated to
have state variables at t = n +1).
MSC.Marc Volume D: User Subroutines and Special Routines
HYPELA2
3-69
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
DT
is the increment of state variables.
NGENS
is the size of the stress-strain law.
N
is the element number.
NN
is the integration point number.
KC
is the layer number.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
NDI
is the number of direct components.
NSHEAR
is the number of shear components.
DISP
is the incremental displacements.
DISPT
is the displacements at t = n (at assembly lovl = 4) and the
displacements at t = n +1 (at stress recovery lovl = 6).
COORD
is the coordinates.
NCRD
Is the number of coordinates.
NDEG
is the number of degrees of freedom.
ITEL
is the dimension of F and R; 2 for plane-stress and 3 for the rest
of the cases.
NNODE
is the number of nodes per element.
JTYPE
is the element type.
LCLASS
is the element class.
IFR
is set to 1 if R has been calculated.
IFU
is set to 1 if STRECH has been calculated.
At t = n (or the beginning of the increment):
FFN
is the deformation gradient.
FROTN
is the rotation tensor.
STRECHN
is the square of principal stretch ratios, lambda (i).
EIGVN (I,J)
I principal direction components for J eigenvalues.
At t = n +1 (or the current time step):
FFN1
is the deformation gradient.
FROTN1
is the rotation tensor.
STRECHN1
is the square of principal stretch ratios, lambda (i).
EIGVN1(I,J)
is the I principal direction components for J eigenvalues.
Required Output:
D
is the stress strain law to be formed.
G
is the change in stress due to temperature effects.
S
is the stress to be updated by you.
3-70
MSC.Marc Volume D: User Subroutines and Special Routines
HYPELA2
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Parameter
Without a specific parameter, engineering strain and stress are passed.
For large strain rubber elasticity, UELASTOMER (updated Lagrange) or UENERG (total
Lagrange) must be used. For large strain inelasticity, UPDATE, FINITE, and LARGE
DISP parameters must be used. In addition, for incompressible plasticity, CONSTANT
DILATATION must also be used. With the use of the FINITE parameter, strain and stress
components are rotated by MSC.Marc to account for rigid-body motion before
HYPELA2 is called; so, the stress integration for the co-rotational part is performed in
HYPELA2 based on rotation neutralized values. The user is required to pass back the
updated rotation neutralized stress based on the co-rotational system. The shell
thickness is only updated with the FINITE parameter. The LARGE DISP parameter flags
the use of geometric stiffness and UPDATE parameter indicates the use of current
configuration for kinematics.
Strains
and DE( ), which are passed to HYPELA2, are the elastic mechanical strain and
the increment of mechanical strain, respectively. Here, mechanical strain is defined by
“total strain – thermal strain”. Note that for the first iteration (NCYCLE = 0) during
assembly (LOVL = 4), DE is an estimate of the strain change. The variables NCYCLE and
LOVL can be obtained from common block CONCOM.
E ( )
The total strain etotl(*) can be obtained using:
include’array2’
include ’heat’
include ’ngenel’
include ’space’
dinension etotl(6)
1a4=ietota+lofr+(nn-1)*ngenel-1
do i=1,ngenel
etotl(i)=vars(1a4+i)
enddo
Coordinate System
Continuum (3-D-Solid, plane strain, axisymmetric and 2-D plane stress) elements
use the global Cartesian coordinate system for the base vectors of stress and strain
components. Also, membranes, shells and beams usually use the local Cartesian
systems defined in MSC.Marc Volume B: Element Library (please check this
volume for the element used). However, if the FINITE parameter is used, strain
and stress components are rotated to account of rigid-body motion before HYPELA2
is called. So, local Cartesian coordinate system is used based on rotationneutralized values
MSC.Marc Volume D: User Subroutines and Special Routines
HYPELA2
3-71
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
If the ORIENTATION model definition option is used, the stress and strain components
are stored in the local orientation axis. The basis vectors rotate with the material by
rotation tensor (R) and, so the stress and strain are already stored in the rotated
orientation axis before HYPELA2 is called.
Stress and Strain Components Order of Storage
The number of strain and stress components is composed of “number of direct
components” (NDI) and “number of shear components” (NSHEAR). NDI and NSHEAR
are defined in Table 3-2 for each element. For example, 3-D solid elements: ndi=3 and
nshear=3, thick shells: ndi=2 and nshear=3, thin shells and membranes: ndi=2 and
nshear=1, plane strain and axisymmetric elements: ndi=3 and nshear=1, beams: ndi=1
and shear=0 to 2. The stress and strain are first stored direct components followed by
shear components. For full components, (ndi=3, nshear=3), S(11), S(22), S(33),
S(12), S(23), S(31) is the right order to store. For Herrmann formulation of elements,
the last strain component is the volumetric strain and the last stress component is the
mean pressure constant. Thus, in the Herrmann formulation, NGENS = NDI + NSHEAR +
1.
State Variables
If there are any state variables (other than temperature) in the problem, the user can
use the array T( ) to update and return these state variables. The increments of the
state variables should be calculated and returned as the array DT ( ). T( ) and DT( )
have the size of NSTATS if NSTATS is the number of state variables defined in the
PARAMETERS model definition option in the input file. T(1) and DT(1) are reserved
for the temperature and the temperature increment, respectively, and calculated by
MSC.Marc. You must not change the values of T(1) and DT(1) even in isothermal
problems with state variables. All variables T(2) to T(NSTATS) and DT(2) to
DT(NSTATS) are accessible to you. If the FINITE parameter is used, any nonscalar state
variables (vector or tensor values) need to be rotated by using the rotation tensor (R)
provided.
Tangent Stiffness
The user also needs to provide the tangent stiffness D based on the updated stress.
∂ ( ∆σi )
D ij = ----------------∂ ( ∆ε j )
3-72
MSC.Marc Volume D: User Subroutines and Special Routines
HYPELA2
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
The rate of convergence or a nonlinear problem depends critically on the user supplied
tangent stiffness D . Before using this user subroutine for large problems, it is
recommended that the user check the user subroutine with one-element problems
under displacement and load control boundary conditions. The displacement
controlled boundary condition problem checks the accuracy of the stress update
procedure while the load controlled problem checks the accuracy of the tangent
stiffness. A fully consistent exact tangent stiffness provides quadratic convergence of
the displacement or residual norm.
Thermal Stress Problems
For thermal stress problems, the user needs to calculate and return the change in stress
G i due to temperature dependent material properties.
G i = ( D θn + 1 – D θn ) ij ( ∆ε ) j
where θ n and θ n + 1 are the temperatures at time t
= n
and t
= n + 1,
respectively
and ( ∆ε )j is strain increment which is passed to HYPELA.
Deformation Gradient (F), Rotation Tensor (R) and Stretch Tensor (U)
For continuum (3-D solid, plane strain, axisymmetric and 2-D plane stress) elements
and membranes, the deformation gradient and rotation tensor are passed. For those
elements, principal stretch ratio and eigenvectors are also passed to HYPELA2. Based
on the information, the user can calculate stretch tensor (U) as follows:
CALL SCLA (UN1, 0.d0, ITEL, ITEL, 1)
DO K=1,3
DO J=1,3
DO K=1,3
UN1 (I,J) = UN1 (I,J)+DSQRT (STRETCH1(K)*EIGVN1(I,K)*EIGVN1(J,K))
ENDDO
ENDDO
ENDDO
In this case, STRECHN1 stores the value of the squares of the stretches, and EIGVN1(I,J)
stores the I-th eigenvector component corresponding to the J-th eigenvalue of C,
where C is the right Cauchy-Green Tensor at t = n + 1 .
For shells and beams, kinematic variables are not available.
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
The total strain etotl(*) can be obtained using:
include’array2’
include ’heat’
include ’ngenel’
include ’space’
dinension etotl(6)
1a4=ietota+lofr+(nn-1)*ngenel-1
do i=1,ngenel
etotl(i)=vars(1a4+i)
enddo
HYPELA2
3-73
3-74
MSC.Marc Volume D: User Subroutines and Special Routines
UFINITE
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UFINITE
Finite Deformation Isotropic Material Models
Description
This user subroutine is used for finite deformation isotropic material models based on
principal stretches. Both nonlinear elasticity and large strain plasticity models can be
implemented using this user subroutine. This user subroutine requires the use of the
PLASTICITY, 5 parameter. The UFINITE user subroutine is available for plane strain,
generalized plane strain, axisymmetric, axisymmetric with twist, and 3-D elements.
Format
User subroutine UFINITE is written with the following headers:
SUBROUTINE UFINITE(STRECH,EIGV,DETFE,DETFT,DEFGR,DT,
DTDL,STRESS,TANGENT,M,NN,GF,D)
IMPLICIT REAL *8 (A-H,O-Z)
DIMENSION STRECH(3),STRESS(3),TANGENT(3,3),EIGV(3,3),
2
DEFGR(3,3),DIMENSION N(2),COORD(NCRD,NNODE),
3
DISP(NDEG,NNODE),BEN(6),DT(1),DTDL(1),GF(1),D(1)
1
user coding
RETURN
END
where
Input:
STRECH
is the squares of deviatoric trial elastic principal stretch ratios.
EIGV(I,J)
is the I principal direction components for J eigenvalues of the
trial elastic left Cauchy-Green tensor (Finger tensor).
DEFGR
is the total deformation gradient for continuum elements.
DETFE
is the elastic part of the Jacobian.
DETFT
is the total Jacobian.
DT
is the array of the total state variables (temperature is first).
DTDL
is the array of the incremental state variables.
M
is the user element number.
MSC.Marc Volume D: User Subroutines and Special Routines
UFINITE
3-75
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
D
is the array for material properties defined as
D(1) = bulk modulus at (DT + DTDL)
D(2) = shear modulus at (DT +DTDL)
D(3) = initial yield stress (at zero effective plastic strain)
D(4) = kinematic hardening modulus at (DT + DTDL)
D(5) = portion of isotropic hardening
D(6) = portion of kinematic hardening
D(7) = coefficient of linear thermal expansion
D(8) = bulk modulus at DT
D(9) = shear modulus at DT.
NN
is the integration point number.
Required Output:
STRESS
is the principal deviatoric Kirchhoff stress at the end of
the increment.
TANGENT
is the elasto-plastic material tangent in the principal space; relating
the total deviatoric Kirchhoff stress in principal space to the total
principal deviatoric logarithmic strains.
GF
is the stress change due to temperature dependent properties.
This user subroutine allows the user to implement arbitrary finite elasticity and large
strain plasticity models. The user does not need to be concerned with preserving
objectivity under large rotations in large strain problems, but must only deal with the
small strain problem. The user needs to update principal deviatoric Kirchhoff stresses
and provide a consistent deviatoric part of tangent in principal space and calculate any
change in stresses due to temperature dependent thermal properties. MSC.Marc
calculates the kinematic large strain contributions to the tangent automatically. The
user does not need to calculate the pressure or the volumetic part of the tangent. Also,
transformation from the principal to global space for both stresses and the tangent is
done automatically by MSC.Marc. The user can refer to the UPSTRECH user
subroutine for the analogus formulation for elasticity
If there are any state variables in the problem, you can use the array DT() to update
and return these state variables. The increments of the state variables must be
calculated and returned as the array DTDL(). DT() and DTDL() are the size NSTATS
where NSTATS is the number of state variables and is set in the PARAMETERS option
in the input file. It must be remembered that DT(1) and DTDL(1) are reserved for the
temperature and the temperature increment, respectively and are supplied to you by
MSC.Marc. The user must not change the values of DT(1) and DTDL(1) even in
isothermal problems. All variables DT(2) to DT(NSTATS) and DTDL(2) to
DTDL(NSTATS) are accessible to the user.
3-76
UFINITE
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
The framework used in this user subroutine is based on principal stretches of the
trial left Cauchy-Green tensor. For more details, please refer to the work of Simo
and coworkers.
The rate of convergence of the global residual in this approach is critically
dependent on the accuracy of the consistent tangent and the accuracy of the
stress update procedure.
MSC.Marc Volume D: User Subroutines and Special Routines
UELASTOMER
3-77
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UELASTOMER
Generalized Strain Energy Function
3
User-defined Anisotropy and Constitutive
Relations User Subroutines
Description
This user subroutine allows definition of the user’s own hyperelastic models. The
subroutine is activated by one of the following model definition options: FOAM,
MOONEY, ARRUDBOYCE, GENT, and OGDEN. The UELASTOMER user subroutine
must be used with the ELASTICITY,2 parameter (large strain, updated
Lagrange formulation).
Foam Models
For compressible foam materials, four types of strain energy functions can be defined
using the UELASTOMER user subroutine, depending on the iflag entered in the 4th field
of the 3rd data block of the FOAM model definition option:
1. iflag = 1, Invariant-based model
W = W ( I 1, I 2, I 3 )
2. iflag = 2, Principal-stretch-based model
W = W ( λ 1, λ 2, λ 3 )
3. iflag = 3, Invariant-based model with volumetric and deviatoric split
W = W dev ( I 1, I 2 ) + U ( J )
4. iflag = 4, Principal-stretch-based model with volumetric and deviatoric split
W = W dev ( λ 1, λ 2, λ 3 ) + U ( J )
I 1 , I 2 , and I 3 ( λ 1 , λ 2 , and λ 3 ) are strain invariants (principal stretches), and I 1 and
I 2 ( λ 1 , λ 2 , and λ 3 ) are their deviatoric parts, defined by I 1 = J –2 / 3 I 1 and
I 2 = J –4 / 3 I 2 ( λ i = J – 1 / 3 λ i , i = 1, 2, 3 ) ; J is the determinant of the
deformation gradient.
3-78
MSC.Marc Volume D: User Subroutines and Special Routines
UELASTOMER
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
MSC.Marc uses conventional displacement elements for user-defined compressible
foam models (iflag from 1 to 4). No volumetric constraints are taken into account. For
incompressible or nearly incompressible rubber-like materials, rubber model with
iflag equal to 5 or 6 should be used.
Rubber Models
Because rubber-like materials are nearly incompressible, it is numerically more
efficient to split the energy function into a volumetric part and a deviatoric part. A
mixed formulation, which treats hydrostatic pressure as an independent variable, is
used in MSC.Marc to overcome the numerical difficulties coming from the volumetric
constraints. A linear relationship between pressure and volumetric strain is a
presupposition in the mixed formulation. This linear relationship should be accurate
enough because of the incompressibility. Therefore, only the deviatoric part of energy
function needs to be defined in the user subroutine for rubber-like materials.
Invariant-based rubber models can be defined using the UELASTOMER user
subroutine if the MOONEY, ARRUDBOYCE, or GENT model definition option is used.
5. iflag = 5, Invariant-based model, deviatoric part only
W = W dev ( I 1, I 2 )
Principal-stretch-based rubber models can be defined using th UELASTOMERe user
subroutine if a 3 is entered in the 3rd field of the 3rd data block of OGDEN model
definition option.
6. iflag = 6, Principal-stretch-based model, deviatoric part only
W = W dev ( λ 1, λ 2, λ 3 )
Note: If iflag=5 or iflag=6, only the deviatoric part of the energy function is defined via the user
subroutine UELASTOMER. The volumetric part is calculated internally by MSC.Marc. For
this purpose, the bulk modulus MUST be defined with either MOONEY, or ARRUDBOYCE,
or GENT, or OGDEN model definition option.
In case of the direct definition of material properties through input deck, if no bulk modulus
is given, the default bulk modulus is calculated as 5000 times initial shear modulus.
However, if UELASTOMER is used, the inital shear modulus is not explicitly available and
the bulk modulus must be directly defined.
Compared to the foam models (iflag from 1 to 4), working only for compressible
materials, the rubber-like model (iflag equal to 5 or 6) can be used for both
compressible and incompressible materials. However, the foam models allow the user
to define a general nonlinear volumetric energy function.
MSC.Marc Volume D: User Subroutines and Special Routines
UELASTOMER
3-79
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Format
User subroutine UELASTOMER is written with the following headers:
subroutine (iflag,m,nn,matus,be,x1,x2,x3,detft,
$
enerd,w1,w2,w3,w11,w22,w33,w12,w23,w31,
$
dudj,du2dj,dt,dtdl,iarray,array)
c
c user defined, generalized strain energy function
c implemented in the framework of updated Lagrange
c
implicit real*8 (a-h,o-z)
dimension m(2),be(6),dt(*),dtdl(*),iarray(*),array(*)
dimension matus(2)
c
return
end
where:
Input:
iflag
Activated by FOAM model definition option:
= 1 energy function in terms of invariants
= 2 energy function in terms of principal stretches
= 3 energy function in terms of invariants with deviatoric split
= 4 energy function in terms of principal stretches with deviatoric split
Activated by MOONEY, or ARRUDBOYCE, or GENT model
definition option:
= 5 energy function in terms of invariants deviatoric part only. The bulk
modulus MUST be defined with either MOONEY, ARRUDBOYCE, or
GENT model definition option
Activated by OGDEN model definition option
= 6 energy function in terms of principal stretches deviatoric part only. The
bulk modulus MUST be defined with OGDEN model definition option.
m(1)
user element number
m(2)
internal element number
nn
integration point number
mats(1)
user material identification number
mats(2)
internal material identification number
be
left Cauchy Green deformation tensor
3-80
MSC.Marc Volume D: User Subroutines and Special Routines
UELASTOMER
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
x1,x2,x3
if iflag
if iflag
if iflag
if iflag
if iflag
if iflag
detft
determinate of deformation gradient
dt
array of state variables (temperature at first) at t n
dtdl
incremental state variables
iarray
not used
array
not used
=
=
=
=
=
=
1:
2:
3:
4:
5:
6:
invariants of be
principal stretches
deviatoric part of invariants of be
deviatoric principal stretches
deviatoric part of invariants of be
deviatoric principal stretches
Required Output:
enerd
energy density at t n + 1
Foam
Rubber
iflag = 1
iflag = 2
iflag = 3
iflag = 4
iflag = 5
iflag = 6
W1
∂W
-------∂I 1
∂W
--------∂λ 1
∂W
-------∂I 1
∂W
--------∂λ 1
∂W
-------∂I 1
∂W
--------∂λ 1
W2
∂W
-------∂I 2
∂W
--------∂λ 2
∂W
-------∂I 2
∂W
--------∂λ 2
∂W
-------∂I 2
∂W
--------∂λ 2
W3
∂W
-------∂I 3
∂W
--------∂λ 3
N/A
∂W
--------∂λ 3
N/A
∂W
--------∂λ 3
W11
∂2W
---------∂I 12
∂2W
---------∂λ 12
∂2W
---------2
∂I 1
∂2W
---------∂λ 12
∂2 W
---------2
∂I 1
∂2 W
---------∂λ 12
W22
∂2W
---------∂I 22
∂2W
---------∂λ 22
∂2W
---------∂I 22
∂2W
---------∂λ 22
∂2 W
---------∂I 22
∂2 W
---------∂λ 22
W33
∂2W
---------∂I 32
∂2W
---------∂λ 32
N/A
∂2W
---------∂λ 32
N/A
∂2 W
---------∂λ 32
W12
∂2W
--------------∂I 1 ∂I 2
∂2W
-----------------∂λ 1 ∂λ 2
∂2W
--------------∂I 1 ∂I 2
∂2W
-----------------∂λ 1 ∂λ 2
∂2 W
--------------∂I 1 ∂I 2
∂2 W
-----------------∂λ 1 ∂λ 2
W23
∂2W
--------------∂I 2 ∂I 3
∂2W
-----------------∂λ 2 ∂λ 3
N/A
∂2W
-----------------∂λ 2 ∂λ 3
N/A
∂2 W
-----------------∂λ 2 ∂λ 3
MSC.Marc Volume D: User Subroutines and Special Routines
UELASTOMER
3-81
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
∂2W
--------------∂I 3 ∂I 1
∂2W
-----------------∂λ 3 ∂λ 1
N/A
∂2W
-----------------∂λ 3 ∂λ 1
N/A
∂2 W
-----------------∂λ 3 ∂λ 1
dudj
N/A
N/A
∂U
------∂J
∂U
------∂J
N/A
N/A
du2dj
N/A
N/A
∂2U
---------2∂J
∂2U
---------2∂J
N/A
N/A
W31
3-82
MSC.Marc Volume D: User Subroutines and Special Routines
GENSTR
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ GENSTR
Generalized Stress Strain Law (Shells & Beams)
Description
This user subroutine allows the user to enter the generalized stress-strain law for shells
and beams which are conventionally integrated through their thickness. This is often
convenient in composite analysis where the experimental information is for the total
material, not individual plies. This option is activated using the SHELL SECT
parameter. As no layer integration is performed, the number of layers can be set
to one.
The user needs to provide the generalized stress-strain law D and the total generalized
stress at the end of the increment.
Format
User subroutine GENSTR is written with the following headers:
SUBROUTINE GENSTR(D,DC,FCRP,ETOTA,DE,HT,S,T,DT,ER,EC,
* SR,SC,NGENS,M,N,NN,MATUS,IHRESP,ICRESP)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION D(NGENS,NGENS),DC(NGENS,NGENS),FCRP(1),ETOTA(1),
* DE(1),S(1),T(1),DT(1),ER(1),EC(1),SR(1),SC(1),N(2),MATUS(2)
user coding
RETURN
END
where:
Input:
ETOTA
is the total strain array.
DE
is the increment of strain array.
HT
is the shell thickness.
S
is the stress array.
T
are the state variables (temperature).
DT
are the increments of state variables.
ER
is the real strain array during harmonic sub-increment.
EC
is the imaginary strain array during harmonic sub-increment.
NGENS
is the number of generalized stress.
M
is the internal element number.
MSC.Marc Volume D: User Subroutines and Special Routines
GENSTR
3-83
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
N
is the internal element number.
NN
is the integration point number.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
IHRESP
is the flag to indicate harmonic sub-increment.
IHRESP=0
during a transient analysis.
IHRESP=1
during a harmonic sub-increment.
ICRESP
indicates complex harmonic sub-increment.
Required Output:
D
is the generalized real stress-strain law to be defined here.
DC
is the generalized imaginary stress-strain law.
FCRP
is the change in stress due to ‘temperature effects’ to be defined here.
SR
is the real harmonic stress.
SC
is the imaginary harmonic stress.
During transient increments, the user defines D, S, and FCRP.
During harmonic subincrements the user defines D, DC, SR, and SC.
For thick shell elements (types 22, 75, and 140):
Components
Description
1, 2, and 3
are membrane strains
4 and 5
are transverse shear strains
6, 7, and 8
are curvatures (correspond to 1, 2, and 3)
9 and 10
are physically undefined (correspond to 4 and 5)
11 and 12
are inplane rotation terms related to drilling degrees of freedom (only
element 22 has component 12)
For thin shell elements (types 4, 8, 24, 49, 72, 138, and 139):
Components
Description
1, 2, and 3
are membrane strains
4, 5, and 6
are curvatures (correspond to 1, 2, and 3)
7
is an inplane rotation term related to drilling degrees of freedom (only
elements 138 and 139 have component 7)
3-84
MSC.Marc Volume D: User Subroutines and Special Routines
UBEAM
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UBEAM
Input for Nonlinear Beam
Description
The UBEAM user subroutine allows the user to define nonlinear elastic cross-section
properties as a function of generalized elastic strains and state variables for beam
element 52 or beam element 98:
This is used in conjunction with the hypoelastic option. The user must use the
HYPOELASTIC model definition option.
Note: This user subroutine should not be used if the material properties or the beam cross-section
data are design variables. Use the ISOTROPIC and GEOMETRY option instead.
Format
User subroutine UBEAM is written with the following headers.
SUBROUTINE UBEAM(D,FCRP,DF,DFI,ETOT,DE,DEI,S,SI,GS,GSI,TEMP,
+DTEMP,NGENS,N,NN,MATUS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSIOND(NGENS,NGENS),DF(1),S(1),GS(NGENS),DE(NGENS),
+TEMP(1),DTEMP(1),FCRP(1),ETOT(1),DFI(1),DEI(NGENS),SI(1),
GSI(1),MATUS(2)
user coding
RETURN
END
where:
Input:
ETOT
are the total generalized strains.
DE
are the increments of generalized strain.
DEI
are the increments of imaginary generalized strain, if complex
harmonic analysis.
S
is not used.
SI
is not used.
GS
is passed in as the total generalized stress at the beginning of the
increment, and must be redefined as the total stress generalized at the end
of the increment.
MSC.Marc Volume D: User Subroutines and Special Routines
UBEAM
3-85
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
GSI
are the increments of generalized harmonic stress, if complex
harmonic analysis.
TEMP
are the total state variables at the beginning of the increment.
DTEMP
are the increments of state variables.
NGENS
is the number of generalized stress.
N
is the element number.
NN
is the integration point number.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
Required Output:
D
is the matrix of cross-section stiffness properties (to be defined in this
user subroutine).
FCRP
is the generalized stress increment caused by change in state variables (to
be defined in this user subroutine).
DF
are the increments of generalized stress (to be defined in this user
subroutine).
DFI
are the increments of imaginary generalized stress, if complex
harmonic analysis.
The components of generalized strain and stress for element 52 are:
ETOT(1)
Axial strain
ETOT(2)
Curvature change in first bending direction
ETOT(3)
Curvature change in second bending direction
ETOT(4)
Twist of the beam
GS(1)
Axial force
GS(2)
Bending moment in first bending direction
GS(3)
Bending moment in second bending direction
GS(4)
Twisting moment
The components of generalized strain and stress for element 98 are:
ETOT(1)
Axial strain
ETOT(2)
Local γxy shear
ETOT(3)
Local γyz shear
ETOT(4)
Curvature change in first bending direction
ETOT(5)
Curvature change in second bending direction
ETOT(6)
Twist of the beam
GS(1)
Axial force
3-86
MSC.Marc Volume D: User Subroutines and Special Routines
UBEAM
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
GS(2)
Local τxy shear
GS(3)
Local τyz shear
GS(4)
Bending moment in the first bending direction
GS(5)
Bending moment in the second bending direction
GS(6)
Twisting moment
MSC.Marc Volume D: User Subroutines and Special Routines
UPHI
3-87
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UPHI
Input of PHI Function in Harmonic Analysis
Description
This user subroutine allows the input of PHI functions to be expressed analytically.
The values of PHI are then passed into a MSC.Marc user subroutine where they are
used in calculation of the Laplace transform for harmonic analysis.
Format
User subroutine UPHI is written with the following headers:
SUBROUTINE UPHI(ELCG,FREQ,WI1,WI2,C10,C01,C11,C20,C30,NDI,
*NSHEAR,FI0,FI1,FI2,FI11,FI12,FI21,FI22,IFLAG,DERIVS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION ELCG(1),DERIVS(1)
user coding
RETURN
END
where:
Input:
ELCG
is the left Cauchy-Green strain vector.
FREQ
is the excitation frequency in
radians/ time unit.
WI1,WI2
are the first and second invariants of ELCG.
C10,C01,C11,C20,C30
are the five material parameters of the
Mooney formulation.
NDI
is the number of direct strain components.
NSHEAR
is the number of shear strain components.
IFLAG = 1:
The sine PHI functions should be defined.
IFLAG = 2:
The cosine PHI functions should be defined.
DERIVS
is the array which contains the variables W,
W1, W2, W11, W12, W21, and W22.
Required Output:
FI0,FI1,FI2,FI11,FI12,FI21,FI22
are the seven PHI functions which should be
defined in this user subroutine by the user.
3-88
MSC.Marc Volume D: User Subroutines and Special Routines
UPHI
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
where:
W
is the strain energy density.
W1
is
∂W ⁄ ∂I 1 .
W2
is
∂W ⁄ ∂I 2 .
W11
is
∂ W ⁄ ∂I 1 .
W12
is
∂ 2 W ⁄ ∂I 1 ∂I 2 .
W21
is
∂ W ⁄ ∂I 2 ∂I 1 .
W22
is
∂ W ⁄ ∂I 2 .
2
2
2
2
2
MSC.Marc Volume D: User Subroutines and Special Routines
UCOMPL
3-89
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UCOMPL
Input of Viscous Stress Strain Relationship
Description
The UCOMPL user subroutine allows the user to input a real (elastic) and imaginary
(damping) stress-strain relation for complex harmonic analysis. If not used, only the
real portion is formed in the conventional manner. This user subroutine is called for
all elements, integration points, and layers in a harmonic subincrement. the user
specifies the C matrix and can alter the existing B matrix if necessary. The stress is
·
·
then calculated from σ = Bε + Cε where ε, ε are the harmonic strain and strain
rate, respectively.
Format
User subroutine UCOMPL is written with the following headers:
SUBROUTINE UCOMPL(C,B,ETOT,EELAS,EPLAS,S,T,XINTP,COORD,
2 DISPT,FREQ,N,NN,KC,NGENS,INC,INCSUB,NDEG,NCRD,NDI,NSHEAR)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION C(NGENS,NGENS),B(NGENS,NGENS),ETOT(1),
2 EELAS(1),EPLAS(1),T(1),XINTP(NCRD),COORD(NCRD,1),
2 DISPT(NDEG,1),N(2)
C
C
C
USER SUBROUTINE TO INPUT A COMPLEX STRESS STRAIN LAW
FOR HARMONIC ANALYSIS C IS IMAGINARY PART
B IS REAL PART
user coding
RETURN
END
where:
Input:
ETOT
are the total strains.
EELAS
are the total elastic strains.
EPLAS
are the plastic strains.
S
are the stresses.
T
are the total state variables (temperature first).
XINTP
are the coordinates of this integration point.
COORD
are the coordinates of the nodes of this element.
3-90
MSC.Marc Volume D: User Subroutines and Special Routines
UCOMPL
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
DISPT
are the total displacements of the nodes of this element.
FREQ
is the harmonic frequency in radians/time unit.
N(1)
is the user’s element number.
N(2)
is the internal element number.
NN
is the integration point number.
KC
is the layer number.
NGENS
is the number of stress-strain components.
INC
is the increment number.
INCSUB
is the subincrement number.
NDEG
is the number of degrees of freedom per node.
NCRD
is the number of coordinate directions per node.
NDI
is the number of direct component of stress.
NSHEAR
is the number of shear components of stress.
Required Output:
C
is the imaginary damping part of the stress-strain law.
B
is the real elastic part of the stress-strain law.
MSC.Marc Volume D: User Subroutines and Special Routines
GAPU
3-91
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ GAPU
Input of Gap Direction And Closure Distance
Description
This user subroutine allows input or modification of the direction and closure distance
of gap element type 12 and 97 based on the current position of the end nodes of the
element. This makes it possible to model contact sliding along curved surfaces which
can occur in the analysis of metal forming problems. Although the gap direction and
closing distance can be changed, this user subroutine does not allow for finite sliding
of two meshes with respect to each other, since the load transfer path is unchanged. In
addition, it allows for specification of a nonlinear relationship between the normal
force and the maximum friction force instead of the regular linear Coulomb relation.
Note: If this user subroutine is used to change the direction of the gap, friction should not
be included.
The user subroutine also allows the user to specify certain tolerances to control gap
closure and friction iterations. This last feature is not generally used.
Format
User subroutine GAPU calls for the following headers:
SUBROUTINE GAPU(DIR,DIST,X1,X4,TOL1,TOL2,TOL3,M,MSUB,INC,
+NCR,FN,FF)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DIR(3),X1(3),X4(3),M(2)
user coding
RETURN
END
where:
Input:
X1
is the current array of coordinates of the first node of the element.
X4
is the current array of coordinates of the fourth node of the element.
TOL1
is the tolerance on gap overclosure. Default is 0.
TOL2
is the tolerance on gap force which allows the gap to remain closed even if
small negative force.
TOL3
is the tolerance on frictional force. Default is 0.
M(1)
is your element number.
3-92
MSC.Marc Volume D: User Subroutines and Special Routines
GAPU
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
M(2)
is the internal element number.
MSUB
is the subelement number (only for MSC.Marc element type 97).
INC
is the current increment number.
NCR
is the dimension of the gap.
2 for 2-D problems.
3 for 3-D problems.
FN
is the current gap force.
Required Output:
DIR
is the array of direction cosines of the current gap direction. This can be
modified by the user.
DIST
is the current closure distance (distance that the nodes must travel to obtain
closure), which is to be defined by the user.
FF
is the frictional force limit, to be specified by the user.
In two dimensional problems, DIR, X1, and X4 have two components; otherwise, DIR,
X1, and X4 have three components.
MSC.Marc Volume D: User Subroutines and Special Routines
USELEM
3-93
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ USELEM
User-defined Element
Description
This user subroutine allows the user to calculate his own finite element stiffness or
mass matrix. This can also be used as interface with other numerical techniques. In
general, in the finite element calculation, several matrices are required; hence, for a
particular element, this user subroutine is called a multiple number of times. The calls
and the user’s requirements are defined as follows:
IFLAG=1
Return the equivalent nodal loads (F) given distributed surface or body
loads. If the ELASTIC, FOLLOW FOR parameters or the AUTO STEP,
AUTO TIME, AUTO INCREMENT options are used, these are total loads
or else incremental loads. In a heat transfer analysis, this is the total
flux vector.
IFLAG=2
Return the element tangent stiffness matrix (K). For an elastic analysis,
this is the usual stiffness. For a heat transfer matrix analysis, this is the
conductivity matrix. Also calculate the total internal forces (R). This is not
necessary in a linear elastic analysis if the LOAD COR parameter has
been turned off.
IFLAG=3
Return the mass matrix (M) for a dynamic analysis or specific heat matrix
for a heat transfer problem.
IFLAG=4
Calculate the incremental strains (DE), generalized stresses (GSIGS) and
the internal force (R). For a linear elastic solution, if only displacements
are required, the user does not need to return any values. In a heat
transfer analysis, the thermal gradient and the heat fluxes (both stored
via SIGXX) and the internal flux vector (R) need to be calculated.
IFLAG=5
Output element results if so desired.
To use this option, the USER parameter must be included to define the size of the
element stiffness matrix and other critical dimensions and the element type given on
the connectivity must be a negative number.
3-94
MSC.Marc Volume D: User Subroutines and Special Routines
USELEM
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
Format
User subroutine USELEM calls for the following headers:
*
*
*
SUBROUTINE USELEM(M,XK,XM,NNODE,NDEG,F,R,
JTYPE,DISPT,DISP,NDI,NSHEAR,IPASS,NSTATS,NGENEL,
INTEL,COORD,NCRD,IFLAG,IDSS,T,DT,ETOTA,GSIGS,DE,
GEOM,JGEOM,SIGXX,NSTRMU)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION
XK(IDSS,IDSS),XM(IDSS,IDSS),DISPT(NDEG,*),DISP(NDEG,*)
DIMENSION T(NSTATS,*),DT(NSTATS,*),COORD(NCRD,*)
DIMENSION ETOTA(NGENEL,*),GSIGS(NGENEL,*),DE(NGENEL,*)
DIMENSION F(NDEG,*),R(NDEG,*),SIGXX(NSTRMU,*),GEOM(*),
JGEOM(*)
user coding
RETURN
END
where:
Input:
M
NNODE
NDEG
JTYPE
DISPT
DISP
NDI
NSHEAR
IPASS
NSTATS
NGENEL
is the user element number.
is the number of nodes per element.
is the maximum number of degrees of freedom per node.
is the user element type (negative).
is the total nodal displacements array of this element.
In heat transfer, DISPT is the temperature array at which material
properties were last calculated.
is the incremental nodal displacements of this element.
In heat transfer, DISP is the total current nodal temperatures of
this element.
is the number of direct components of stress/internal heat flux.
is the number of shear components of stress.
In heat transfer, NSHEAR is zero.
Flag to indicate which pass for coupled analysis.
= 1 during a stress analysis pass.
= 2 during a heat transfer pass.
= 3 during a fluid pass.
= 4 during a Joule heating pass.
= 5 during a pore pressure pass.
= 6 during an electrostatic pass.
= 7 during a magnetostatic pass.
= 8 during an electromagnetic pass.
is the number of state variables.
is the number of generalized strains.
MSC.Marc Volume D: User Subroutines and Special Routines
USELEM
3-95
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
INTEL
COORD
NCRD
IFLAG
IDSS
T
DT
GEOM
JGEOM
NSTRMU
is the number of integration points.
is the original nodal coordinates array.
is the number of coordinates per node.
indicates what is to be returned by the user.
= 1 Called by OPRESS during formation of load vector.
You return F.
= 2 Called by OASEMB during formation of stiffness matrix.
You return XK,R.
= 3 Called by OASMAS during formation of mass matrix.
The user returns XM.
= 4 Called by OGETST during stress recovery.
The user returns R,GSIGS,DE,ETOTA,SIGXX for stress
analysis pass.
The user returns R, SIGXX for heat transfer pass.
= 5 Called by SCIMP during output phase.
The user prints the results.
is the size of element stiffness matrix.
is the state variables.
is the increment of state variables.
is the array of the geometric parameters.
is the array of table ids for the geometric parameters.
is the number of stresses/heat fluxes per integration points.
Required Output:
XK
XM
F
R
ETOTA
GSIGS
DE
SIGXX
is the stiffness matrix or conductivity matrix.
is the mass matrix or specific heat matrix.
is the externally applied equivalent nodal loads/nodal fluxes array.
is the internal forces/fluxes array.
is the total strain array.
Not used in heat transfer.
is the generalized stress array.
Not used in heat transfer.
is the increment of strain array.
Not used in heat transfer.
is layer stresses for shell elements and is equal to GSIGS for
continuum element.
In the heat transfer pass, SIGXX contains the thermal gradients and the
heat fluxes.
Note that the stiffness matrix is normally symmetric. If a nonsymmetric formulation
is used, the SOLVER option should be used to indicate this.
3-96
MSC.Marc Volume D: User Subroutines and Special Routines
UNEWTN
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UNEWTN
Input of Viscosity in Flow Analysis
Description
It is possible to solve Newtonian and non-Newtonian laminar incompressible steady
state fluid analyses using the R-P FLOW parameter in MSC.Marc. The UNEWTN user
subroutine is used to define the viscosity at a particular spatial location. An Eulerian
approach is then used to solve for the nodal velocities. This user subroutine can also
be used to define the nonlinear viscosity in Navier Stokes fluid analysis when the
FLUID parameter is used.
Format
User subroutine UNEWTN is written with the following headers:
SUBROUTINE UNEWTN (N,NN,V,E,NGENS,DT,DTDL)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION E(NGENS),N(2)
user coding
RETURN
END
where:
Input:
N(1)
is the user’s element number.
N(2)
is the internal element number.
NN
is the integration point number.
E
are the components of the strain rate.
NGENS
is the number of components.
DT
is the temperature at the beginning of the increment.
DTDL
is the increment of temperature.
Required Output:
V
is the viscosity to be defined here.
Note: If Herrmann elements are used, the last component of E represents a rate of change of
volumetric strain.
MSC.Marc Volume D: User Subroutines and Special Routines
URPFLO
3-97
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ URPFLO
Rigid-Plastic Flow
Description
This user subroutine allows the user to define the current yield stress as a function
of the equivalent strain rate, equivalent strain, temperature, and user-defined
state variables. This user subroutine is used in conjunction with the transient
R-P FLOW parameter.
Format
User subroutine URPFLO is written with the following headers:
SUBROUTINE URPFLO(MDUM,NN,LAYERS,MATUS,INC,NDI,NGENS,NCRD,
+NSTAT,CPTIM,TIMINC,EBAR,ERATE,DT,DTDL,STATS,DSTATS,COORD,YD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION MDUM(2), STATS(NSTAT), DSTATS(NSTAT), COORD(NCRD)
DIMENSION MATUS(2)
user coding
RETURN
END
where:
Input:
MDUM(1)
element number.
MDUM(2)
internal element/elsto number.
NN
integration point number.
LAYERS
layer number.
MATUS(1)
user material identification number.
MATUS(2)
internal material identification number.
INC
increment number.
NDI
number of direct components.
NGENS
total number of components.
NCRD
number of coordinates.
NSTAT
number of state variables excluding temperature.
CPTIM
time at beginning of increment.
TIMINC
incremental time.
DT
temperature at beginning of increment.
3-98
MSC.Marc Volume D: User Subroutines and Special Routines
URPFLO
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
DTDL
incremental temperature.
EBAR
total equivalent strain at beginning of increment.
STATS
values of state variables excluding temperature at beginning of increment.
ERATE
equivalent strain rate.
COORD
integration point coordinates.
Required Output:
YD
equivalent stress; if not calculated here, MSC.Marc finds the value of yd
from the input data.
DSTATS
incremental state variables (excluding temperature).
MSC.Marc Volume D: User Subroutines and Special Routines
UARRBO
3-99
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UARRBO
Arruda-Boyce Material Model
Description
This user subroutine allows the user to redefine the constants used in the strain
energy function. This data is normally entered through the ARRUDBOYCE model
definition option.
The form of the strain energy function is:
3
4
5
2
19
519
1
1
11
W = nkθ --- ( I 1 – 3 ) + ----------  I – 9 + ------------------2  I – 27 + ------------------3  I – 81 + ------------------------4  I – 243 + …

 1

 1

2
20N  1  1050N  1
7000N
673750N
Format
User subroutine UARRBO is written with the following headers:
SUBROUTINE UARRBO(A1,A2,T,N,NN,MATUS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION N(2),MATUS(2)
user coding
RETURN
END
where:
Input:
T
is the temperature.
N(1)
is your element number.
N(2)
is the internal element number.
NN
is the integration point number.
MATUS(1)
is the user material identifier.
MATUS(2)
is the internal material identifier.
Required Output:
A1 = nkθ
is the linear term (in the strain energy function) to be defined by the user.
A2 = N
is the number of statistical links of length l in the chain between chemical
crosslinks (in the strain energy function) to be defined by the user.
MSC.Marc Volume D: User Subroutines and Special Routines
3-100 UGENT
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UGENT
Gent Material Model
Description
This user subroutine allows the user to redefine the constants used in the strain
energy function. This data is normally entered through the ARRUDBOYCE model
definition option.
The form of the strain energy function is:

I1 – 3 
E
W = – --- ( Im – 3 ) log  1 – --------------
6
I

m – 3
Format
User subroutine UGENT is written with the following headers:
SUBROUTINE UGENT(E,AI,T,N,NN,MATUS,BUKLM)
IMPLICIT REAL *8 (A-H,O-Z)
DIMENSION N(2),MATUS(2)
user coding
RETURN
END
where:
Input:
T
is the temperature.
N(1)
is the user’s element number.
N(2)
is the internal element number.
NN
is the integration point number.
MATUS(1)
is the user’s material identifier.
MATUS(2)
is the internal material identifier.
Required Output:
E = E
is the modulus (used in the strain energy function) to be defined by the user.
AI = Im
is the maximum value of first invariant (used in the strain energy function) to
be defined by the user.
BUKLM
is the bulk modulus K (to be defined); if not defined, BULKM = 10000.*E/6
MSC.Marc Volume D: User Subroutines and Special Routines
UACOUS
3-101
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ UACOUS
Definition of Material Properties for Acoustic Analysis
Description
This user subroutine allows the user to redefine the material constants of an acoustic
medium (fluid) as a function of the frequency in an acoustic harmonic analysis. This
data is normally entered through the ACOUSTIC model definition option.
Format
User subroutine UACOUS is written with the following headers:
SUBROUTINE UACOUS(MDUM,FREQC,XKF,DRAG,RHOHT)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION MDUM(2)
user coding
RETURN
END
where:
Input:
MDUM(1)
is the user’s element number.
MDUM(2)
is the MSC.Marc element storage number.
FREQC
is the frequency in cycles per time.
Required Output:
XKF
is the fluid bulk modulus to be defined by the user.
DRAG
is the fluid volumetric drag to be defined by the user.
RHOHT
is the fluid density to be defined by the user.
MSC.Marc Volume D: User Subroutines and Special Routines
3-102 USSUBS
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
■ USSUBS
Superelements Not Generated by MSC.Marc
Description
The USSUBS user subroutine can be used to enter stiffness matrix, mass matrix,
conductivity matrix, capacity matrix, load vector, internal force vector, or output for
superelements not generated by MSC.Marc.
The number of superelements and the dimension are given via SUPER parameter
and the connectivity of the superelements is given via the SUPERINPUT model
definition option.
Format
User subroutine USSUBS is written with the following headers:
SUBROUTINE USSUBS(NLEV,NSS,IC,NODSUB,NDEG,LMI,LM,
TIME,TIMINC,INC,IPASS,
XLOAD,XDISP,XRESI,XMAT)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION LMI(NODSUB),LM(NODSUB)
DIMENSION XLOAD(NDEG,NODSUB),XDISP(NDEG,NODSUB),
*
XRESI(NDEG,NODSUB)
DIMENSION XMAT(NDEG*NODSUB,NDEG*NODSUB)
*
*
user coding
RETURN
END
where:
Input:
NLEV
is the superelement level = 1.
NSS
is the superelement number.
IC
= 1: return XLOAD (XDISP,XRESI,XMAT not filled)
= 2: return XMAT (stiffness matrix) (XLOAD,XDISP,XRESI not filled)
= 3: return XRESI or if IC is reset to -3 return XMAT, the program will
calculate XRESI=XMAT*XDISP
XLOAD,MXAT not filled
XDISP filled
= 4: output phase
XLOAD,XRESI,XMAT not filled
XDISP filled
= 5: return Xmat (mass matrix)
XLOAD,XDISP,XRESI not filled
= 6: return XMAT (damping matrix)
XLOAD,XDISP,XRESI not filled
NODSUB
is the number of nodes in the superelement.
MSC.Marc Volume D: User Subroutines and Special Routines
USSUBS
3-103
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
NDEG
is the number of degrees of freedom per node in the superelement.
LIM( )
is the node id’s of the superelement.
LM()
is the future expansion.
TIME
is the transient time at the start of the increment.
TIMINC
is the incremental time period.
INC
is the increment number.
IPASS
Flag to indicate which pass for coupled analysis.
= 1 during a stress analysis pass.
= 2 during a heat transfer pass.
= 3 during a fluid pass - not supported.
= 4 during a Joule heating pass.
= 5 during a pore pressure pass.
= 6 during an electrostatic pass.
= 7 during a magnetostatic pass.
= 8 during an electromagnetic pass.
XDISP( )
is the displacement of the superelement.
Required Output:
XLOAD( )
XRESI( )
is the external load vector on the superelement; this is total external force.
in the internal force vector for the superelement
XRESI-XMAT*XDISP (if linear)
XMAT( )
is the stiffness, mass, damping matrix of the superelement.
3-104
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 3 User-defined Anisotropy and Constitutive Relations User Subroutines
References
1. Simo, J. C. and Taylor, R. L., “Quasi incompressible finite elasticity in
principal stretches. Continuum basis and numerical algorithms”, Comp.
Meth. App. Mech. Engrg., 85, pp. 273-310, 1991.
2. Simo, J. C., “Algorithms for static and dynamic multiplicative plasticity
that preserve the classical return mapping schemes of the infinitesimal
theory”, Comp. Meth. App. Mech. Engrg., 99, pp. 61-112, 1992.
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines List
CHAPTER
4
Viscoplasticity and Generalized
Plasticity User Subroutines List
User Subroutine
Page
.........................................................
4-13
CRPLAW
........................................................
4-7
NASSOC
........................................................
4-9
.........................................................
4-14
........................................................
........................................................
4-5
4-3
...........................................................
4-12
ASSOC
SINCER
UCRPLW
UVSCPL .
YIEL .
ZERO .
..........................................................
4-11
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
CHAPTER
4
Viscoplasticity and Generalized
Plasticity User Subroutines
The user subroutines in this chapter are used to describe viscoplastic materials or a
user-defined general plasticity model. There are two numeric procedures for
viscoplasticity: implicit and explicit. This is activated on the CREEP parameter. The
implicit method is preferred. The generalized plasticity allows the user to develop a
yield surface, equivalent stress, and flow rate that is different from one provided by
MSC.Marc. Table 4-1 summarizes these routines and indicates what parameters or
model definition options are required to invoke the user subroutine.
MSC.Marc Volume D: User Subroutines and Special Routines
4-2
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
Table 4-1
Viscoplasticity and Generalized Plasticity User Subroutine Requirements
User
Subroutine
Required Parameters or
Model Definition Options
Purpose
ASSOC
ISOTROPIC – GEN-PLAST
Definition of the direction of incremental plastic strain in
generalized plasticity model.
CRPLAW
CREEP
Definition of inelastic strain rate for explicit
viscoplasticity model.
NASSOC
CREEP
Definition of direction of incremental viscoplastic strain
for explicit viscoplasticity model.
SINCER
ISOTROPIC – GEN-PLAST
Definition of fraction of increment which is elastic for
generalized plasticity model.
UCRPLW
CREEP
Definition of complex relationships for the factors
in the power law expression for the creep strain rate
UVSCPL
CREEP
ISOTROPIC – VISCO-PLASTIC
Definition of inelastic strain rate for implicit
viscoplastic model.
YIEL
ISOTROPIC,
ORTHOTROPIC or
ANISOTROPIC
Definition of yield stress.
ZERO
ISOTROPIC,
ORTHOTROPIC or
ANISOTROPIC
Definition of equivalent stress.
MSC.Marc Volume D: User Subroutines and Special Routines
UVSCPL
4-3
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
■ UVSCPL
Definition of the Inelastic Strain Rate
Description
This user subroutine is used for computing the inelastic strain increment for an
elastic-viscoplastic material. This routine allows very general material laws to be
entered. The user must define the inelastic strain and the stress increment.
This user subroutine is activated when the implicit creep procedure is used, and VISCO
PLAS material is selected on the ISOTROPIC or ORTHOTROPIC option.
Format
User subroutine UVSCPL is written with the following headers:
SUBROUTINE UVSCPL(YOUNG,POISS,SHEAR,B,USTRRT,ETOT,E,THMSTI,
1 EELAS,S,SINC,GF,EPL,AVGINE,EQCRP,EQCPNC,YD,YD1,VSCPAR,DT,
2 DTDL,CPTIM,TIMINC,XINTP,NGENS,M,NN,KC,MATUS,NDI,NSHEAR,NCRD,
3 IANISO,NSTATS,INC,NCYCLE,LOVL,NVSPLM)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION POISS(3,2),YOUNG(3,2),B(NGENS,NGENS),
1 USTRRT(NGENS),ETOT(NGENS),E(NGENS),THMSTI(NGENS),
2 EELAS(NGENS),S(NGENS),SINC(NGENS),GF(NGENS),EPL(NGENS),
3 AVGINE(NGENS),DT(NSTATS),DTDL(NSTATS),XINTP(NCRD),
SHEAR(3,2),VSCPAR(NVSPLM),MATUS(2)
user coding
RETURN
END
where:
Input:
YOUNG
POISS
SHEAR
B
ETOT
E
THMSTI
EELAS
S
EPL
is the Young’s modulus.
is the Poisson’s modulus.
is the shear modulus.
is the tangent elastic matrix.
is the accumulated total strain at beginning of increment.
is the current strain increment.
is the thermal strain increment.
is the accumulated elastic strain at beginning of increment.
is the accumulated stress at beginning of increment.
is the accumulated inelastic strain at beginning of increment.
4-4
MSC.Marc Volume D: User Subroutines and Special Routines
UVSCPL
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
EQRCP
EQCPNC
YD
YDL
VSCPAR
DT
DTDL
CPTIM
TIMINC
XINTP
NGENS
M
NN
KC
MATUS(1)
MATUS(2)
NDI
NSHEAR
NCRD
IANISO
NSTATS
INC
NCYCLE
LOVL
NVSPLM
is the equivalent inelastic strain at beginning of increment.
is the increment equivalent inelastic strain.
is the flow stress at temperature t.
is the flow stress at temperature t + dt.
is the viscoplastic data read off isotropic or orthotropic option.
is the state variables at beginning of increment.
is the incremental state variables.
is the elapsed time at beginning of increment.
is the time increment.
is the integration point coordinates.
is the number of strain components.
is the element number.
is the integration point number.
is the layer number.
is the user material identifier.
is the internal material identifier.
is the number of direct components.
is the number of shear components.
is the number of coordinate directions.
is the flag to indicate nonisotropic elasticity.
is the number of state variables.
is the increment number.
is the cycle number.
= 4 during stiffness formation.
= 6 during residual calculation.
is the number of viscoplastic data read from input.
Required Output
USTRRT
SINC
GF
AVGINE
is the inelastic strain rate.
is the stress increment.
is the change in stress due to change in elastic material properties
associated with DT.
is the inelastic strain increment.
Note: To ensure convergence, it should be noted that the returned values of these quantities must
be mutually compatible; that is, they simultaneously must satisfy within tolerance:
1. SINC = B*(E - AVGINE - THMSTI) + GF
2. the creep law employed.
The tolerance should be at least one order of magnitude smaller than the global
Newton-Raphson tolerance. The values of USTRRT, AVGINE, and SINC are
expected to be returned from the routine for both LOVL=4 and LOVL=6.
MSC.Marc Volume D: User Subroutines and Special Routines
UCRPLW (Viscoplastic)
4-5
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
■ UCRPLW (Viscoplastic)
Input of Creep Factors for Power Law Implicit Creep
Description
The UCRPLW user subroutine can be used for defining complex relationships for the
factors in the power law expression for the creep strain rate. This user subroutine is
automatically called when the implicit creep option is used in MSC.Marc. Note that
the latter is implemented for isotropic materials exhibiting power law creep. For more
complex implicit creep behavior, use the UVSCPL user subroutine.
Format
User subroutine UCRPLW is written with the following headers:
*
C
SUBROUTINE UCRPLW(CPA,CFT,CFE,CFTI,CFSTRE,CPTIM,TIMINC,
EQCP,DT,DTDL,MDUM,NN,KC,MATUS)
CREEP STRAIN RATE = CPA*CFT*CFE*CFTI*(STRESS**CFSTRE)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION MDUM(*),MATUS(2)
user coding
RETURN
END
where:
Input:
CPTIM
time at the beginning of the increment
TIMINC
time Increment
EQCP
creep strain at the beginning of the increment
DT
temperature at the beginning of the increment
DTDL
incremental temperature
MDUM(1)
user element number
MDUM(2)
internal element number
NN
integration point number
KC
layer number
MATUS(1)
user material identifier.
MATUS(2)
internal material identifier.
4-6
MSC.Marc Volume D: User Subroutines and Special Routines
UCRPLW (Viscoplastic)
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
Required Output
CPA
creep constant
CFT
temperature factor
CFE
creep strain factor
CFTI
time factor
CFSTRE
stress exponent
MSC.Marc Volume D: User Subroutines and Special Routines
CRPLAW (Viscoplastic)
4-7
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
■ CRPLAW (Viscoplastic)
Input of Explicit Viscoplastic Strain Rate Law
Description
The CRPLAW user subroutine can also be used for calculating the viscoplastic
behavior. All the creep quantities are treated as viscoplastic strain quantities when the
appropriate flag is set on the CREEP parameter.
The basic information on the use of this subroutine can be found in Chapter 3 of this
manual. Additionally, the user can use common block VISCPL.
The variables in common block VISCPL are:
YD
is the equivalent stress at first yield.
YD1
is the equivalent yield stress including current work hardening and
temperature effects.
YD2
is the equivalent stress for ORNL tenth cycle yield.
YD21
is the equivalent stress including current work hardening and temperature
effects for ORNL tenth cycle yield.
YDZER
is the equivalent yield stress including Mohr-Coulomb terms (defaults to YD1).
Example
The following is a simple viscoplastic strain rate law that depends on the differences
between the current stress state and the static yield stress, raised to the nth power.
(Note that T(1), the current equivalent stress also includes Mohr-Coulomb terms
when the option is flagged.)
·
ε = c ( σ – σy )n
where:
σ
is the current total equivalent stress.
σy
is the current equivalent yield stress including workhardening, temperature
effects and Mohr-Coulomb terms.
4-8
MSC.Marc Volume D: User Subroutines and Special Routines
CRPLAW (Viscoplastic)
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
n
is the index of the power law.
c
is the constant that depends on the index n. Here the strain rate equation is
made. dimensionless in stress by setting
c = 0.01 ⁄ σ n yo where σ yo is the
equivalent stress at first yield.
This is programmed as follows; for n=2
SUBROUTINE CRPLAW(EQCP,EQCPNC,STR,CRPE,T,DT,TIMINC,CPTIM,M,
+NN,KC,MATUS,NDI,NSHEAR)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION T(1),DT(1),STR(1),CRPE(1),MATUS(2)
C = 0.01/(YD*YD)
S = T(1) - YDZER
EQCPNC = 0.0
IF(S.LT.0.0)RETURN
S=S*S
EQCPNC=C*S*TIMINC
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
NASSOC
4-9
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
■ NASSOC
Input of a Nonassociated Flow Law
Description
The NASSOC user subroutine allows the user to calculate a strain increment with a
flow rule differing from the normality rule of plasticity, which is the default used by
MSC.Marc. This must be activated by the CREEP parameter.
Format
User subroutine NASSOC is written with the following headers:
SUBROUTINE NASSOC(EQCPNC,STOT,SINC,E,
1 AMOHR,NGENS,NDI,T,TZERO)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION STOT(NGENS),SINC(NGENS),E(NGENS),T(2)
user coding
RETURN
END
where:
Input:
EQCPNC
is the increment of the equivalent viscoplastic strain.
STOT
is the current stress array.
E(I)
is the Ith viscoplastic strain increment. It is later set equal to
EQCPNC*SINC(I) in MSC.Marc; thus, it is not set in this subroutine.
AMOHR
is the Mohr-Coulomb parameter entered in the ISOTROPIC option
(third field).
NGENS
is the number of stresses or strains.
NDI
is the number of direct stresses.
T(1)
is the current equivalent stress.
T(2)
is the current mean hydrostatic stress.
TZERO
is the equivalent stress including Mohr-Coulomb terms, temperature and
work hardening effects.
4-10
MSC.Marc Volume D: User Subroutines and Special Routines
NASSOC
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
Required Output
is the dimensionless flow directions
SINC
∂σ
------ . The current values in this
∂σ
subroutine are associated with the yield criterion used. The user are free to
vary the flow rule in NASSOC by changing SINC.
It is often useful to have the information regarding the yield surface. This can be
obtained from common block VISCPL
yd, yd1, yd2, yd21, ydzer
where:
YD
is the equivalent stress at first yield.
YD1
is the equivalent yield stress including current work hardening and
temperature effects.
YD2
is the equivalent stress for ORNL tenth cycle yield.
YD21
is the equivalent stress including current work hardening and temperature
effects for ORNL tenth cycle yield.
YDZER
is the equivalent yield stress including Mohr-Coulomb terms
(defaults to YD1).
Example
The following example calculates a nonassociated flow rule for a Mohr-Coulomb
problem. The default flow rule is the one associated with the von Mises yield criterion.
SUBROUTINE NASSOC(EQCPNC,STOT,SINC,E,
+ AMOHR,NGENS,NDI,T,TZERO)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION STOT(1),SINC(1),E(1),T(1)
NSHEAR=NGENS-NDI
DO 1 I=1,NDI
1 SINC(I)=0.5*3.0*(STOT(1)-T(2))
TR=1./TZERO
DO 2 I=1,NDI
2 SINC(I)=SINC(I)*TR
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
ZERO
4-11
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
■ ZERO
Calculation of Equivalent Stress
Description
The ZERO user subroutine is used to calculate the equivalent yield stress based on the
current total stresses. The ZERO user subroutine in MSC.Marc applies the von Mises
yield criterion as a default. The user can substitute another yield criterion by writing
a new ZERO user subroutine. Mohr-Coulomb models specified in the ISOTROPIC
option should not be used when ZERO user subroutine is used because of the danger
of taking into account the effects of hydrostatic pressure twice.
Format
User subroutine ZERO is written with the following headers:
REAL*8 FUNCTION ZERO(NDI,NSHEAR,T,IORT,IANISO,YRDIR,YRSHR,
AMM,AO)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION T(1),YRDIR(3),YRSHR(3),AMM(3)
user coding
RETURN
END
where:
Input:
NDI
is the number of direct components of stress.
NSHEAR
is the number of shear components of stress.
T(I)
is the Ith component of stress.
IORT
is the flag indicating if curvilinear coordinates are used.
This is 1 for element types 4, 8, and 24.
IANISO
is the flag indicating if anisotropy is used.
YRDIR
are the components for Hill’s anisotropic plasticity.
YRSHR
are the shear components for Hill’s anisotropic plasticity.
AMM
is the metric if curvilinear coordinates are used.
AO
is the metric scale factor if curvilinear coordinates are used.
Required Output
ZERO
is the equivalent yield stress.
4-12
MSC.Marc Volume D: User Subroutines and Special Routines
YIEL
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
■ YIEL
Calculation of Current Yield
Description
The YIEL user subroutine is used to define the yield stress based on the current work
hardening and other state variables.
Format
User subroutine YIEL is written with the following headers:
REAL*8 FUNCTION YIEL(M,NN,KC,YIELD,IFIRST,DT,EPLAS,ERATE,MATS,
JPROPS)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
M
is the element numbers.
NN
is the integration point number.
KC
is the layer number.
YIELD
is the yield stress entered as data in the ISOTROPIC option.
IFIRST
=1 Calculate yield stress.
=2 Calculate 10th cycle yield stress (ORNL only).
=3 Calculate 100th cycle yield stress (ORNL only).
DT
is the current temperature
EPLAS
is the total equivalent plastic strain. Note that this is implied by the yield
criterion used in the ZERO user subroutine (or the Mohr-Coulomb yield
criterion, if that is used).
ERATE
is the equivalent plastic strain rate. Not available for viscoplasticity.
MATS
is the material id.
JPROPS
is the table id associated with the yield.
Required Output
YIEL
is the current magnitude of the yield stress.
MSC.Marc Volume D: User Subroutines and Special Routines
ASSOC
4-13
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
■ ASSOC
Input of Associated Flow Law
Description
When used in conjunction with the generalized plasticity option (defined in the
ISOTROPIC option), the ASSOC user subroutine can be used to define the flow
direction for plasticity. The default is the associated flow law with the von Mises (J2)
yield surface.
Format
User subroutine ASSOC is written with the following headers:
SUBROUTINE ASSOC(STOT,SINC,SC,T,NGENS,NDI,NSHEAR,N,NN,KC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION STOT(NGENS),SINC(NGENS)
user coding
RETURN
END
where:
Input:
STOT
is the current stress array.
SC
is the trace of stress tensor (three times hydrostatic pressure).
T
is the equivalent stress.
NGENS
is the number of stress components.
NDI
is the number of shear stress components.
N
is the element number.
NN
is the integration point number.
KC
is the layer number for shells or beams.
Required Output
SINC
∂σ
∂σ
is the flow direction ------ ⋅ σ to be defined by the user, where
equivalent stress T.
σ is the
4-14
MSC.Marc Volume D: User Subroutines and Special Routines
SINCER
Chapter 4 Viscoplasticity and Generalized Plasticity User Subroutines
■ SINCER
User Subroutine for Improving Accuracy
Description
The SINCER user subroutine can be used to define how much an “elastic” stress
increment exceeds the yield stress. This allows MSC.Marc to accurately take large
increments such that the material goes from elastic to elastic-plastic. The user returns
the value of FPLAS, which is the fraction of the stress increment beyond the yield
surface. This routine should only be used if a yield surface other than the von Mises
(J2) is used in conjunction with the generalized plasticity option (defined in the
ISOTROPIC option).
Format
User subroutine SINCER is written with the following headers:
SUBROUTINE SINCER(FPLAS,SINC,STOT,NGENS)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION SINC(NGENS), STOT(NGENS)
user coding
RETURN
END
where:
Input:
SINC
is the estimated elastic increment of stress.
STOT
is the stress at the beginning of the increment.
NGENS
is the number of stress components.
Required Output
FPLAS
is the fraction of stress increment beyond the yield stress to be defined
the user.
Chapter 5 Viscoelasticity User Subroutines List
CHAPTER
5
Viscoelasticity User
Subroutines List
User Subroutine
CRPVIS
..........................................................
Page
5-3
HOOKVI .
.........................................................
5-8
TRSFAC .
.........................................................
5-6
Chapter 5 Viscoelasticity User Subroutines
CHAPTER
5
Viscoelasticity User Subroutines
This chapter describes user subroutines used for viscoelastic analysis. There are two
procedures available. The explicit procedure uses the CRPVIS user subroutine to
describe a generalized Kelvin model. The implicit procedure uses a hereditary integral
approach and is the preferred choice. Table 5-1 summarizes these routines and
indicates what parameters or model definition options are required to invoke the
user subroutine.
MSC.Marc Volume D: User Subroutines and Special Routines
5-2
Chapter 5 Viscoelasticity User Subroutines
Table 5-1
User
Subroutine
Viscoplasticity User Subroutines Requirements
Required Parameters or
Model Definition Options
Purpose
CRPVIS
VISCO ELAS
Definition of generalized Kelvin model using
explicit procedure.
HOOKVI
VISCELORTH
Definition of anisotropic viscoelastic material law for a
particular relaxation time.
TRSFAC
VISCELPROP or
VISCELORTH or
VISCELMOON or
VISCELOGDEN and
SHIFT FUNCTION
Definition of shift function for thermo-rheologically
simple material.
MSC.Marc Volume D: User Subroutines and Special Routines
CRPVIS
5-3
Chapter 5 Viscoelasticity User Subroutines
■ CRPVIS
Viscoelasticity – Generalized Kelvin Material Behavior
Description
In addition to the nonlinear Maxwell type model allowed in the CREEP option, a
general Kelvin model can be included by requesting it on the CREEP parameter. In this
case, MSC.Marc assumes an additional creep strain ε ijK , governed by
d
K
----- ε ijK = A ijkl S kl – B ijkl ε kl
dt
where:
[A] and [B]
s ij
are defined by the user in the user subroutine described below,
are the deviatoric stress components s ij
σ kk
= σ ij – δ ij -------3
and the total strain is: ε ij = ε ije + ε ijp + ε ijc + ε ijK + ε ijth
where:
ε ijth
are the thermal strain components.
ε ije
are the elastic strain components (instantaneous response).
ε ijp
are the plastic strain components.
ε ijc
are the creep strains defined via CRPLAW and VSWELL user subroutines and
using the CREEP option.
ε ijK
are the Kelvin model strain components as defined above.
5-4
MSC.Marc Volume D: User Subroutines and Special Routines
CRPVIS
Chapter 5 Viscoelasticity User Subroutines
Format
User subroutine CRPVIS is written with the following headers:
SUBROUTINE CRPVIS(CRPR,TSIG,SINC,AE,BE,NGENS,
1 DT,DTDL,N,NN,KC,MATUS,NDI,NSHEAR,TIME,TIMINC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION CRPR(1),TSIG(1),SINC(1),AE(NGENS,NGENS),
1 BE(NGENS,NGENS),DT(1),DTDL(1),N(2),MATUS(2)
user coding
RETURN
END
where:
Input:
CRPR
are the Kelvin creep strain components.
TSIG(1)
is the second invariant of the deviatoric stress =
TSIG(2)
is the hydrostatic stress =
SINC
are the deviatoric stress components
NGENS
is the number of stress (strain) components.
DT
are the total state variables at this point (temperature first).
DTDL
are the increments of state variables at this point during this step of the
solution.
N(1)
is the user’s element number.
N(2)
is the internal element number.
NN
is the integration point number.
KC
is the layer number.
MATUS(1)
is the user’s material identifier.
MATUS(2)
is the internal material identifier.
NDI
is the number of direct components.
NSHEAR
is the number of shear components.
TIME
is the total time.
TIMINC
is the time increment.
 3--- s s 
 2 ij ij
1⁄2
.
1
--- σ kk .
3
( s ij ) .
MSC.Marc Volume D: User Subroutines and Special Routines
CRPVIS
5-5
Chapter 5 Viscoelasticity User Subroutines
Required Output:
AE
is the matrix
A ijkl above, to be defined here by the user.
BE
is the matrix
B ijkl above, to be defined here by the user.
Only AE and BE are to be defined by the user – the other variables are provided to
assist in calculations, for example when a nonlinear Kelvin model is used.
This user subroutine is called at each integration point of each element when
necessary, when the VISCO ELAS parameter is present. Note that the use of the VISCO
ELAS parameter also requires the use of the CREEP option in the model definition data
as well. The CREEP option is required to set the tolerance control for the maximum
strain in any increment. In viscoelastic two-dimensional analysis, the stress does not
change appreciably so that all time steps are controlled by the maximum increment in
strain. The recommended and default value of this strain increment is 0.005 of the
total maximum strain. Note that this value is ten times smaller than the default value
for normal creep problems. Because of the use of the CREEP option, Maxwell models
can be included in series with the Kelvin model. The ordering of stress and strain
components is given in MSC.Marc Volume B: Element Library for each element type.
When used with doubly curved shell elements (shell elements 4, 8, and 24), the above
relation is written in a mixed formulation:
d
----- (ε α β K) = A α β γ δ S γ δ - B α β γ δ ε γd Kα,β etc. = 1,2
dt
with two shear components stored, ε 1 2 , then ε 2 1 .
5-6
MSC.Marc Volume D: User Subroutines and Special Routines
TRSFAC
Chapter 5 Viscoelasticity User Subroutines
■ TRSFAC
Define a Shift Function for Thermo-Rheologically Simple
(T.R.S.) Material Behavior
Description
This user subroutine allows the user to define the shift function for the
relaxation function.
A description of T.R.S. material behavior is given in MSC.Marc Volume A: User
Information. The user is reminded that this option is only available in conjunction
with the hereditary integral form of viscoelastic constitutive representation. The use
of this user subroutine to define a shift function for a particular viscoelastic material
group is indicated by inserting a negative value in the first field of block 2 in the SHIFT
FUNCTION model definition option.
MSC.Marc proceeds to compute the increment of pseudo- or reduced time ∆ε (x, t)
according to the relationship:
∆ε ( x, t ) =
( t + ∆t )
∫t
10 B [ T ( x, t ) ] dt 1
1
where the shift factor, B, is a function of the spatially and time dependent temperature,
T(x, t). A five-point Simpson’s rule is used to numerically integrate this expression.
In this subroutine, the user is expected to define the shift function, φ, which is the
logarithm of the shift factor: that is,
[ φ ( x, t ) ] = – Log 10 { B [ T ( x, t ) ] }
The user subroutine is called five times at each point. These points can be the
centroids of the elements or each integrating point if the ALL POINTS parameter has
been invoked.
MSC.Marc Volume D: User Subroutines and Special Routines
TRSFAC
5-7
Chapter 5 Viscoelasticity User Subroutines
Format
User subroutine TRSFAC is written with the following headers:
SUBROUTINE TRSFAC(SHFTLG,MATV,NSHFT,N,NN,KC,DT,DTDL,TGLASS,
*CPTIM,HXITOT,TIMINC,TINT)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DT(1),DTDL(1),N(2)
user coding
RETURN
END
where:
The following parameters are passed into this user subroutine and must not
be redefined:
Input:
MATV
is the viscoelastic material group identifier or number associated with the
point, x, currently being considered.
NSHFT
is the negative number associated with the particular user-defined shift
function for the viscoelastic material group, MATV. This number was
specified in the first field of the second data line in the SHIFT FUNCTION
model definition option.
N(1)
is the user’s element number.
N(2)
is the internal element number.
NN
is the current integrating point number (or centroidal point if the ALL POINTS
parameter is not used).
KC
is the current layer or beam section number if a shell or beam element is
being considered.
DT
is the total temperature at this point corresponding to the beginning of the
current increment.
DTDL
is the current incremental change in temperature for this point.
TGLASS
is the reference or glassy transition temperature used in defining the
shift function.
CPTIM
is the total creep or viscoelastic time up to the beginning of this increment.
HXITOT
is the total pseudo- or reduced-time at this point, corresponding to the
beginning of the increment.
TIMINC
is the increment of real time.
TINT
is a linearly interpolated value of the total temperature at one of the five
integrating stations between the beginning and end of the increment.
This is the variable which should be used in computing the value of the
shift function.
Required Output:
SHFTLG
is the logarithm of the shift factor, φ, which must be defined by the user.
5-8
MSC.Marc Volume D: User Subroutines and Special Routines
HOOKVI
Chapter 5 Viscoelasticity User Subroutines
■ HOOKVI
User-defined Anisotropic Viscoelasticity
Description
The user can specify the time dependent properties of an orthotropic material through
the VISCELORTH model definition option. The user can then modify this data by use
of the HOOKVI user subroutine which is automatically called for every material
defined in that option.
Format
User subroutine HOOKVI is called with the following header codes:
SUBROUTINE HOOKVI (M,NN,KC,ITERM,B,DT,DTDL,E,PR,G)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION B(6,6),DT(1),DTDL(1),E(3),PR(3),G(3),M(2)
user coding
RETURN
END
where:
Input:
M(1)
is the user’s element number.
M(2)
is the internal element number.
NN
is the integration point number.
KC
is the layer number.
ITERM
is the viscoelastic series number.
DT
is the current temperature.
DTDL
is the current increment in temperature.
E
is vector of time dependent Young’s moduli input in the
VISCELORTH option.
PR
is the vector of time dependent Poisson’s ratios input in the
VISCELORTH option.
G
is the vector of time dependent shear moduli given in the
VISCELORTH option.
Required Output:
B
is the user-defined 6 x 6 matrix of viscoelastic time dependent constants for
this element and series number.
Chapter 6 Geometry Modifications User Subroutines List
CHAPTER
6
Geometry Modifications User
Subroutines List
User Subroutine
Page
MAP2D.
..........................................................
REBAR.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-10
SSTRAN.
6-5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-21
UACTIVE . .
UACTUAT. .
UADAP . . . .
UADAP2 . . .
UADAPBOX
UCOORD . .
UFCONN . .
.......................................................
.......................................................
.......................................................
.......................................................
.......................................................
.......................................................
.......................................................
6-9
6-23
6-15
6-16
6-17
6-14
6-4
MSC.Marc Volume D: User Subroutines and Special Routines
6-ii
Chapter 6 Geometry Modifications User Subroutines List
User Subroutine
UFRORD . . .
UFXORD . . .
UPNOD . . . .
URCONN . . .
USHELL . . . .
USIZEOUTL .
USPLIT . . . .
UTHICK . . . .
UTRANS . . .
......................................................
......................................................
......................................................
......................................................
......................................................
......................................................
......................................................
......................................................
......................................................
Page
6-11
6-3
6-7
6-12
6-20
6-6
6-13
6-22
6-19
Chapter 6 Geometry Modifications User Subroutines
CHAPTER
6
Geometry Modifications
User Subroutines
The user subroutines described in this section are provided to allow the user to define
the initial geometry of the finite element mesh, or to change the mesh due to rezoning
or rigid plastic analyses. Often these user subroutines are used to customize already
existing meshes. The UTRANS user subroutine is a powerful way to provide
transformations to the degrees of freedom of a node. Table 6-1 summarizes these
routines and indicates what parameters or model definition options are required to
invoke the user subroutine.
MSC.Marc Volume D: User Subroutines and Special Routines
6-2
Chapter 6 Geometry Modifications User Subroutines
Table 6-1
User
Subroutine
Geometry Modifications User Subroutines Requirements
Required Parameters or
Model Definition Options
Purpose
MAP2D
MESH2D
MAPPER
Define the coordinates of key boundary nodes for
mesh generation.
REBAR
ELEMENTS
(rebar element types)
Define the orientation and effective thickness of
the elements.
SSTRAN
SUBSTRUCTURE
Define the transformation matrix applied to
a superelement.
UACTIVE
Activate or deactivate elements.
UACTUAT
GEOMETRY
Define the length of the actuator element.
UADAP
ADAPTIVE (parameter)
Define a user-defined error criterion for
ADAPTIVE (model definition option) adaptive meshing.
UADAP2
ADAPTIVE (parameter)
Define unrefinement for adaptive meshing.
ADAPTIVE (model definition option)
UADAPBOX
ADAPTIVE (parameter)
User-definer box for adaptivity.
ADAPTIVE (model definition option)
UCOORD
ADAPTIVE (parameter)
Describe of the location of newly created nodes.
ADAPTIVE (model definition option)
UFCONN
UFCONN
Modify the connectivity of an element.
UFRORD
REZONING
REZONE
UFRORD
Modify the coordinates of a node during rezoning.
UFXORD
UFXORD
Modify the initial nodal coordinates.
UPNOD
R-P FLOW
Update the nodal coordinates in a rigid plastic analysis
using the Eularian procedure.
URCONN
UFCONN
Modify the connectivity of an element during rezoning.
USHELL
GEOMETRY
Define the integration point thickness for shell elements.
USIZEOUTL
ADAPT GLOBAL
Define refinement boxes with different element edge
length on the 2-D outlines for remeshing.
USPLIT
ADAPT GLOBAL
Define where to split a continuous deformable body into
two separate parts.
UTHICK
NODAL THICKNESS
Define the initial thickness at the nodes for
shell elements.
UTRANS
UTRANFORM
Define a transformation to be applied to the degrees of
freedom at a node.
MSC.Marc Volume D: User Subroutines and Special Routines
UFXORD
6-3
Chapter 6 Geometry Modifications User Subroutines
■ UFXORD
Coordinate Generation or Modification
Description
The UFXORD user subroutine can be used to modify (or expand) coordinates input
through use of the COORDINATES option, or as an internal coordinate generator. The
user must input the UFXORD model definition option, followed by a block giving the
nodes for which UFXORD is used. MSC.Marc calls UFXORD for each node in the list,
so that the coordinates of that node can be modified or generated. The UFXORD option
can be repeated as many times as necessary.
Format
User subroutine UFXORD is written with the following headers:
SUBROUTINE UFXORD (XORD, NCRD, N)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XORD (NCRD)
user coding
RETURN
END
where:
Input:
NCRD
is the number of coordinates per node.
N
is the node number.
Required Output:
XORD
is the array of coordinates in the Nth node and is passed in containing
coordinates previously generated at the Nth node by COORDINATES, FXORD
or UFXORD options.
This user subroutine is most commonly used with shell or beam elements (for
example, elements 4, 8, 13, 15) where the full coordinate set is usually generated on
the basis of reduced set of coordinates. See, for example, the description of the FXORD
option in MSC.Marc Volume A: User Information. The user can also use this routine
to generate special coordinate systems (for example, cylindrical or spherical) or to
convert from special coordinate systems to a rectangular system.
6-4
MSC.Marc Volume D: User Subroutines and Special Routines
UFCONN
Chapter 6 Geometry Modifications User Subroutines
■ UFCONN
Connectivity Generation or Modification
Description
The UFCONN user subroutine can be used to modify (or expand) input given through
use of the CONNECTIVITY option, or as an internal connectivity generator. The user
must input the UFCONN model definition option, followed by a block giving the
elements for which UFCONN is used. MSC.Marc calls UFCONN for each element in
the series, so that the connectivity of that element can be modified or generated. The
UFCONN option can be repeated as many times as necessary.
Format
User subroutine UFCONN is written with the following headers:
SUBROUTINE UFCONN(J,ITYPE,LM,NNODMX)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION LM(1)
user coding
RETURN
END
where:
Input:
J
is the element number.
ITYPE
is the element type.
LM
is the array of nodes making up the element.
NNODMX
is the maximum number of nodes in an element.
Required Output:
ITYPE
is the element type.
LM
is the array of nodes making up the element.
LM is passed in containing the connectivity of the Jth element already generated by
previous CONNECTIVITY, UFCONN, or other generators. Similarly, ITYPE is the
element type if previously defined. The user can modify or define ITYPE or LM in this
routine. Note there is no checking to determine if ITYPE has been defined on the
SIZING or ELEMENTS parameter, or if node numbers are in the range
1 ≤ N ≤ NUMNP .
MSC.Marc Volume D: User Subroutines and Special Routines
MAP2D
6-5
Chapter 6 Geometry Modifications User Subroutines
■ MAP2D
Boundary Node Coordinates Modification in Mesh2D
Description
The MAP2D user subroutine can be used to modify coordinates input for the boundary
nodes in MESH2D by the BOUNDARY option. The user must input the MAPPER option
as part of the two-dimensional mesh generation. MSC.Marc calls MAP2D once, so that
the coordinates of all the boundary nodes can be modified or generated.
Format
User subroutine MAP2D is written with the following headers:
SUBROUTINE MAP2D(NNO,X,Y)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION X(NNO),Y(NNO)
user coding
RETURN
END
where:
Input:
NNO
is the number of boundary nodes.
Required Output:
X and Y
are the user-defined coordinates of the boundary nodes.
6-6
MSC.Marc Volume D: User Subroutines and Special Routines
USIZEOUTL
Chapter 6 Geometry Modifications User Subroutines
■ USIZEOUTL
Local Refinement Definition for 2-D Remeshing with
Advancing Front Mesher
C-44
Description
This user subroutine allows users to define refinement boxes with different element
edge length on the 2-D outlines for remeshing. The position of the refinement box
can be attached to the current reference center of any rigid body. Therefore, if the
body is moving, the box can move along with it. The position of the refinement box
can be attached to a nodal position as long as the node number does not change
during the analysis.
Format
User subroutine USIZEOUTL is written with the following header lines:
&
SUBROUTINE USIZEOUTL(NBODY,IDIERE,XCENT,YCENT,INC,CPTIM,
ELLEN,ESIZE,XYZ,NUMOUT)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION ESIZE(*),XYZ(2,*),XCENT(NBODY),YCENT(NBODY)
DIMENSION POS(5)
user coding
RETURN
END
where:
Input:
NBODY
is the number of contact bodies (= 0, if there is no contact).
IDIERE
is the current body number for remeshing.
XCENT
is the x reference center of rigid contact bodies.
YCENT
is the y reference center of rigid contact bodies.
INC
is the current increment number.
CPTIM
is the current analysis time.
ELLEN
is the input element length for remeshing.
XZY
is the outline point coordinates.
NUMOUT
is the number of the outline points.
Required Output:
ESIZE
is the edge length array on the outline.
MSC.Marc Volume D: User Subroutines and Special Routines
UPNOD
6-7
Chapter 6 Geometry Modifications User Subroutines
■ UPNOD
Update Nodal Positions in Flow Solutions
Description
This user subroutine is used in conjunction with Eulerian flow solutions (for example,
R-P FLOW parameter) to update the mesh after a velocity field has been found. The
user can access the velocity field and re-define the nodal coordinates. The user
subroutine is called in a loop over all the nodes in the mesh at the end of convergent
step of the flow calculation. This user subroutine should not be used in conjunction
with the CONTACT option.
Format
User subroutine UPNOD is written with the following headers:
SUBROUTINE UPNOD (XORD,VEL,NCRD,NDEG,NODE)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSIONAL XORD (NCRD), VEL(NDEG)
user coding
RETURN
END
where:
Input:
VEL
is the array of current velocities at this node.
NCRD
is the size of the XORD array (number of coordinates per node).
NDEG
is the size of the VEL array (number of velocity components per node).
NODE
is the node number.
Required Output:
XORD
is the array of coordinates at this node, to be redefined in this routine
as required.
6-8
MSC.Marc Volume D: User Subroutines and Special Routines
UPNOD
Chapter 6 Geometry Modifications User Subroutines
Example
A typical user subroutine UPNOD for use with higher order elements would be:
5
SUBROUTINE UPNOD(XORD,VEL,NCRD,NODE)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XORD(NCRD),VEL(NDEG)
TIME=
DO 5 I=1,NCRD
XORD(I)=XORD(I)+VEL(I)*TIME
CONTINUE
RETURN
END
MSC.Marc Volume D: User Subroutines and Special Routines
UACTIVE
6-9
Chapter 6 Geometry Modifications User Subroutines
■ UACTIVE
Activate or Deactivate Elements
Description
The UACTIVE user subroutine can be used to either activate or deactivate elements in
the model. The user subroutine is called at the beginning of the analysis and at the end
of each increment. A deactivated element does not contribute to the load, mass,
stiffness, or internal force calculation. If an element is activated after previously being
deactivated, the user can specify if the material is to come back in its previous state or
in a modified state.
Format
User subroutine UACTIVE is written with the following headers:
SUBROUTINE UACTIVE(M,N,MODE,IRSTSTR,IRSTSTN,INC,TIME,TIMINC)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION M(2)
user coding
RETURN
END
where:
Input:
M(1)
is the element number.
M(2)
is the master element number in an adaptive analysis
NN
is the internal element number.
INC
is the increment number.
TIME
is the time at the beginning of the increment.
TIMINC
is the incremental time.
Required Output:
MODE
-1 deactivate element.
2 leave in current status.
1 activate element.
IRSTSTR
set to 1 to reset stresses to zero.
IRSTSTN
set to 1 to reset strains to zero.
6-10
MSC.Marc Volume D: User Subroutines and Special Routines
REBAR
Chapter 6 Geometry Modifications User Subroutines
■ REBAR
Input of Rebar Positions, Areas and Orientations
Description
This user subroutine is used in conjunction with the single strain rebar elements (23,
46, 47, 48, 142-148, 165-170). See the description of these elements for details of the
use of this user subroutine. Any nonzero value defined in the this subroutine
overwrites the corresponding value defined by the REBAR model definition option if
it is used with this user subroutine.
Format
User subroutine REBAR is written with the following headers:
SUBROUTINE REBAR (N,NN,T,PR,TR,A)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION A(3),NN(3)
user coding
RETURN
END
where:
Input:
N
is the element number.
NN(1)
is the integration point number.
NN(2)
is the layer number.
NN(3)
is the integration point number in this layer.
T,PR,TR,A
are to be defined by the user.
Required Output:
T
is the nominal size in thickness direction.
PR
is the relative position of rebar layer with respect to T.
MSC.Marc uses the ratio PR/T to position the rebar layer in the
thickness direction.
TR
is the equivalent thickness of rebar.
A
is the direction cosines of the rebar.
Note: Three entries are to be defined in A in all cases.
MSC.Marc Volume D: User Subroutines and Special Routines
UFRORD
6-11
Chapter 6 Geometry Modifications User Subroutines
■ UFRORD
Rezoning Coordinate Generation or Modification
Description
The UFRORD user subroutine can be used to modify (or expand) coordinate change
input in a rezoning analysis. The user must input the UFRORD rezoning option,
followed by a block giving a list of nodes for which UFRORD is used. MSC.Marc
calls UFRORD for each node in the list, so that the coordinates for that node can be
modified or generated. The UFRORD rezoning option can be repeated as many times
as necessary.
Format
User subroutine UFRORD is written with the following headers:
SUBROUTINE UFRORD(XORD,NCRD,DISPT,NDEG,N)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XORD(NCRD),DISPT(NDEG)
user coding
RETURN
END
where:
Input:
NCRD
is the number of coordinates per node.
DISPT
is the total displacements of node N.
NDEG
is the number of degrees of freedom per node.
N
is the node number.
Required Output:
XORD
is the coordinates of node N which should be generated or modified in this
user subroutine.
6-12
MSC.Marc Volume D: User Subroutines and Special Routines
URCONN
Chapter 6 Geometry Modifications User Subroutines
■ URCONN
Rezoning Connectivity Generation or Modification
Description
The URCONN user subroutine can be used to modify (or expand) input given through
use of the CONNECTIVITY CHANGE option, or as an internal connectivity generator.
The user must input the URCONN rezoning option, followed by a block giving the
elements for which URCONN is used. MSC.Marc calls URCONN for each element in
the series, so that the connectivity of that element can be modified or generated.
Format
User subroutine URCONN is written with the following headers:
SUBROUTINE URCONN(J,ITYPE,LM,NNODMX)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION LM(1)
user coding
RETURN
END
where:
Input:
J
is the element number.
NNODMX
is the maximum number of nodes in an element.
Required Output:
ITYPE
is the element type.
LM
is the array of nodes making up the element.
is passed in containing the connectivity of the Jth element already generated by
previous CONNECTIVITY, UFCONN, CONNECTIVITY CHANGE, or other generators.
Similarly, ITYPE is the element type if previously defined. The user can modify or
define ITYPE or LM in this routine. Note there is no checking to determine if ITYPE has
been defined on the SIZING or ELEMENTS parameter, or if node numbers are in the
range 1 ≤ N ≤ NUMNP .
LM
MSC.Marc Volume D: User Subroutines and Special Routines
USPLIT
6-13
Chapter 6 Geometry Modifications User Subroutines
■ USPLIT
User-defined Criterion to Split a Two-dimensional Body
C-45
Description
This subroutine is used to split a continuous deformable body into two separate parts.
Currently, the criterion for splitting the body is defined by the thickness and the
splitting is done through global remeshing. When the thickness of the body is less than
the value given in the subroutine, the body is split into two parts and remeshed. This
user subroutine can only be used with 2-D Advancing Front and Delaunary meshers.
Format
User subroutine USPLIT is written with the following headers:
SUBROUTINE USPLIT (IDIERE,IFLAG,SPLIT0)
implicit real*8 (a-h,o-z)
C
THIS ROUTINE DEFINES MATERIAL SPLIT USER CONTROL
C
METHOD 1:
C
IFLAG=1 : BODY SPLIT DUE TO THIN SECTION
C
SPLIT0 - MINIMUM THICKNESS TO AVOID SPLIT
C
IF SPLIT0=0, NO BODY SPLIT CHECK
RETURN
END
where:
Input:
IDIERE
is the body number.
Required Output:
IFLAG=1
a body is split by checking the thickness or distance of any pair of the
opposite segments.
SPLIT0
the distance value at which the body will be split.
6-14
MSC.Marc Volume D: User Subroutines and Special Routines
UCOORD
Chapter 6 Geometry Modifications User Subroutines
■ UCOORD
Relocate Nodes Created During Adaptive Meshing
Description
The UCOORD user subroutine can be used to define the location of a new node created
due to local adaptive meshing. The default if this routine is not used is to put the newly
created node geometrically half way between the old nodes. This user subroutine is
called for each new node created.
Format
User subroutine UCOORD is written with the following headers:
SUBROUTINE UCOORD(XORD, NCRD, INOD, LM, NNOD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XORD(NCRD,1),LM(1)
user coding
RETURN
END
where:
Input:
NCRD
is the number of coordinates per node.
INOD
is the node number of new node.
LM(I)
is the nodes on which INOD is depending.
NNOD
is the number of nodes on which INOD is depending.
= 2 middle of edge between LM(1) and LM(2).
= 3 center of triangle LM(1), LM(2), LM(3).
= 4 center of plane LM(1), LM(2), LM(3), LM(4).
= 4 center of tetrahedral 4 LM(1), LM(2), LM(3), LM(4).
= 8 center of brick LM(1), LM(2), LM(3), LM(4), LM(5), LM(6),
LM(7), LM(8).
Required Output:
XORD(J,I)
is the current coordinate j of node i.
Update XORD(J,INOD) if desired.
MSC.Marc Volume D: User Subroutines and Special Routines
UADAP
6-15
Chapter 6 Geometry Modifications User Subroutines
■ UADAP
User-defined Error Criterion
Description
The UADAP user subroutine can be used to define an error criterion for local adaptive
meshing. The value of USERCR must be returned. It is a measure of the quality of this
element. If the value of USERCR is greater than f1 * user_max or greater than f2, the
element refines.
Note that the f1 and f2 must be specified on the ADAPTIVE model definition option.
is the largest value of USERCR over all of the elements.
User_max
Format
User subroutine UADAP is written with the following headers:
SUBROUTINE UADAP(MM,XORD,DSXT,NCRDMX,NDEGMX,LM,NNODE,USERCR)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XORD(NCRDMX,*),DSXT(NDEGMX,*),LM(*)
user coding
RETURN
END
where:
Input:
MM
is the user’s element number.
XORD
is the original coordinates.
DSXT
is the total displacements.
NCRDMX
is the maximum number of coordinates per node.
NDEGMX
is the maximum number of degrees of freedom per node.
LM
is the node numbers of this element.
NNODE
is the number of nodes per element.
Required Output:
USERCR
is the user error criteria to be defined here.
6-16
MSC.Marc Volume D: User Subroutines and Special Routines
UADAP2
Chapter 6 Geometry Modifications User Subroutines
■ UADAP2
User-defined Unrefinement
Description
The UADAP2 user subroutine can be used to define unrefinement for local
adaptive meshing.
A refined element is unrefined if all its slave elements are marked for unrefine. An
element is marked for unrefine if USERCR specified in this routine is larger than
f1 * user_max or f2.
Note that f1 and f2 must be specified on the ADAPTIVE model definition option.
User_max is the largest value of USERCR over all of the elements.
This routine is only called for active elements.
Format
User subroutine UADAP2 is written with the following headers:
SUBROUTINE UADAP2(MM,XORD,DSXT,NCRDMX,NDEGMX,LM,NNODE,USERCR)
IMPLICIT REAL*8 (A-H, O-Z)
DIMENSION XORD(NCRDMX,*),DSXT(NDEGMX,*),LM(*)
user coding
RETURN
END
where:
Input:
MM
is the internal element number.
ielext (mm) gives the user element number.
XORD
contains the original coordinates.
DSXT
contains the total displacements.
NCRDMX
is the maximum number of coordinates per node.
NDEGMX
is the maximum number of degrees of freedom per node.
LM
contains the node numbers of this element.
NNODE
is the number of nodes of this element.
Required Output:
USERCR
is the criterion is to be defined in this routine.
MSC.Marc Volume D: User Subroutines and Special Routines
UADAPBOX
6-17
Chapter 6 Geometry Modifications User Subroutines
■ UADAPBOX
User-defined Box For Adaptivity
Description
The UADAPBOX user subroutine can be used to define and move the box used with the
adaptive criterion node within a box for local adaptive meshing.
The array boxcoord contains the current box coordinates to be modified in this routine.
The box is defined as boxcoord(i,1) to boxcoord(i,2) for coordinate i
The position and latest motion of rigid contact bodies are provided in this routine; the
numbering used is the same as in the input file. Please note that the values of position
and motion of deformable bodies will be zero.
Format
User subroutine UADAPBOX is written with the following. headers:
SUBROUTINE UADAPBOX(BOXCOORD,ICRITERION,TIME,DTIME,BODYCOORD,
$
BODYMOTION,NBODIES,NFIRSTRIGID)
IMPLICIT REAL*8 (A-H,O-Z)
REAL*8 BOXCOORD(3,2),BODYCOORD(3,*),BODYMOTION(3,*),TIME,DTIME
INTEGER ICRITERION
user coding
RETURN
END
where:
Input:
ICRITERION
adaptive criterion number (from input)
TIME
time at the end of the previous increment
DTIME
time increment of the previous increment
BODYCOORD(I,J)
current coordinates of the reference point of contact body j
BODYMOTION(I,J)
displacements of the reference point of contact body j
NBODIES
total number of contact bodies in the model
NFIRSTRIGID
the number of the first rigid contact body (=0 if none present)
6-18
MSC.Marc Volume D: User Subroutines and Special Routines
UADAPBOX
Chapter 6 Geometry Modifications User Subroutines
Required Output:
BOXCOORD(I,J)
box coordinates
Example
The following code lets the box defined in adaptive criterion 1 follow the motion of
rigid body number 2.
IF (ICRITERION.EQ.1) THEN
IBODY=2
BOXCOORD(1,1)=BOXCOORD(1,1)+BODYMOTION(1,IBODY)
BOXCOORD(1,2)=BOXCOORD(1,2)+BODYMOTION(1,IBODY)
BOXCOORD(2,1)=BOXCOORD(2,1)+BODYMOTION(2,IBODY)
BOXCOORD(2,2)=BOXCOORD(2,2)+BODYMOTION(2,IBODY)
BOXCOORD(3,1)=BOXCOORD(3,1)+BODYMOTION(3,IBODY)
BOXCOORD(3,2)=BOXCOORD(3,2)+BODYMOTION(3,IBODY)
ENDIF
MSC.Marc Volume D: User Subroutines and Special Routines
UTRANS
6-19
Chapter 6 Geometry Modifications User Subroutines
■ UTRANS
Implement Local Coordinate System
Description
This user subroutine allows the user to specify a local coordinate system for
user-specified nodes. The node numbers are given in the UTRANFORM model
definition option. This user subroutine is called a multiple number of times for each
increment of analysis. The local coordinate system can be modified (updated) at each
increment to facilitate the input of complex boundary conditions. Incremental nodal
displacements and reaction forces are output in both the local and global coordinate
system. All total nodal quantities are output in the global system.
Format
User subroutine UTRANS is written with the following headers:
SUBROUTINE UTRANS (DICOS, NDEG, XORD, NCRD, I, N)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DICOS (NDEG, NDEG), XORD(NCRD)
user coding
RETURN
END
where:
Input:
NDEG
is the number of degrees of freedom.
XORD
is the coordinates of the node updated if either the UPDATE or FOLLOW
FOR parameter is used.
NCRD
is the number of coordinates per node.
I
is the user’s node number.
N
is the transformation number.
Required Output:
DICOS
is the user-defined rotation matrix from the local to global coordinate system.
Note that this matrix must be proper orthogonal.
6-20
MSC.Marc Volume D: User Subroutines and Special Routines
USHELL
Chapter 6 Geometry Modifications User Subroutines
■ USHELL
Modify Thickness of Shell Elements
Description
This user subroutine allows the user to specify the thickness of shell elements for each
integration point. This user subroutine is called twice for each increment of analysis.
It is not advisable to change the thickness during an analysis.
Note: This user subroutine should not be used if the thickness is to be considered a design
variable. Use the GEOMETRY option instead.
Format
User subroutine USHELL is written with the following headers:
SUBROUTINE USHELL (THICK,XINTP,NCRD,M,NN)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XINTP(NCRD),M(2)
user coding
RETURN
END
where:
Input:
XINTP
is the integration point coordinates.
NCRD
is the number of coordinates per point.
M(1)
is the user’s element number.
M(2)
is the internal element number.
NN
is the integration point number.
Required Output:
THICK
is the thickness of shell, to be modified by the user.
MSC.Marc Volume D: User Subroutines and Special Routines
SSTRAN
6-21
Chapter 6 Geometry Modifications User Subroutines
■ SSTRAN
Transformation of Substructures
Description
This user subroutine allows the user to transform a substructure. The substructure can
be either rotated, mirrored or both. This user subroutine is called every time a
previously generated substructure is used.
Format
User subroutine SSTRAN is written with the following headers:
SUBROUTINE SSTRAN (NLEV,NSS,ICODE,NDEG,TDICTM)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION TDICTM (NDEG,NDEG)
user code
RETURN
END
where:
Input:
NLEV
is the substructure level number.
NSS
is the substructure number.
ICODE
set to 1 if transformation given.
NDEG
is the number of degrees of freedom per node.
Required Output:
TDICTM
is the transformation matrix defined by the user.
Before a substructure is used, it is transformed such that the direction cosines of a triad
in the new system with respect to the old system is TDICTM.
6-22
MSC.Marc Volume D: User Subroutines and Special Routines
UTHICK
Chapter 6 Geometry Modifications User Subroutines
■ UTHICK
User-specified Nodal Thicknesses
Description
The UTHICK user subroutine is called automatically by the NODAL THICKNESS model
definition block. The value of the THICK argument upon input is the value for nodal
thickness entered by the user. If this user subroutine is not used, the nodal thickness
data entered through the NODAL THICKNESS block are used.
Note: This user subroutine should not be used if the thickness is to be considered a design
variable. Use the GEOMETRY option instead.
Format
User subroutine UTHICK is called with the following headers:
SUBROUTINE UTHICK (THICK,COORD,NCRD,NOD,BEARC,NBEARF,INC,
INCSUB)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION COORD (NCRD), BEARC(6, NBEARF)
user coding
RETURN
END
where:
Input:
COORD
is the array of coordinates for this node. This array is only available if the
COORDINATES option (and UFXORD option, if used) precedes the
NODAL THICKNESS option.
NCRD
is the maximum number of coordinates per node.
NOD
is the node number.
BEARC
is not used.
NBEARF
is not used.
INC
is not used.
INCSUB
is not used.
Required Output:
THICK
is the user-defined nodal thickness of node NOD. Upon input, THICK takes
the value input through the NODAL THICKNESS option.
MSC.Marc Volume D: User Subroutines and Special Routines
UACTUAT
6-23
Chapter 6 Geometry Modifications User Subroutines
■ UACTUAT
Prescribe the Length of an Actuator
Description
The UACTUAT user subroutine allows the user to control the length of an actuator in
an incremental analysis. This is often useful in mechanism analyses, where the
kinematics are prescribed. This is used with the truss element type 9, when an initial
length is given in the fourth field of the GEOMETRY option.
Format
User subroutine UACTUAT is called with the following headers:
SUBROUTINE UATUAT (M,INC,CPTIM,TIMINC,XLNGTH,OLNGTH)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION M(2)
user coding
RETURN
END
where:
Input:
M(1)
is the user’s element number.
M(2)
is the internal element number.
INC
is the increment number.
CPTIM
is the time.
TIMINC
is the time increment.
OLNGTH
is the current length of actuator.
Required Output:
XLNGTH
is the length of actuator to be set by the user.
Chapter 7 Output Quantities User Subroutines List
CHAPTER
7
Output Quantities User
Subroutines List
User Subroutine
ELEVAR .
ELEVEC .
Page
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-18
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-20
IMPD . .
INTCRD
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-22
PLOTV .
..........................................................
UBGINC . .
UBGITR . .
UBGPASS
UEDINC . .
........................................................
........................................................
........................................................
........................................................
7-3
7-23
7-25
7-26
7-24
MSC.Marc Volume D: User Subroutine and Special Routines
7-ii
Chapter 7 Output Quantities User Subroutines List
User Subroutine
UELOOP
UPOSTV
UPSTNO
Page
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-27
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-8
Chapter 7 Output Quantities User Subroutines
CHAPTER
7
Output Quantities
User Subroutines
This chapter describes user subroutines which can be used to obtain results from the
analysis and manipulate it for postprocessing. There are also four dummy user
subroutines that can be used to set parameters for the advanced user. Table 7-1
summarizes these user subroutines and indicates what parameters or model definition
options are required to invoke the user subroutine.
MSC.Marc Volume D: User Subroutines and Special Routines
7-2
Chapter 7 Output Quantities User Subroutines
Table 7-1
User
Subroutine
Output Quantities User Subroutines Requirements
Required Parameters or
Model Definition Options
Purpose
ELEVAR
UDUMP
Allows postprocessing of element results.
ELEVEC
UDUMP
Allows postprocessing of element results in
harmonic analysis.
INTCRD
Makes available integration point coordinates.
IMPD
UDUMP
Allows postprocessing of nodal vector results.
PLOTV
POST
ORIENTATION
Defines element quantity to be written to post file.
UBGINC
Dummy routine available at the beginning of
each increment.
UBGITR
Dummy routine available at the beginning of
each iteration.
UBGPASS
Dummy routine available at the beginning of each pass
in coupled analyses.
UEDINC
Dummy routine available at the end of each increment.
UELOOP
Dummy routine available during major element loops.
UPOSTV
POST
Defines nodal vectors to be written to a post file.
UPSTNO
POST
Defines nodal quantities to be written to a post file
MSC.Marc Volume D: User Subroutines and Special Routines
PLOTV
7-3
Chapter 7 Output Quantities User Subroutines
■ PLOTV
User-selected Postprocessing of Element Variables
Description
The PLOTV user subroutine is used in conjunction with either element code 19 or a
negative code entered in the POST option. This allows the user to define an element
variable to be written to the post file.
Format
User subroutine PLOTV is written with the following headers:
SUBROUTINE PLOTV(V,S,SP,ETOT,EPLAS,ECREEP,T,M,NN,LAYER,NDI,
+NSHEAR,JPLTCD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION S(1),SP(1),ETOT(1),EPLAS(1),ECREEP(1),M(2)
user coding
RETURN
END
where:
Input:
S
is the array of stresses at this integration point. For heat transfer analysis, S
contains ∂T ⁄ ∂X i and K i ∂T ⁄ ∂X i . For a magnetostatic analysis, S contains the
magnetic induction (B) (positions 1, 2, 3 for x, y,z) and the magnetic field
intensity (H) (positions 5, 6, 7 for x, y, z).
SP
is the array stresses in the preferred direction if ORIENTATION is used.
ETOT
is the total strain (generalized) at this integration point.
EPLAS
is the total plastic strain at this integration point.
ECREEP
is the total creep strain at this integration point.
T
is the temperature at this integration point.
M(1)
is the user’s element number.
M(2)
is the internal element number.
NN
is the integration point number.
LAYER
is the layer number (for beams or shells).
NDI
is the number of direct stresses.
NSHEAR
is the number of shear stresses.
JPLTCD
is the absolute value of the user’s entered code.
7-4
MSC.Marc Volume D: User Subroutines and Special Routines
PLOTV
Chapter 7 Output Quantities User Subroutines
Required Output:
is the variable to be plotted or put onto the post file, to be defined in
this routine.
V
Example
For example, suppose the user wishes to output the sum of the squares of the two shear
stresses in the friction theory. These are S(2) and S(3), so the user subroutine would
appear as:
SUBROUTINE PLOTV(V,S,SP,ETOT,EPLAS,ECREEP,T,M,NN,LAYER,NDI,
+NSHEAR,JPLTCD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION S(1),SP(1),ETOT(1),EPLAS(1),ECREEP(1)
V=SQRT(S(2)**2 + S(3)**2)
RETURN
END
This quantity could then be postprocessed using MSC.Marc Mentat or MSC.Patran.
For electromagnetics, the PLOTV variables are:
V
is the variable.
ERI
is the real and imaginary components of the electric field intensity.
DRI
is the real and imaginary components of the electric displacement.
BRI
is the real and imaginary components of the magnetic induction.
HRI
is the real and imaginary components of the magnetic field intensity.
CRI
is the real and imaginary components of the current density.
T
is the current temperature; not used.
M
is the element number.
NN
is the integration point number.
LAYER
is the layer number = 2.
NDI
is the number of components = 3
NSHEAR
is not used.
JPLTCD
is the absolute value of the user’s post code.
MSC.Marc Volume D: User Subroutines and Special Routines
UPOSTV
7-5
Chapter 7 Output Quantities User Subroutines
■ UPOSTV
User-selected Postprocessing of Nodal Variables
Description
The UPOSTV user subroutine is used in conjunction with the POST option to define a
vector quantity that is to be written to the post file. This routine should only be
used with post revision formats 8 or earlier. For later post revisions, use the UPSTNO
user subroutine.
Format
User subroutine UPOSTV is written with the following headers:
SUBROUTINE UPOSTV(N,NDEG,NCRD,NUMNP,IANTYP,JNODE,IUID,UPOST,
* XORD,VECTOR,INC,CPTIM)
IMPLICIT REAL*8 (A-H, O-Z)
DIMENSION UPOST(NDEG),XORD(NCRD),VECTOR(NDEG,JNODE)
user coding
RETURN
END
where:
Input:
N
is the user’s node number.
NDEG
is the number of degrees of freedom per node.
NUMNP
is the number of nodes in the mesh.
IANTYP
is the analysis type – see PLDUMP in Chapter 9.
JNODE
is the number of vector quantities already defined – see PLDUMP in
Chapter 9.
IUID
is the user’s vector number.
XORD
is the coordinates of this node.
VECTOR
is the displacement, etc. of this node. See PLDUMP in Chapter 9.
INC
is the increment number.
CPTIM
is the total time.
Required Output:
UPOST
is user-defined components of vector for this node.
7-6
MSC.Marc Volume D: User Subroutines and Special Routines
UPOSTV
Chapter 7 Output Quantities User Subroutines
Example
For example, the user would like to postprocess the relative displacement of all nodes
with respect to his node 5 for all time. The user would need to obtain the displacement
of node 5 and subtract this from the other displacements. This is done as follows:
SUBROUTINE UPOSTV(N,NDEG,NCRD,NUMNP,IANTYP,JNODE,IUID,
* UPOST,XORD,VECTOR,INC,CPTIM)
implicit real*8 (a-h,o-z)
c
c
user subroutine to define nodal post variables
c
c
n
user node number
c
ndeg
number of degrees of freedom per node
c
ncrd
number of coordinates per node
c
numnp
number of nodes in mesh
c
iantyp
analysis type - see PLDUMP in volume D
c
jnode
number of vector quantities already defined
c
- see PLDUMP in volume D
c
iuid
user vector number
c
upost
c
xord
coordinates of this node
c
vectors
displacement, etc of this node.
user defined components of vector for this node
c
volume D
see iantyp/jnode table in PLDUMP section in
c
inc
increment number
c
cptim
total time
c
dimension upost(ndeg),xord(ncrd),vector(ndeg,jnode)
include 'space'
include 'array2'
dimension disp5(12)
c
set reference node lext=5
lext=5
c
get internal node number
lint=nodint (lext)
c
get reference displacement and store into disp5
la3=idsxt+(lint-1)*ndeg
call mcpy(vars(la3),disp5,ndeg,1,0)
MSC.Marc Volume D: User Subroutines and Special Routines
UPOSTV
7-7
Chapter 7 Output Quantities User Subroutines
c
c
get displacement of current node from vector and
c
subtract off reference displacement and store back into
upost
c
do i=1,ndeg
upost(i)=vector(i,1)-disp5(i)
enddo
c
return
end
7-8
MSC.Marc Volume D: User Subroutines and Special Routines
UPSTNO
Chapter 7 Output Quantities User Subroutines
■ UPSTNO
User-selected Postprocessing of Nodal Variables
Description
The UPSTNO user subroutine is used in conjunction with the POST option to define
nodal quantities to be written on the post file. This routine is called for post revision
nine and higher. For 7- and 8-style post files, the UPOSTV user subroutine should
be used.
Format
User subroutine UPSTNO is written with the following headers:
SUBROUTINE UPSTNO(NQCODE,NODEID,VALNO,NQNCOMP,NQTYPE,
* NQAVER,NQCOMPTYPE,NQDATATYPE,NQCOMPNAME)
IMPLICIT REAL*8 (A-H,O-Z)
c
DIMENSION VALNO(*)
CHARACTER*24 NQCOMPNAME(*)
user coding
RETURN
END
where
Input:
NQCODE
User nodal post code, defined on the POST option
NODEID
Node number
NQCOMPNAME
Not used (reserved for future expansion)
Required Output:
VALNO()
Nodal values:
real/imaginary
VALNO(
1: NQNCOMP)
VALNO(NQNCOMP+1:2*NQNCOMP)
magnitude/phase VALNO(
1: NQNCOMP)
VALNO(NQNCOMP+1:2*NQNCOMP)
NQNCOMP
Number of values in VALNO
real
imagaginary
magnitude
phase
MSC.Marc Volume D: User Subroutines and Special Routines
UPSTNO
7-9
Chapter 7 Output Quantities User Subroutines
NQTYPE
0 = scalar
1 = vector
NQAVER
Only for DDM:
NQCOMPTYPE
Used by MSC.Marc Mentat: 0 = global coordinate system (X,Y,Z)
1 = shell (Top, Bottom, Middle)
2 = order (First, Second, Third)
NQDATATYPE
0 = default
1 = modal
2 = buckle
3 = harmonic real
4 = harmonic real/imaginary
5 = harmonic magnitude/phase
0 = sum over domains
1 = average over domains
Example
For example, the user would like to vector plot the total contact force on nodes
whereby the total contact force is the vector sum of the normal and friction force
vectors. The UPSTNO user subroutine can be selected to perform the vector addition
and place the sum on the post file. This is done as follows:
subroutine upstno(nqcode,nodeid,valno,nqncomp,nqtype,
nqaver,nqcomptype,nqdatatype,
nqcompname)
implicit real*8 (a-h,o-z)
dimension valno(*)
character*24 nqcompname(*)
c......................................... Begin User Coding
dimension valno1(3),valno2(3)
if (nqcode.eq.-1) then
c... pick up contact normal force and store in valno1
call nodvar(35,nodeid,valno1,nqncomp,nqdatatype)
c... pick up contact friction force and store in valno2
call nodvar(37,nodeid,valno2,nqncomp,nqdatatype)
c... add normal and friction force
do 1 i = 1, nqncomp
valno(i)=valno1(i)+valno2(i)
1
continue
c... indicate that valno represents a vector
nqtype=1
end if
c......................................... End User Coding
return
end
*
*
7-10
MSC.Marc Volume D: User Subroutines and Special Routines
IMPD
Chapter 7 Output Quantities User Subroutines
■ IMPD
Output of Nodal Quantities
Description
The IMPD user subroutine makes the displacements, coordinates, reaction forces,
velocities, and accelerations available at the end of each increment so that the user can
save them in any form convenient for postprocessing. During harmonic
subincrements, IMPD allows the user to obtain the complex displacements and
reactions. In heat transfer (or Joule heating) analysis, this user subroutine allows the
user to obtain nodal temperatures, fluxes, and voltages for his postprocessing. This
user subroutine is used in conjunction with the UDUMP option.
Stress Analysis
Format
User subroutine IMPD is written with the following headers:
SUBROUTINE IMPD (LNODE,DD,TD,XORD,F,V,A,NDEG,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DD (NDEG), TD (NDEG), XORD
(NCRD),F(NDEG),V(NDEG),A(NDEG), LNODE(2)
user coding
RETURN
END
where:
Input:
LNODE(1)
LNODE(2)
DD
TD
XORD
F
V
A
NDEG
NCRD
is the node number (the user subroutine is called once per node
per increment).
=1
is the array of displacement increments at this node.
is the array of total displacements at this node.
are the coordinates of this node.
are the reaction forces at prescribed boundary conditions; residual load
correction elsewhere at this node.
is the total velocity at this node.
is the total acceleration at this node.
is the number of degrees of freedom per node (that is, the size of the DD, TD,
V, and A arrays).
is the number of coordinate directions per node (equals the size of the
XORD array).
MSC.Marc Volume D: User Subroutines and Special Routines
IMPD
7-11
Chapter 7 Output Quantities User Subroutines
During harmonic subincrements:
Input:
DD
is the array of real displacements.
TD
is the array of imaginary displacements.
F
is the array of real reaction forces.
V
is the array of imaginary reaction forces.
Example
For example, suppose the user wishes to write on a file the displaced position of a
three-dimensional solid structure for subsequent plotting. A scale factor of 5 is
used on the displacements.
C
C
SUBROUTINE IMPD (LNODE,DD,TD,XORD,F,V,A,NDEG,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DD(NDEG), TD(NDEG),XORD(NCRD),F(NDEG),
1 V(NDEG), A(NDEG), LNODE(2)
DIMENSION TXORD(3)
TXORD WILL BE THE COORDS + 5X TOTAL DISPLACEMENTS
DO 1 I = 1,3
1 TXORD(I) = XORD(I) + 5.0*TD(I)
WRITE OUT DISPLACED POSITIONS ON TAPE 20.
WRITE (20) LNODE(1), TXORD
RETURN
END
After each increment, there are NUMNP records (number of nodal points) on logical unit
20; each contains a node number and three adjusted coordinates. Note that any
additional file unit must be taken care of with the appropriate machine dependent JCL.
Note: In a coupled thermal-stress analysis, IMPD is called at the end of the stress pass of an
increment. If one then wants to have the temperature of a node (or the top, bottom, and
middle temperature in the case of shell elements), use can be made of the NODVAR user
subroutine as follows:
DIMENSION TXORD(3)
C
CALL NODVAR (14, N, DDTEMP, N1DUM,N2DUM)
Now DDTEMP contains the temperature(s) of node n.
7-12
MSC.Marc Volume D: User Subroutines and Special Routines
IMPD
Chapter 7 Output Quantities User Subroutines
Heat Transfer Analysis
Format
User subroutine IMPD is written with the following headers:
SUBROUTINE IMPD (N,DD,TD,XORD,F,V,A,NDEG,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DD (NDEG),TD(NDEG),XORD(NCRD),F(NDEG),V(NDEG),A(NDEG),LNODE(2)
user coding
RETURN
END
where:
Input:
LNODE(1) is the node number (the user subroutine is called once per node
per increment).
LNODE(2) = 2
DD
is the array of temperatures at this node.
TD
is the array of reaction fluxes at this node.
XORD
is the coordinates of this node.
F
is not used.
V
is not used.
A
is not used.
NDEG
is the number of degrees of freedom per node (that is, the size of the DD, TD, V,
and A arrays).
NCRD
is the number of coordinate directions per node (equals the size of the
XORD array).
MSC.Marc Volume D: User Subroutines and Special Routines
IMPD
7-13
Chapter 7 Output Quantities User Subroutines
Joule Heating (Current Pass) Analysis
Format
User subroutine IMPD is written with the following headers:
SUBROUTINE IMPD (N,DD,TD,XORD,F,V,A,NDEG,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DD
(NDEG),TD(NDEG),XORD(NCRD),F(NDEG),V(NDEG),A(NDEG), LNODE(2)
user coding
RETURN
END
where:
Input:
LNODE(1) is the node number (the user subroutine is called once per node
per increment).
LNODE(2) = 4
DD
is the array of voltages at this node.
TD
is the array of reaction currents at this node.
XORD
is the coordinates of this node.
F
is not used.
V
is not used.
A
is not used.
NDEG
is the number of degrees of freedom per node (that is, the size of the DD, TD, V,
and A arrays).
NCRD
is the number of coordinate directions per node (equals the size of the XORD
array).
Electrostatic Analysis
Format
User subroutine IMPD is written with the following headers:
SUBROUTINE IMPD (LNODE,DD,TD,XORD,F,V,A,NDEG,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XORD(NCRD)
user coding
RETURN
END
7-14
MSC.Marc Volume D: User Subroutines and Special Routines
IMPD
Chapter 7 Output Quantities User Subroutines
where:
Input:
LNODE(1) is the node number (the user subroutine is called once per node
per increment).
LNODE(2) = 6.
DD
is the potential at this node.
TD
is the reaction charge at this node.
XORD
is the coordinates of this node.
F
is not used.
V
is not used.
A
is not used.
NDEG
is the number of degrees of freedom per node = 1.
NCRD
is the number of coordinate directions per node (equals the size of the
XORD array).
Magnetostatic Analysis
Format
User subroutine IMPD is written with the following headers:
SUBROUTINE IMPD (LNODE,DD,TD,XORD,F,V,A,NDEG,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XORD(NCRD),LNODE(2)
user coding
RETURN
END
where:
Input:
LNODE(1) is the node number (the user subroutine is called once per node
per increment).
LNODE(2) = 7
DD
is the potential at this node.
TD
is the reaction current at this node.
XORD
is the coordinates of this node.
F
is not used.
V
is not used.
A
is not used.
NDEG
is the number of degrees of freedom per node = 1.
NCRD
is the number of coordinate directions per node (equals the size of the
XORD array).
MSC.Marc Volume D: User Subroutines and Special Routines
IMPD
7-15
Chapter 7 Output Quantities User Subroutines
Harmonic Electromagnetic Analysis
Format
User subroutine IMPD is written with the following headers:
SUBROUTINE IMPD (LNODE,DD,TD,XORD,F,V,A,NDEG,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DD
(NDEG),TD(NDEG),XORD(NCRD),F(NDEG),V(NDEG),A(NDEG), LNODE(2)
user coding
RETURN
END
where:
Input:
LNODE(1) is the node number (the user subroutine is called once per node
per increment).
LNODE(2) = 8
DD
is the array of real component of potential at this node.
TD
is the array of imaginary component of potential at this node.
XORD
is the coordinates of this node.
F
is the real component of the reaction.
V
is the imaginary component of the reaction.
A
is not used.
NDEG
is the number of degrees of freedom per node = 1.
NCRD
is the number of coordinate directions per node (equals the size of the
XORD array).
Transient Electromagnetic Analysis
Format
User subroutine IMPD is written with the following headers:
SUBROUTINE IMPD (LNODE,DD,TD,XORD,F,V,A,NDEG,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DD (NDEG),TD(NDEG),XORD(NCRD),F(NDEG),LNODE(2)
user coding
RETURN
END
7-16
MSC.Marc Volume D: User Subroutines and Special Routines
IMPD
Chapter 7 Output Quantities User Subroutines
where:
Input:
LNODE(1) is the node number (the user subroutine is called once per node
per increment).
LNODE(2) = 8
DD
is the array of incremental potential at this node.
TD
is the array of total potential at this node.
XORD
is the coordinates of this node.
F
is the reaction forces at applied boundary conditions.
V
is not used.
A
is not used.
NDEG
is the number of degrees of freedom per node (that is, the size of the DD, TD,
and F arrays).
NCRD
is the number of coordinate directions per node (equals the size of the
XORD array).
Acoustic Analysis
Format
User subroutine IMPD is written with the following headers:
SUBROUTINE IMPD (LNODE,DD,TD,XORD,F,V,A,NDEG,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XORD(NCRD),LNODE(2)
user coding
RETURN
END
where:
Input:
LNODE(1) is the node number.
LNODE(2) = 10
DD
is the real displacements (nodes of structural elements).
is the real pressure (nodes of acoustic medium).
TD
is the imaginary displacements (nodes of acoustic medium).
is the imaginary pressure (nodes of acoustic medium).
XORD
is the coordinates.
F
is the real reaction forces (nodes of structural elements).
is the real reaction sound source (nodes of acoustic medium).
V
is the imaginary reaction forces (nodes of structural elements).
is the imaginary reaction sound source (nodes of structural elements).
MSC.Marc Volume D: User Subroutines and Special Routines
IMPD
7-17
Chapter 7 Output Quantities User Subroutines
A
is not used.
NDEG
is the number of degrees of freedom per node.
NCRD
is the number of coordinate directions per node.
Fluid or Fluid-Thermal Analysis
Format
User subroutine IMPD is written with the following headers:
SUBROUTINE IMPD (LNODE,DD,TD,XORD,F,V,A,NDEG,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION DD (NDEG),TD(NDEG),XORD(NCRD),F(NDEG),V(1),A(1),LNODE(2)
user coding
RETURN
END
where:
Input:
LNODE(1) is the node number (the user subroutine is called once per node
per increment).
LNODE(2) = 3.
DD
is not used.
TD
is the array of velocities at this node.
XORD
is the coordinates of this node.
F
is the array of forces.
V
is the temperature at this node in a fluid-thermal analysis.
A
is the flux at this node in a fluid-thermal analysis.
NDEG
is the number of degrees of freedom per node (that is, the size of the DD, TD,
and F arrays).
NCRD
is the number of coordinate directions per node (equals the size of the
XORD array).
7-18
MSC.Marc Volume D: User Subroutines and Special Routines
ELEVAR
Chapter 7 Output Quantities User Subroutines
■ ELEVAR
Output of Element Quantities
Description
The ELEVAR user subroutine makes element (integration point) quantities available at
the end of each increment so that the user can save them in any form convenient for
postprocessing. This user subroutine is used in conjunction with the UDUMP option.
Format
User subroutine ELEVAR is written with the following headers:
SUBROUTINE ELEVAR(N,NN,KC,GSTRAN,GSTRES,STRESS,PSTRAN,
1 CSTRAN,VSTRAN,CAUCHY,EPLAS,EQUIVC,SWELL,KRTYP,PRANG,DT,
2 GSV,NGENS,NGEN1,NSTATS,NSTASS,THERM)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION GSTRAN(NGENS),GSTRES(NGENS),
1 STRESS(NGEN1),PSTRAN(NGEN1),CSTRAN(NGEN1),VSTRAN(NGEN1),
2 CAUCHY(NGEN1),DT(NSTATS),GSV(1),THERM(NGEN1),KRTYP(4),
3 PRANG(3,2)
User Coding
RETURN
END
where:
Input:
N
is the element number.
NN
is the integration point number.
KC
is the layer number for beam or shell elements.
GSTRAN
is the total strain array.
GSTRES
is the generalized force array.
STRESS
is the total stresses array.
PSTRAN
is the plastic strain array.
CSTRAN
is the creep strain array.
VSTRAN
is the viscoelastic strain array.
CAUCHY
is the Cauchy stress array.
EPLAS
is the equivalent plastic strain.
EQUIVC
is the equivalent creep strain.
MSC.Marc Volume D: User Subroutines and Special Routines
ELEVAR
Chapter 7 Output Quantities User Subroutines
SWELL
is the swelling strain.
KRTYP(1)
is the crack indicator for the first crack direction:
0 = no crack in this direction.
1 = open crack, developed in this increment.
2 = open crack, developed in previous increment.
3 = closed crack.
KRTYP(2)
is the crack indicator for the second crack direction.
KRTYP(3)
is the crack indicator for the third crack direction.
KRTYP(4)
is the crushing indicator:
0 = no crushing.
1 = crushing occurring in this increment.
2 = crushing occurred in previous increment.
PRANG
(i,1) = components of normal to the first crack plane.
(i,2) = components of normal to the second crack plane (3-D only).
DT
is the state variables array, temperature first.
GSV
is the global state variable array.
NGENS
is the number of generalized strains.
NGEN1
is the number of physical components.
NSTATS
is the number of state variables.
NSTASS
is the number of global state variables.
THERM
is the total thermal strain array.
7-19
7-20
MSC.Marc Volume D: User Subroutines and Special Routines
ELEVEC
Chapter 7 Output Quantities User Subroutines
■ ELEVEC
Output of Element Quantities in Harmonic Analysis
Description
The ELEVEC user subroutine makes element (integration point) quantities available at
the end of each harmonic subincrement so that the user can save them in any form
convenient for his postprocessing. This user subroutine is used in conjunction with the
UDUMP option.
Format
User subroutine ELEVEC is written with the following headers:
SUBROUTINE ELEVEC(N,NN,KC,GSTRAN,GSTRES,STRESS,PSTRAN,
1 CSTRAN,VSTRAN,CAUCHY,EPLAS,EQUIVC,SWELL,KRTYP,PRANG,DT,
2 GSV,NGENS,NGEN1,NSTATS,NSTASS,STSRE,STSIM,STNRE,STNIM)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION GSTRAN(NGENS),GSTRES(NGENS),
1 STRESS(NGEN1),PSTRAN(NGEN1),CSTRAN(NGEN1),VSTRAN(NGEN1),
2 CAUCHY(NGEN1),DT(NSTATS),GSV(NSTASS),
3 STSRE(NGEN1),STSIM(NGEN1),STNRE(NGEN1),STNIM(NGEN1)
user coding
RETURN
END
where:
Input:
N
is the element number.
NN
is the integration point number.
KC
is the layer number for beam or shell elements.
GSTRAN
is the total strain array.
GSTRES
is the generalized force array.
STRESS
is the total stresses array.
PSTRAN
is the plastic strain array.
CSTRAN
is the creep strain array.
VSTRAN
is the viscoelastic strain array.
CAUCHY
is the Cauchy stress array.
EPLAS
is the equivalent plastic strain.
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 7 Output Quantities User Subroutines
EQUIVC
is the equivalent stress.
SWELL
is the swelling strain.
KRTYP
is the cracking type.
PRANG
is the crack angle.
DT
is the state variables array, temperature first.
GSV
is the global state variable array.
NGENS
is the number of generalized strains.
NGEN1
is the number of physical components.
NSTATS
is the number of state variables.
NSTASS
is the number of global state variables.
STSRE
is the real harmonic stress.
STSIM
is the imaginary harmonic stress.
STNRE
is the real harmonic strain.
STNIN
is the imaginary harmonic strain.
ELEVEC
7-21
7-22
MSC.Marc Volume D: User Subroutines and Special Routines
INTCRD
Chapter 7 Output Quantities User Subroutines
■ INTCRD
Output of Integration Point Coordinates
Description
The INTCRD user subroutine makes the integration point coordinates for the stiffness
matrix available at each increment. The user can save them in any form convenient
for postprocessing.
Format
User subroutine INTCRD is written with the following headers:
SUBROUTINE INTCRD(M,NN,XORD,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION XORD(NCRD)
user coding
RETURN
END
where:
Input:
M
is the element number.
NN
is the integration point number.
XORD
is the coordinates of this integration point.
NCRD
is the number of coordinate directions.
MSC.Marc Volume D: User Subroutines and Special Routines
UBGINC
7-23
Chapter 7 Output Quantities User Subroutines
■ UBGINC
Beginning of Increment
Description
The UBGINC user subroutine is called at the beginning of each new increment. It can
be used to define or modify data variables stored in common blocks.
Note: No special flag is required in the input file.
Format
User subroutine UBGINC is written with the following headers:
SUBROUTINE UBGINC(INC,INCSUB)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
INC
is the increment number.
INCSUB
is the subincrement number.
7-24
MSC.Marc Volume D: User Subroutines and Special Routines
UEDINC
Chapter 7 Output Quantities User Subroutines
■ UEDINC
End of Increment
Description
The UEDINC user subroutine is called at the end of each increment. It can be used to
define or modify data variables stored in common blocks.
Note: No special flag is required in the input file.
Format
User subroutine UEDINC is written with the following headers:
SUBROUTINE UEDINC(INC,INCSUB)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
INC
is the increment number.
INCSUB
is the subincrement number.
MSC.Marc Volume D: User Subroutines and Special Routines
UBGITR
7-25
Chapter 7 Output Quantities User Subroutines
■ UBGITR
Beginning of Iteration
Description
The UBGITR user subroutine is called at the beginning of each iteration in the solution
of the nonlinear problem. It can be used to define or modify data variables stored in
common blocks.
Note: No special flag is required in the input file.
Format
User subroutine UBGITR is written with the following headers:
SUBROUTINE UBGITR(INC,INCSUB,NCYCLE)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
INC
is the increment number.
INCSUB
is the subincrement number.
NCYCLE
is the iteration number (the first is labeled zero).
7-26
MSC.Marc Volume D: User Subroutines and Special Routines
UBGPASS
Chapter 7 Output Quantities User Subroutines
■ UBGPASS
Beginning of Pass in Coupled Analyses
Description
The UBGPASS user subroutine is called at the beginning of each pass of coupled
analyses. It can be used to define or modify data variables stored in common blocks.
Note: No special flag is required in the input file.
Format
User subroutine UBGPASS is written with the following headers:
SUBROUTINE UBGPASS (INC,INCSUB,IPASS)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
INC
is the increment number.
INCSUB
is the subincrement number.
IPASS
is the pass identifier:
IPASS = 1 - stress pass
IPASS = 2 - thermal pass
IPASS = 3 - fluid pass
IPASS = 4 - Joule heating pass
IPASS = 5 - pore pressure pass
IPASS = 6 - electrostatics pass
IPASS = 7 - magnetostatics pass
IPASS = 8 - electromagnetics pass
MSC.Marc Volume D: User Subroutines and Special Routines
UELOOP
7-27
Chapter 7 Output Quantities User Subroutines
■ UELOOP
Beginning of Element Loop
Description
The UELOOP user subroutine is called in a loop over the elements. It can be used to
define or modify data variables stored in common blocks.
Note: No special flag is required in the input file.
Format
User subroutine UELOOP is written with the following headers:
SUBROUTINE UELOOP(M,N,IL)
IMPLICIT REAL *8 (A-H, O-Z)
user coding
RETURN
END
where:
Input:
M
is the user’s element number.
N
is the internal element number.
IL
is the loop flag.
= 1 form consistent nodal loads from distributed loads.
= 2 stiffness matrix formation.
= 3 mass matrix formation.
= 4 stress recovery.
Chapter 8 Hydrodynamic Lubrication User Subroutines List
CHAPTER
8
Hydrodynamic Lubrication
User Subroutines List
User Subroutine
UBEAR. . .
UGROOV .
URESTR .
UTHICK . .
UVELOC .
........................................................
........................................................
........................................................
........................................................
........................................................
Page
8-3
8-4
8-5
8-6
8-8
Chapter 8 Hydrodynamic Lubrication User Subroutines
CHAPTER
8
Hydrodynamic Lubrication
User Subroutines
This chapter describes user subroutines that can be used to customize a hydrodynamic
bearing analysis. In such problems, the geometry can be complicated by grooves in
the bearing surface or nonuniform lubricant. The user subroutines provided here
facilitate the input of this data. Table 8-1 summarizes these user subroutines and
indicates what parameters or model definition options are required to invoke the
user subroutine.
MSC.Marc Volume D: User Subroutines and Special Routines
8-2
Chapter 8 Hydrodynamic Lubrication User Subroutines
Table 8-1
Hydrodynamic Lubrication User Subroutines Requirements
User
Subroutine
Required Parameters or
Model Definition Options
Purpose
UBEAR
BEARING
Define the orientation of the film surface.
UGROOV
BEARING
Define the groove depth.
URESTR
BEARING
RESTRICTOR
Define the nonuniform restrictor coefficient and
pump pressures.
UTHICK
BEARING
NODAL THICKNESS
THICKNS CHANGE
Define the lubricant thickness.
UVELOC
BEARING
VELOCITY
Define the nodal velocity of bearing surface.
MSC.Marc Volume D: User Subroutines and Special Routines
UBEAR
8-3
Chapter 8 Hydrodynamic Lubrication User Subroutines
■ UBEAR
Input of Spatial Orientation of Lubricant Thickness
Description
In bearing analysis, the lubricant is modeled by a planar mesh due to the absence
of pressure gradients across the film height. MSC.Marc integrates the obtained
pressure distribution over the entire mesh. This yields a set of equivalent consistent
nodal forces perpendicular to the lubricant. In order to calculate the load capacity of
a particular bearing system, these forces must be transformed to the global coordinate
system. For this purpose, information is required about the direction cosines of the
lubricant normal. This can be done in the UBEAR user subroutine which is called for
each node.
Format
User subroutine UBEAR is written with the following headers:
SUBROUTINE UBEAR (COORD,COS,NODE,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION COORD (NCRD), COS(3)
user coding
RETURN
END
where:
Input:
COORD
is the array of coordinates at this node.
NODE
is the node number.
NCRD
is the number of coordinates per node.
Required Output:
COS
is the array of direction cosines of the vector perpendicular to the lubricant;
to be defined in this user subroutine. A default vector (0,0,1) is assumed if
not specified.
8-4
MSC.Marc Volume D: User Subroutines and Special Routines
UGROOV
Chapter 8 Hydrodynamic Lubrication User Subroutines
■ UGROOV
Input of Groove Depths
Description
In bearing analysis, discontinuous film thicknesses are often applied to increase the
load carrying capacity. This is usually done by grooves, which can be defined in the
GEOMETRY option. However, this is not possible if position dependent groove depths
have to be included. In such situations, the UGROOV user subroutine must be used. It
is called at each integration point and allows the user to specify the groove depth at
these points. In addition, this user subroutine can be used for selecting elements which
are located at grooves if complex groove patterns have to be modeled.
Format
User subroutine UGROOV is written with the following headers:
SUBROUTINE UGROOV (THICK,COORD,M,NN,NCRD)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION COORD (NCRD)
user coding
RETURN
END
where:
Input:
COORD
is the array of coordinates at this integration point.
M
is the element number.
NN
is the integration point number.
NCRD
is the number of coordinates per node.
Required Output:
THICK
is the groove depth magnitude to be specified.
MSC.Marc Volume D: User Subroutines and Special Routines
URESTR
8-5
Chapter 8 Hydrodynamic Lubrication User Subroutines
■ URESTR
Input of Nonuniform Restrictor Coefficients
Description
In bearing analysis, it is often necessary to include nonuniform restrictor coefficients
and pump pressures. The URESTR user subroutine allows this. It is called at each
increment for each integration point on each element surface given in the
RESTRICTOR model definition set, and allows the user to modify the restrictor
coefficient and pump pressure input on the data blocks.
Format
User subroutine URESTR is written with the following headers:
SUBROUTINE URESTR (CR,PP,PS,N,INC)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION N(3)
user coding
RETURN
END
where:
Input:
PS
is the surface pressure at the beginning of the increment.
N(1)
is the element number.
N(2)
is the face number.
N(3)
is the integration point number.
INC
is the current increment number.
Required Output:
CR
is the ratio of the desired restrictor coefficient to that given on the
RESTRICTOR data set for this element to be defined by the user (preset to 1).
PP
is the ratio of the desired pump pressure to that given on the RESTRICTOR
data set for this element to be defined by the user (preset to 1).
Note that since CR and PP are defined as ratios, if the user does not re-define them in
this user subroutine, the data block values are used. If the user wishes to give absolute
values here, the corresponding values on the RESTRICTOR data set can be
conveniently set to 1.
8-6
UTHICK (Hydrodynamic Lubrication)
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 8 Hydrodynamic Lubrication User Subroutines
■ UTHICK (Hydrodynamic Lubrication)
Generation or Modification of Nodal Thickness or Thickness
Change Field
Description
In bearing analysis, the film height usually varies over the entire lubricant region. The
UTHICK user subroutine allows the user to define, or to redefine previously specified,
nodal thicknesses. It is called for each node in the mesh.
In addition, this user subroutine can be used to define thickness increments in
incremental analysis or within subincrements when evaluating damping and/or
stiffness coefficients. In order to enable the specification of thickness increments as
function of previously calculated bearing properties, the user has access to the latter
quantities in this user subroutine.
Format
User subroutine UTHICK is written with the following headers:
SUBROUTINE UTHICK (THICK,COORD,NCRD,NOD,BEARC,NBEARF,INC,
INCSUB)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION COORD (NCRD), BEARC (6,NBEARF)
user coding
RETURN
END
where:
Input:
COORD
is the array of coordinates for this node.
NCRD
is the number of coordinates per node.
NOD
is the node number.
BEARC
is the matrix of previously calculated bearing properties. Each column
contains three bearing force and three bearing moment components. The
quantities calculated in the previous increment are stored in the first column.
Each subsequent column contains the properties pertaining to the previous
set of subincrements.
NBEARF
is the maximum number of subincrements as given on the
BEARING parameter.
MSC.Marc Volume D: User Subroutines and Special Routines
UTHICK (Hydrodynamic Lubrication)
8-7
Chapter 8 Hydrodynamic Lubrication User Subroutines
INC
is the increment number.
INCSUB
is the subincrement number.
Required Output:
THICK
is the lubricant thickness or incremental lubricant thickness magnitude to be
specified for this node.
8-8
UVELOC (Hydrodynamic Lubrication)
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 8 Hydrodynamic Lubrication User Subroutines
■ UVELOC (Hydrodynamic Lubrication)
Generation or Modification of Nodal Velocity Vectors
Description
In bearing analysis, it is sometimes necessary to include a position dependent velocity
field. The UVELOC user subroutine, which is called for each node, allows the user the
specification or re-definition of previously specified nodal velocity vectors.
Note: No special flag is required in the input file.
Format
User subroutine UVELOC is written with the following headers:
SUBROUTINE UVELOC (VELOC,COORD,NCRD,NODE)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION VELOC (NCRD),COORD(NCRD)
user coding
RETURN
END
where:
Input:
COORD
is the array of coordinates at this node.
NCRD
is the number of coordinates.
NODE
is the node number.
Required Output:
VELOC
is the array of nodal velocity components to be defined.
Chapter 9 Special Routines — MSC.Marc Post File Processor List
CHAPTER
9
Special Routines — MSC.Marc Post
File Processor List
Special Subroutine
PLDUMP2000/PLDUMP
Page
..............................................
9-2
Chapter 9 Special Routines — MSC.Marc Post File Processor
CHAPTER
9
Special Routines — MSC.Marc Post
File Processor
This chapter discusses a stand-alone program that provides examination of the
postprocessing file created by the POST option. This allows the user to perform
additional calculations based upon results calculated in MSC.Marc, and to create a
post file. These results can then be viewed with MSC.Marc Mentat or MSC.Patran.
9-2
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
■ PLDUMP2000/PLDUMP
MSC.Marc Post File Processor
is a small utility programs which can be used to access, analyze,
convert, and process MSC.Marc binary and formatted post files. PLDUMP2000 should
be used for post files with revision 9 or greater written by MSC.Marc 2000 and newer
versions. The source is supplied at no additional charge to MSC.Marc customers and
is available on the MSC.Marc installation media. The user can modify this source as
necessary to suit his requirements.
PLDUMP2000
When PLDUMP2000 is executed, the user is asked several questions, as follows (the
example answers given in italics show the conversion of 12 increments of a binary
post file jobname.t16 into a formatted post file newpost.t19):
1. Dump output file name: for example, post.txt.
The amount of data written into this file depends on the answer to
question 2.
2. Write post data to output option: for example, p.
Valid responses are:
n or none –
p
f
or
or
do not write post file to output
write analysis control data to output
full – write entire post file to output
partial –
3. Type of post file to read: for example, b.
Valid responses are:
b or binary –
to read a binary file
to read a formatted file
f or formatted –
4. Name of post file to read: for example, jobname.t16.
5. Type of post file to write: for example, f.
Valid responses are:
n or none –
do not write a new post file
write a new binary file
f or formatted – write a new formatted file
b or binary –
6. New post file name: for example, newpost.t19.
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
9-3
Chapter 9 Special Routines — MSC.Marc Post File Processor
7. User data processing option: for example, n.
Valid responses are:
n or no –
y or yes
no user data processing; default pldump2000/pldump is used
– user data processing; only if the source of pldump2000/pldump
has been modified by the user
8. Number of increments to process: for example, 12.
Processing stops if this number of increments has been processed. To
process only non-incremental data, enter a 0.
9-4
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
MSC.Marc Post File Layout (Revision 9 or Higher): PLDUMP 2000
The revision 9 (or higher) post file is subdivided into blocks with each block having
a unique number and name. For each block, a description is given below, following
the Fortran code of PLDUMP2000, both for formatted and binary post files. First, the
block number and name are given. Next, the way in which the data is read is shown.
Finally, the data read is explained.
The post file for revision 12 has seven new blocks:
53000 - Points
52100 - Curves
53200 - Surfaces
53300 - Attach Nodes
53400 - Attach Edges
53500 - Attach Faces
53600 - Boundary Conditions
BLOCK 501nn - analysis title
****************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(a70)’) title(1:70)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) (ititle(ijk),ijk=1,70)
write(title(1:70),’(70a1)’) (ititle(ijk),ijk=1,70)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin = =beg=50100 (Analysis Title)
title
= title of analysis
blkend
= =end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
9-5
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 502nn - analysis verification data
****************************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(6i13)’) (lm(ijk),ijk=1,18)
read(formatted,’(6i13)’) (lm(ijk),ijk=19,30)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) (lm(ijk),ijk=1,18)
read(binary) (lm(ijk),ijk=19,30)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin = =beg=50200 (Analysis Verification Data)
lm( 1)
= number of post codes
(npost )
lm( 2)
= number of nodes
(numnp )
lm( 3)
= number of elements
(numel )
lm( 4)
= number of d.o.f. per node
(ndeg ) not
lm( 5)
= number of int. points
(nstres)
lm( 6)
= number of nodal variables
(inod ) not
lm( 7)
= post file type
(ipstco) not
lm( 8)
= number of tyings from adaptive meshing (nadtie)
lm( 9)
= number of coordinates per node
(ncrd )
lm(10)
= number of nodes per element
(nnodmx)
lm(11)
= analysis type
(iantyp) not
lm(12)
= complex flag
(icompl) not
lm(13)
= number of transformations
(nbctra)
lm(14)
= post file revision number
(postrv) not
lm(15)
= number of distributed loads
(ndistl)
lm(16)
= number of sets
(nset )
lm(17)
= number of springs
(nsprng)
lm(18)
= number of contact bodies
(ndie )
lm(19)
= number of element sets
(nesets) not
lm(20)
= number of node sets
(nnsets) not
lm(21)
= number of int. point sets
(nisets) not
lm(22)
= number of layer sets
(nlsets) not
lm(23)
= number of d.o.f. sets
(ndsets) not
lm(24)
= number of increment sets
(ninset) not
lm(25)
= number of items in element sets
(kelem ) not
lm(26)
= number of items in nodes in sets
(knode ) not
lm(27) = number of items in int. point sets
(kint ) not
lm(28)
= number of items in layer sets
(klayr ) not
lm(29)
= number of items in d.o.f. sets
(kdof ) not
lm(30) = number of items in increment sets
(kinc ) not
blkend
= =end=
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
9-6
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 504nn - dummy
*******************
read(formatted,’(a70)’) blkbegin
read(formatted,’(6i13)’) idum
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) idum
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin = =beg=50400 (Dummy)
idum
= dummy variable (=0)
blkend
= =end=
BLOCK 505nn - domain decomposition information
***********************************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(6i13)’) nprocd,idomit
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) nprocd,idomit
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin
nprocd
idomit
blkend
=
=
=
=
=beg=50500 (Domain Decomposition Information)
number of domains of total model
domain number of this post file
=end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
9-7
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 506nn - element variable postcodes
****************************************
if(npost.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,npost
read(formatted,’(i13,a24)’) ipost,cpost
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,npost
read(binary) ipost,(iname(ijl),ijl=1,24)
write(cpost,’(24a1)’) (iname(ijl),ijl=1,24)
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin = =beg=50600 (Element Variable Postcodes)
npost
= number of element post variable (from BLOCK 502nn)
ipost
= element post code (see manual Volume C model definition
option POST) + 1000 * layer number for post variable ijk
cpost
= character string with name to be given to post variable
ijk
(see manual Volume C model definition option POST)
blkend
= =end=
9-8
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 507nn - element connectivities
************************************
if(numel.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,numel
read(formatted,’(6i13)’)
ielid,ityp,nnod,(iel(ijl),ijl=1,nnodmx)
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,numel
read(binary) ielid,ityp,nnod,(iel(ijl),ijl=1,nnodmx)
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
numel
nnodmx
ielid
ityp
nnod
iel(i)
blkend
=
=
=
=
=
=
=
=
=beg=50700 (Element Connectivities)
number of elements (from BLOCK 502nn)
number of nodes per element (from BLOCK 502nn)
user element number of element ijk
MARC element type of element ijk (see Volume B)
number of nodes of element ijk
user node number of i-th node of element ijk
=end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 508nn - nodal coordinates
*******************************
if(numnp.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,numnp
read(formatted,’(i13,5e13.6,/,6e13.6)’)
inod(ijk),(xord(ijl,ijk),ijl=1,ncrd)
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,numnp
read(binary) inod(ijk),(xord(ijl,ijk),ijl=1,ncrd)
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
numnp
ncrd
inod
xord(i)
blkend
=
=
=
=
=
=
=beg=50800 (Nodal Coordinates)
number of nodes (from BLOCK 502nn)
number of coordinates per node (from BLOCK 502nn)
user node number of node ijk
i-th coordinate of node ijk
=end=
9-9
9-10
PLDUMP2000/PLDUMP
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 53000 - point data
************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(i13)’) npoints
if(npoints.ne.0) then
do ijk=1,npoints
read(formatted,’(i13,3e13.6)’) ipnt(ijk),(xpnt(ijl,ijk),ijl=1,3)
enddo
endif
read(formatted,’(a5)’) blkend
read (binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) npoints
if(npoints.ne.0) then
do ijk=1,npoints
read(binary) ipnt(ijk),(xpnt(ijl,ijk),ijl=1,3)
enddo
endif
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin
= =beg=53000 (Points)
npoints
= number of geometric points
ipnt
= user point id of point ijk
xpnt(i,ijk)=i th coordinate of point ijk
blkend
= =end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 53100 - curve data
************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(i13)’) ncurves
if(ncurves.ne.0) then
do ijk=1,ncurves
read(formatted,’(6i13)’) (icurvinf(ijl),ijl=1,6)
icrv(ijk)=icurvinf(1)
lct=icurvinf(2)
npu=icurvinf(3)
nou=icurvinf(4)
nrx=3
if(lct.eq.6) nrx=5
read(formatted,’(6e13.6)’) (xhomog(ijl),ijl=1,npu)
lss=npu+nou
read(formatted,’(6e13.6)’) (xknot(ijl),ijl=1,lss)
if(lct.eq.-4) then
read(formatted,’(6i13)’) (jpnt(ijl),ijl=1,npu)
elseif(lct.eq.-6) then
do itp=1,npu
read(formatted,’(i13,2e13.6)’) itpid,xiso,yiso
enddo
elseif(lct.eq.4) then
do itp=1,npu
read(formatted,’(5e13.6)’) (xpnt(kk1),kk1=1,3)
enddo
elseif(lct.eq.6) then
do itp=1,npu
read(formatted,’(5e13.6)’) (xtrim(kk1),kk1=1,3),xiso,yiso
enddo
endif
enddo
endif
read(formatted,’(a5)’) blkend
read (binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) ncurves
if(ncurves.ne.0) then
do ijk=1,ncurves
read(binary) (icurvinf(ijl),ijl=1,6)
icrv(ijk)=icurvinf(1)
lct=icurvinf(2)
npu=icurvinf(3)
nou=icurvinf(4)
nrx=3
if(lct.eq.6) nrx=5
read(binary) (xhomog(ijl),ijl=1,npu)
lss=npu+nou
9-11
9-12
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
read(binary) (xknot(ijl),ijl=1,lss)
if(lct.eq.-4) then
read(binary) (jpnt(ijl),ijl=1,npu)
elseif(lct.eq.-6) then
do itp=1,npu
read(binary)itpid,xiso,yiso
enddo
elseif(lct.eq.4) then
do itp=1,npu
read(binary) (xpnt(kk1),kk1=1,3)
enddo
elseif(lct.eq.6) then
do itp=1,npu
read(binary) (xtrim(kk1),kk1=1,3),xiso,yiso
enddo
endif
enddo
endif
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin
=
ncurves
=
icurvinf(1)=
icurvinf(2)=
icurvinf(3)=
icurvinf(4)=
icurvinf(5)=
icurvinf(6)=
xhomog
=
xknot
=
jpnt
=
xpnt
=
xtrim
=
xiso,yiso =
itpid
blkend
=
=
=beg=53100 (Curves)
number of geometric curves
user curve id of curve ijk
curve type
-4 -NURB curve - referencing previously defined points
+4 -NURB curve - not referencing previously defined points
-6 -Trimming curve on surface - referencing previously defined
points
+6 -Trimming curve on surface - not referencing previously
defined points
number of points
order of curve
not used
not used
homogeneous coordinates of points on curve
knot vector of curve
array of point ids
coordinates of points on curve
real coordinates of points on trimming curve
isoparametric coordinates of points on trimming curve relative to
surface
point id of trimming point
=end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 53200 - surface data
**************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(i13)’) nsurfaces
if(nsurfaces.ne.0) then
do ijk=1,nsurfaces
read(formatted,’(6i13)’) (isurfinf(ijl),ijl=1,7)
icrv(ijk)=isurfinf(1)
lct=isurfinf(2)
npu=isurfinf(3)
nou=isurfinf(4)
npv=isurfinf(5)
nov=isurfinf(6)
ntrim=isurfinf(7)
nnnn=npu*npv
read(formatted,’(6e13.6)’) (xhomog(ijl),ijl=1,nnnn)
lss=npu+nou+npv+nov
read(formatted,’(6e13.6)’) (xknot(ijl),ijl=1,lss)
if(lct.eq.-9) then
read(formatted,’(6i13)’) (jpnt(ijl),ijl=1,nnnn)
elseif(lct.eq.9) then
do itp=1,nnnn
read(formatted,’(3e13.6)’) (xpnt(kk1),kk1=1,3)
enddo
endif
if(ntrim.ne.0) then
read(formatted,’(6i13)’) (jtrmcv(ijl),ijl=1,ntrim)
endif
enddo
endif
read(formatted,’(a5)’) blkend
read (binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) nsurfaces
if(nsurfaces.ne.0) then
do ijk=1,npoints
read(binary) (isurfinf(ijl),ijl=1,7)
icrv(ijk)=isurfinf(1)
lct=isurfinf(2)
npu=isurfinf(3)
nou=isurfinf(4)
npv=isurfinf(5)
nov=isurfinf(6)
ntrim=isurfinf(7)
nnnn=npu*npv
read(binary) (xhomog(ijl),ijl=1,nnnn)
lss=npu+nou+npv+nov
read(binary) (xknot(ijl),ijl=1,lss)
9-13
9-14
PLDUMP2000/PLDUMP
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 9 Special Routines — MSC.Marc Post File Processor
if(lct.eq.-9) then
read(binary) (jpnt(ijl),ijl=1,nnnn)
elseif(lct.eq.9) then
do itp=1,nnnn
read(binary) (xpnt(kk1),kk1=1,3)
enddo
endif
if(ntrim.ne.0) then
read(binary) (jtrmcv(ijl),ijl=1,ntrim)
endif
enddo
endif
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin
=
nsurfaces =
isurfinf(1)=
isurfinf(2)=
isurfinf(3)=
isurfinf(4)=
isurfinf(5)=
isurfinf(6)=
isurfinf(7)=
xhomog
=
xknot
=
jpnt
=
xpnt(i)
=
jtrmcv
=
blkend
=
=beg=53200 (Surfaces)
number of geometric surfaces
user surface id of surface ijk
surface type
-9 -NURB surface - referencing previously defined points
+9 -NURB surface - not referencing previously defined points
number of points, 1st isoparametric direction
order of curve, 1st isoparametric direction
number of points, 2nd isoparametric direction
order of curve, 2nd isoparametric direction
number of trimming curves
homogeneous coordinates of points on surface
knot vector of surface
array of point ids
i th coordinate of point
array of curve ids that are the trimming curves for this surface
=end=
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 53300 - attach nodes
**************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(i13)’) natpts
if(natpts.ne.0) then
do ijk=1,natpts
read(formatted,’(6i13)’) jpoint(ijk),jnode(ijk)
enddo
endif
read(formatted,’(a5)’) blkend
read (binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) natpts
if(natpts.ne.0) then
do ijk=1,natpts
read(binary) jpoint(ijk),jnode(ijk)
enddo
endif
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin
=
natpts
=
jpoint(ijk)=
jnode(ijk) =
blkend
=
=beg=53300 (Attach Nodes)
number of nodes attached to points
point id for ijk th node
node id for ith th node
=end=
PLDUMP2000/PLDUMP
9-15
9-16
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 53400 - attach edges
**************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(i13)’) ncvwedat
if(ncvwedat.ne.0) then
do ijk=1,ncvwedat
read(formatted,’(6i13)’) icurvid,nedgat
read(formatted,’(6i13)’) (lelem(ilm),ilm=1,nedgat)
read(formatted,’(6i13)’) (ledge(ilm),ilm=1,nedgat)
enddo
endif
read(formatted,’(a5)’) blkend
read (binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) ncvwedat
if(ncvwedat.ne.0) then
do ijk=1,ncvwedat
read(binary) icurvid,nedgat
read(binary) (lelem(ilm),ilm=1,nedgat)
read(binary) (ledge(ilm),ilm=1,nedgat)
enddo
endif
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin
ncvwedat
icurvid
nedgat
lelem
ledge
blkend
=
=
=
=
=
=
=
=beg=53400 (Attach Edges)
number of curves with edges attached
curve id
number of edges attached to this curve
array of elements attached to the curve
array of edge ids corresponding to the element (Marc convention)
=end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
9-17
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 53500 - attach faces
**************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(i13)’) nsfwfcat
if(nsfwfcat.ne.0) then
do ijk=1,nsfwfcat
read(formatted,’(6i13)’) isurfid,nfaceat
read(formatted,’(6i13)’) (lelem(ilm),ilm=1,nfaceat)
read(formatted,’(6i13)’) (lface(ilm),ilm=1,nfaceat)
enddo
endif
read(formatted,’(a5)’) blkend
read (binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) nsfwfcat
if(nsfwfcat.ne.0) then
do ijk=1,nsfwfcat
read(binary) isurfid,nfaceat
read(binary) (lelem(ilm),ilm=1,nfaceat)
read(binary) (lface(ilm),ilm=1,nfaceat)
enddo
endif
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin
nsfwfcat
isurfid
nfaceat
lelem
lface
blkend
=
=
=
=
=
=
=
=beg=53500 (Attach Faces)
number of surfaces with faces attached
surface id
number of faces attached to this surface
array of elements attached to the surface
array of face ids corresponding to the element (Marc convention)
=end=
9-18
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 53600 - boundary conditions
*********************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(i13)’) nbcs
if(nbcs.ne.0) then
do ijk=1,nbcs
read(formatted,’(32a1)’) (ibcname(ilm),ilm=1,32)
read(formatted,’(6i13)’) (ibcinfo(ilm),ilm=1,9)
ltyp =ibcinfo(1)
lmode =ibcinfo(2)
lmact =ibcinfo(3)
lmharm=ibcinfo(4)
lmng =ibcinfo(5)
lmread=ibcinfo(7)
lmreal=ibcinfo(8)
lmdim =ibcinfo(9)
read(formatted,’(6e13)’) ( rload(ilm),ilm=1,lmreal)
read(formatted,’(6i13)’) (itrload(ilm),ilm=1,lmreal)
if(lmharm.gt.0) then
read(formatted,’(6e13)’) ( cload(ilm),ilm=1,lmreal)
read(formatted,’(6i13)’) (itcload(ilm),ilm=1,lmreal)
endif
if(lmdim.ne.0) then
read(formatted,’(6i13)’) (lm(ilm),ilm=1,lmdim)
endif
do kk2=1,lmng
read(formatted,’(6i13)’) igid,igtype
read(formatted,’(80a1)’) (kbcline(ilm),ilm=1,80)
enddo
enddo
endif
read(formatted,’(a5)’) blkend
read (binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(formatted) nbcs
if(nbcs.ne.0) then
do ijk=1,nbcs
read(formatted) (ibcname(ilm),ilm=1,32)
read(formatted) (ibcinfo(ilm),ilm=1,9)
ltyp =ibcinfo(1)
lmode =ibcinfo(2)
lmact =ibcinfo(3)
lmharm=ibcinfo(4)
lmng =ibcinfo(5)
lmread=ibcinfo(7)
lmreal=ibcinfo(8)
lmdim =ibcinfo(9)
read(formatted) ( rload(ilm),ilm=1,lmreal)
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
read(formatted) (itrload(ilm),ilm=1,lmreal)
if(lmharm.gt.0) then
read(formatted) ( cload(ilm),ilm=1,lmreal)
read(formatted) (itcload(ilm),ilm=1,lmreal)
endif
if(lmdim.ne.0) then
read(formatted) (lm(ilm),ilm=1,lmdim)
endif
do kk2=1,lmng
read(formatted) igid,igtype
read(formatted) (kbcline(ilm),ilm=1,80)
enddo
enddo
endif
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin
nbcs
ibcname
ibcinfo
ibcinfo(1)
= =beg=53600 (Boundary Conditions)
= number of boundary conditions
= boundary condition name
= boundary condition information
= boundary condition physics type
=1
mechanical
displacements-pressure
=2
temperature
temperature-fluxes
=3
magnetic
voltage-current
=4
electrical
potential-charge
=5
bearing
pressure-mass flux
=6
fluid
velocity - pressure
=7
acoustics
pressure-source
ibcinfo(2) = boundary condition type
=1
fixed
=2
point
=3
distributed
=4
foundation
=5
initial displacement/temperature/pressure
=6
initial velocity or velocity for convection
=7
initial acceleration
=8
initial density or relative density (powder)
=9
hold node
=10
rad-cavity or press-cavity
=11
initial stress - mechanical analysis only
=12
initial plastic strain - mechanical analysis only
=13
initial porosity =14
porosity
=15
initial pore pressure
=16
change pore pressure
=17
initial temperature - not heat transfer analysis
=18
point temperature - not heat transfer analysis
=19
initial state - not heat transfer analysis
=20
change state - not heat transfer analysis
=21
initial void ratio
=22
void ratio
9-19
9-20
PLDUMP2000/PLDUMP
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 9 Special Routines — MSC.Marc Post File Processor
=23
initial preconsolidation pressure
=24
weld flux (read in readbcweld.f)
ibcinfo(3) = active/inactive flag
ibcinfo(4) = user subroutine used
ibcinfo(5) = complex harmonic flag
= 0 - real values only
= 1 - real and imaginary values
= 2 - magnitude and phase
ibcinfo(6) = Fourier loading series term (currently always = 0)
ibcinfo(7) = Number of geometric types
ibcinfo(8) = Number of real data associated with boundary condition
ibcinfo(9) = Number of integer data associated with boundary condition
rload
= real data associated with boundary condition
itrload
= table ids associated with real data
cload
= imaginary or phase data associated with boundary condition
itcload
= table ids associated with imaginary or phase data
igid
= geometry number
igtype
= geometry type
1= element ids
2= node ids
3= volume
4= surface
5= curve
6= point
7= element set
8= node set
9= polycurve
10= polysurface
11= element-edge
12= element-face
13= elem mn-edge
14= elem mn-face
15= cavity
16= surface-edge
17= curve-face
18= surface mn-edge
19= curve mn-face
kbcline
= list of location where boundary condition is applied
blkend
= =end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
9-21
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 509nn - spring data
*************************
if(nsprng.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,nsprng
read(formatted,’(5i13)’) (ispr(ijl,ijk),ijl=1,5)
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,nsprng
read(binary) id,node1,idof1,node2,idof2
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
nsprng
id
node1
idof1
node2
idof2
blkend
=
=
=
=
=
=
=
=
=beg=50900 (Spring Data)
number of springs (from BLOCK 502nn)
number of spring ijk
number of first node of spring ijk
degree of freedom of node1 of spring ijk
number of second node of spring ijk
degree of freedom of node2 of spring ijk
=end=
BLOCK 510nn - nodal codes and transformation id
***********************************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(6i13)’) (inoco(ijl),ijl=1,numnp)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) (inoco(ijl),ijl=1,numnp)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin
numnp
inoco(i)
node i
blkend
= =beg=51000 (Nodal Codes and Transformation ID)
= number of nodes (from BLOCK 502nn)
= nodal code for node i + 1000*transformation number for
= =end=
9-22
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 511nn - ties due to meshing
*********************************
if(nadtie.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,nadtie
read(formatted,’(2i13)’) ityp,iret
read(formatted,’(6i13)’) (nodes(ijl),ijl=1,iret)
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,nadtie
read(binary) ityp,iret
read(binary) (nodes(ijl),ijl=1,iret)
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin = =beg=51100 (Ties due to Meshing)
nadtie
= number of adaptive meshing tyings (from BLOCK 502nn)
ityp
= type of adaptive meshing tying
91 : tie one node in between 2 other nodes
92 : tie one node in between 4 other nodes
iret
= number of nodes involved in adaptive meshing tying
nodes(i) = node numbers involved in adaptive meshing tying
91 : nodes(1)=0.5 *(nodes(2)+nodes(3))
92 : nodes(1)=0.25*(nodes(2)+nodes(3)+nodes(4)+nodes(5))
blkend
= =end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 512nn - transformation matrices
*************************************
if(nbctra.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,nbctra
read(formatted,’(6e13.6)’) ((d(i1,i2),i1=1,3),i2=1,3)
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,nbctra
read(binary) ((d(i1,i2),i1=1,3),i2=1,3)
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin
nbctra
d(i,j)
blkend
=
=
=
=
=beg=51200 (Transformation Matrices)
number of transformations (from BLOCK 502nn)
transformation matrix for transformation number ijk
=end=
9-23
9-24
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 51300 - set definition
****************************
if(nset.gt.0.and postrv.le.10) then
*
*
*
*
read(formatted,’(a70)’) blkbegin
do ijk=1,nset
read(formatted,’(a12)’) setnam
read(formatted,’(2i13.6)’) isetn,isett
if(isetn.ne.0) then
read(formatted,’(6i13)’) (nsett(ijl),ijl=1,isetn)
if(isett.eq.12.or.isett.eq.13.or.
isett.eq.18.or.isett.eq.19)
read(formatted,’(6i13)’) (nsettf(ijl),ijl=1,isetn)
endif
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,nset
read(binary) (isetnam(ijl),ijl=1,12)
write(setnam,’(12a1)’) (isetnam(ijl),ijl=1,12)
read(binary) isetn,isett
if(isetn.ne.0) then
read(binary) (nsett(ijl),ijl=1,isetn)
if(isett.eq.12.or.isett.eq.13.or.
isett.eq.18.or.isett.eq.19)
read(binary) (nsettf(ijl),ijl=1,isetn)
endif
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
nset
setnam
isetn
isett
=
=
=
=
=
=beg=51300 (Set Definitions)
number of sets (from BLOCK 502nn)
name of set ijk
number of items in set ijk
type of set ijk
0 : element set
1 : node set
nsett(i) = element/node numbers of members of set ijk
blkend
= =end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
9-25
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 51301 - set definition
****************************
if(postrv.gt.10) then
read(formatted,’(a70)’) blkbegin
read(formatted,’(i13)’) nset
do ijk=1,nset
read(formatted,’(a32)’) setnam
read(formatted,’(2i13.6)’) isetn,isett
if(isetn.ne.0) then
read(formatted,’(6i13)’) (nsett(ijl),ijl=1,isetn)
if(isett.eq.12.or.isett.eq.13)
read(formatted,’(6i13)’) (nsett(ij1).ij1=1,isetn)
endif
endif
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,nset
read(binary) (isetnam(ijl),ijl=1,32)
write(setnam,’(32a1)’) (isetnam(ijl),ijl=1,32)
read(binary) isetn,isett
if(isetn.ne.0) then
read(binary) (nsett(ijl),ijl=1,isetn)
if(isett.eq.12.or.isett.eq.13.or.isett.eq.18.or.isett.eq.19) then
read(binary) (neddt(ij1),ij1=1,isetn)
endif
endif
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
nset
setnam
isetn
isett
=
=
=
=
=
=beg=51301 (Set Definitions)
number of sets
name of set ijk
number of items in set ijk
type of set ijk
0 : element set
1 : node set
12: edge set
13: face set
14: point set
15: curve set
16: surface set
17: cavity set
18: ordered surface set
9-26
PLDUMP2000/PLDUMP
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 9 Special Routines — MSC.Marc Post File Processor
19 ordered curve set
nsett(i) = element/node numbers of members of set ijk
neddt(i) = face/edge number if face/edge set of set ijk
blkend
= =end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
9-27
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 514nn - contact geometry data
***********************************
if(ndie.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,ndie
if(ipstk2.lt.8) then
read(formatted,’(3i13)’) ibody,itype,nitems
else
read(formatted,’(4i13)’) ibody,itype,nitems,istruc
read(formatted,’(a24)’) bdname
read(formatted,(6e13.6)’)
(pos(ij1),ij1-1,3),(rot(ij1),ij1=1,3)
endif
if(itype,ne.0.or.ipstk2.ge.8) then
if(itype.eq.0) then
read(formatted,’(i13)’) nelem
read(formatted,’(6i13)’) (ielem(ijl),ijl=1,nelem)
endif
if(itype.eq.1) then
do ijl=1,nitems
read(formatted’(2i13)’) npatch,npoint
do ijm=1,npatch
read(formatted’(4i13)’) ipatn,ipatt,ip1,ip2
enddo
do ijm=1,npoint
read(formatted’(i13,2e13.6)’) ipoint,xp,yp
enddo
enddo
endif
if(ibody.eq.2) then
do ijl=1,nitems
read(formatted’(2i13)’) npatch,npoint
do ijm=1,npatch
read(formatted’(6i13)’) ipatn,ipatt,ip1,ip2,ip3,ip4
enddo
do ijm=1,npoint
read(formatted’(i13,3e13.6)’) ipoint,xp,yp,zp
enddo
enddo
endif
if(ibody.eq.3) then
do ijl=1,nitems
read(formatted,’(6i13)’) nurbid,kpt,idum3,kor,idum5,idum6
do ijm=1,kpt
read(formatted,’(3e13.6)’) xp,yp,zp
enddo
read(formatted,’(6e13.6)’) (homo(ijm),ijm=1,kpt)
read(formatted,’(6e13.6)’) (xnot(ijm),ijm=1,kpt+kor)
enddo
endif
9-28
PLDUMP2000/PLDUMP
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 9 Special Routines — MSC.Marc Post File Processor
if(ibody.eq.4) then
do ijl=1,nitems
read(formatted,’(6i13)’) nurbid,nptu,nptv,noru,norv,itrim
do ijm=1,nptu*nptv
read(formatted,’(3e13.6)’) xp,yp,zp
enddo
read(formatted,’(6e13.6)’) (homo(ijm),ijm=1,nptu*nptv)
read(formatted,’(6e13.6)’)
(xnot(ijm),ijm=1,nptu+noru+nptv+norv)
do ijm=1,itrim
read(formatted,’(6i13)’)
itriid,kpt,idum3,idum4,idum5,idum6
do ijl=1,kpt
read(formatted,’(3e13.6)’) xp,yp,zp
enddo
enddo
enddo
endif
endif
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,ndie
if(ipstk2.lt.8) then
read(binary) ibody,itype,nitems
else
read(binary) ibody,itype,nitems,istruc
read(binary) (ibdname(ij1),ij1=1,24)
write(bdname,’(24a1)’) (ibdname(ij1),ij1=1,24)
read(binary) (pos(ij1),ij1=1,3),(rot(ij1),ij1=1,3)
endif
if(itype.ne.0.or.ipstk2.ge.8) then
if(ibody.eq.0) then
read(binary) nelem
read(binary) (ielem(ijl),ijl=1,nelem)
endif
if(ibody.eq.1) then
do ijl=1,nitems
read(binary) npatch,npoint
do ijm=1,npatch
read(binary) ipatn,ipatt,ip1,ip2
enddo
do ijm=1,npoint
read(binary) ipoint,xp,yp,zp
enddo
enddo
endif
if(ibody.eq.2) then
do ijl=1,nitems
read(binary) npatch,npoint
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
do ijm=1,npatch
read(binary) ipatn,ipatt,ip1,ip2,ip3,ip4
enddo
do ijm=1,npoint
read(binary) ipoint,xp,yp,zp
enddo
enddo
endif
if(ibody.eq.3) then
do ijl=1,nitems
read(binary) nurbid,kpt,idum3,kor,idum5,idum6
do ijm=1,kpt
read(binary) xp,yp,zp
enddo
read(binary) (homo(ijm),ijm=1,kpt)
read(binary) (xnot(ijm),ijm=1,kpt+kor)
enddo
endif
if(ibody.eq.4) then
do ijl=1,nitems
read(binary) nurbid,nptu,nptv,noru,norv,itrim
do ijm=1,nptu*nptv
read(binary) xp,yp,zp
enddo
read(binary) (homo(ijm),ijm=1,nptu*nptv)
read(binary) (xnot(ijm),ijm=1,nptu+noru+nptv+norv)
do ijm=1,itrim
read(binary) itriid,kpt,idum3,idum4,idum5,idum6
do ijl=1,kpt
read(binary) xp,yp,zp
enddo
enddo
enddo
endif
endif
enddo
endif
blkbegin
ndie
ibody
itype
nitems
istruc
=
=
=
=
=beg=51400 (Contact Geometry Data)
number of contact bodies (from BLOCK 502nn)
number of body ijk
type of body ijk
0 : deformable
1 : 2d line elements (type
9)
2 : 3d patch elements (type 18)
3 : 2d curves
4 : 3d surfaces
= number of entities in body ijk
= physical meaning of body ijk
1 : rigid
2 : deformable structural
9-29
9-30
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
bdnam
pos(i)
rot(i)
nelem
ielem(i)
npatch
npoint
ipatn
ipatt
ip1
ip2
ip3
ip4
ipoint
xp,yp,zp
nurbid
kpt
kor
nptu
nptv
noru
norv
itrim
homo(i)
xnot(i)
itriid
blkend
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
3 : symmetry
4 : deformable heat-rigid
5 : workpiece (Autoforge only)
6 : deformable acoustic
name of body ijk
position of center of body ijk
rotation vector for body ijk
number of elements in deformable body ijk
user element numbers of deformable body ijk
number of patches in body ijk entity ijl
number of points in body ijk entity ijl
patch number
patch type (9=line,18=surface)
first node of patch
second node of patch
third node of patch
fourth node of patch
point number
x-, y- and z-coordinates of point
identifier of NURBS
number of points for NURBS curve
order of NURBS curve
number of points in u-direction for NURBS surface
number of points in v-direction for NURBS surface
order of NURBS surface in u-direction
order of NURBS surface in v-direction
number of trimming curves of NURBS surface
homogeneous coordinates
knot vectors
identifier of trimming curve of NURBS surface
=end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
9-31
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 515nn - flow line data
****************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(6i13)’)
numcrgr,numndgr,ngrid,idum4,idum5,idum6
do ijk=1,ngrid
if(numcrgr.eq.2) read(formatted,’(6i13)’) (lm(ijm),ijm=1,6)
if(numcrgr.eq.3) read(formatted,’(6i13)’) (lm(ijm),ijm=1,10)
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) numcrgr,numndgr,ngrid,idum4,idum5,idum6
do ijk=1,ngrid
if(numcrgr.eq.2) read(binary) (lm(ijm),ijm=1,6)
if(numcrgr.eq.3) read(binary) (lm(ijm),ijm=1,10)
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin = ’=beg=51500 (Flow Line Data)
numcrgr = dimension of grid
2 : 2d grid (quad "elements")
3 : 3d grid (brick "elements")
numndgr = number of "nodes" in grid
ngrid
= number of "elements" in grid
lm(1)
= "element" number
lm(2)
= "element" type
lm(3-6) = "node" numbers of quad "element"
lm(3-10) = "node" numbers of brick "element"
blkend
= =end=
BLOCK xxxxx - begin increment/end of analysis indicator
*******************************************************
read(formatted,’(a4)’) csee
read(binary) isee
write(csee,’(a4)’) isee
csee
= indicator
**** begin of incremental data
++++ end of analysis
9-32
PLDUMP2000/PLDUMP
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 516nn - loadcase title
****************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(a70)’) title(1:70)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) (ititle(ijk),ijk=1,70)
write(title(1:70),’(70a1)’) (ititle(ijk),ijk=1,70)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin = =beg=51600 (Loadcase Title)
title
= title of loadcase
blkend
= =end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
9-33
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 517nn - integer increment verification data
*************************************************
read(formatted,’(a70)’) blkbegin
read(formatted,’(6i13)’) (lm(ijk),ijk=1,12)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) (lm(ijk),ijk=1,12)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin = =beg=51701 (Integer Increment Verification Data)
lm( 1)
= remeshing flag
(newmo)
0 : same mesh as before
1 : new mesh
lm( 2)
= increment number
(inc)
lm( 3)
= sub-increment number
(incsub)
lm( 4)
= analysis type
(jantyp)
> 100 element variables are written for this increment
lm( 5)
= number of nodal variables
(knod)
lm( 6)
= number of design variables
(ndsvar)
lm( 7)
= normal/harmonic/modal/buckle flag (ihresp)
0 : normal
1 : modal result
2 : buckle result
3 : real harmonic result
4 : complex harmonic result
lm( 8)
= number of recycles for this increment
lm( 9)
= total number of separation recycles
lm(10)
= total number of cutbacks
lm(11)
= total number of increment splittings
lm(12)
= not used
blkend
= =end=
9-34
PLDUMP2000/PLDUMP
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 51800 - real increment verification data
**********************************************
If post file revision number is 9 (MARC 2000)
read(formatted,’(a70)’) blkbegin
read(formatted,’(6e13.6)’) (xlm(ijk),ijk=1,6)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) (xlm(ijk),ijk=1,6)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin = =beg=51800 (Real Increment Verification Data)
xlm( 1)
= transient time
(time)
xlm( 2)
=
modal
result : frequency
(freq)
harmonic result : frequency
(freq)
buckle
result : buckle factor
(fact)
xlm( 3)
=
modal
result : generalized mass (gmas)
xlm( 4)
=
jantyp = 60 sensitivity check
(respon)
jantyp = 61 objective function
(objec )
xlm( 5)
=
jantyp = 60 limiting value
(rsplim)
jantyp = 61 critical constraint
(conval)
xlm( 6)
= not used
blkend
= =end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 51801 - real increment verification data
**********************************************
If post file revision number > 10 (MARC 2001 and later)
read(formatted,’(a70)’) blkbegin
read(formatted,’(6i13)’) nw
read(formatted,’(6e13.6)’) (xlm(ijk),ijk=1,nw)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) nw
read(binary) (xlm(ijk),ijk=1,nw)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
blkbegin = =beg=51801 (Real Increment Verification Data)
xlm( 1)
= transient time
(time)
xlm( 2)
=
modal
result : frequency
(freq)
harmonic result : frequency
(freq)
buckle
result : buckle factor
(fact)
xlm( 3)
=
modal
result : generalized mass (gmas)
xlm( 4)
=
jantyp = 60 sensitivity check
(respon)
jantyp = 61 objective function
(objec )
xlm( 5)
=
jantyp = 60 limiting value
(rsplim)
jantyp = 61 critical constraint
(conval)
xlm( 6)
= not used
xlm( 7)
= total volume
xlm( 8)
= total mass
xlm( 9)
= total strain energy
xlm(10)
= total plastic strain energy
xlm(11)
= total creep strain energy
xlm(12)
= total Kinetic energy
xlm(13)
= total damping energy
xlm(14)
= total work done by contact/external forces
xlm(15)
= total thermal energy
xlm(16)
= total elastic strain energy
xlm(17)
= total work done by contact forces
xlm(18)
= total work done by friction forces
xlm(19)
= total work done by springs
xlm(20)
= total work done by foundations
xlm(21)
= total work done by applied-force/disp
xlm(22)
= not used
xlm(23)
= not used
xlm(24)
= not used
blkend
= =end=
Note: nw = 18
9-35
9-36
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 519nn - new model
***********************
if(newmo.ne.0) then
repeat BLOCK 502nn upto and including BLOCK 514nn
endif
newmo
= remeshing flag (see BLOCK 517nn)
BLOCK 520nn - magnitude of distributed loads
********************************************
if(ndistl.gt.0) then
read(formatted,’(a70)’) blkbegin
read(formatted,’(6e13.6)’) (dist(ijk),ijk=1,ndistl)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) (dist(ijk),ijk=1,ndistl)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
ndistl
dist(i)
blkend
=
=
=
=
=beg=52000 (Magnitude of Distributed Loads)
number of dist loads (see BLOCK 502nn)
magnitude of dist load i
=end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
9-37
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 521nn - magnitude of spring forces
****************************************
if(nsprng.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,nsprng
read(formatted,’(6e13.6)’) force1,force2
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,nsprng
read(binary) force1,force2
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
nsprng
force1
force2
blkend
=
=
=
=
=beg=52100 (Magnitude of Spring Forces)
number of springs (see BLOCK 502nn)
real force of spring ijk
imaginary force of spring ijk
only non-zero for complex analysis (see BLOCK 517nn)
= =end=
9-38
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 522nn - contact body results
**********************************
if(ndie.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,ndie
read(formatted,’(6e13.6)’) (ddat(ijk),ijk=1,36)
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,ndie
read(binary) (ddat(ijk),ijk=1,36)
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin = =beg=52200 (Contact Body Results)
ddat( 1) - ddat( 3) =
x-, y-, z- position of center of body ijk
ddat( 4) = not used
ddat( 5) = not used
ddat( 6) = total angle rotated for body ijk
ddat( 7) - ddat( 9) =
x-, y-, z- velocity of center of body ijk
ddat(10) = not used
ddat(11) = not used
ddat(12) = angular velocity of body ijk
ddat(13) - ddat(15) =
x-, y-, z- force of body ijk
ddat(16) - ddat(18) =
moment around x-, y-, z- axis of body ijk
ddat(19) - ddat(34) =
4x4 rotation/translation matrix to transform
original position of body ijk to current position
ddat(35) = not used
ddat(36) = not used
blkend
= =end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 523nn - element integration point values
**********************************************
if(jantyp.gt.100.and.npost.gt.0.and.numel.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,numel
do ijl=1,nstres
read(formatted,’(6e13.6)’) (elvar(ijk),ijk=1,npost)
enddo
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,numel
do ijl=1,nstres
read(binary) (elvar(ijk),ijk=1,npost)
enddo
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
npost
numel
jantyp
nstres
=
=
=
=
=
=beg=52300 (Element Integration Point Values)
number of post codes (see BLOCK 502nn)
number of elements (see BLOCK 502nn)
analysis type (see BLOCK 517nn)
number of integration points per element
(see BLOCK 502nn)
elvar(i) = values of post codes for element ijk, integration
point ijl
blkend
= =end=
9-39
9-40
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 524nn - nodal results
***************************
if(jantyp.ne.60.and.jantyp.ne.61.and.knod.gt.0) then
read(formatted,’(a70)’) blkbegin
read(formatted,’(6i13)’) nnqnod,nnvnod
do ijk=1,nnqnod
read(formatted,’(a48)’) cnam
read(formatted,’(6i13)’) (ivec(ijk),ijk=1,12)
nd=0
if(ivec(7).eq.-1) nd=numnp*ivec(4)
if(nd.gt.0) then
read(formatted,’(6e13.6)’) (vecr(ijl),ijl=1,nd)
if(ivec(6).eq.4.or.ivec(6).eq.5) then
read(formatted,’(6e13.6)’) (veci(ijl),ijl=1,nd)
endif
endif
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) nnqnod,nnvnod
do ijk=1,nnqnod
read(binary) (inam(ijl),ijl=1,48)
write(cnam,’(48a1)’) (inam(ijl),ijl=1,48)
read(binary) (ivec(ijk),ijk=1,12)
nd=0
if(ivec(7).eq.-1) nd=numnp*ivec(4)
if(nd.gt.0) then
read(binary) (vecr(ijl),ijl=1,nd)
if(ivec(6).eq.4.or.ivec(6).eq.5) then
read(binary) (veci(ijl),ijl=1,nd)
endif
endif
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
jantyp
knod
numnp
nnqnod
nnvnod
cnam
ivec( 1)
ivec( 2)
ivec( 3)
ivec( 4)
=
=
=
=
=
=
=
=
=
=
=
=beg=52400 (Nodal Results)
analysis type (see BLOCK 517nn)
number of nodal variables (see BLOCK 517nn)
number of nodes (from BLOCK 502nn)
number of nodal vectors on post file
total number of nodal quantities on post file
name of nodal vector ijk
quantity identifier for vector ijk (see Table below)
number of components per node in vector ijk
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
ivec( 5) =
ivec( 6) = normal/modal/buckle/harmonic flag ijk
0 : normal
1 : modal
2 : buckle
3 : real harmonic
4 : complex harmonic (real + imaginary)
5 : complex harmonic (magnitude + phase)
ivec( 7) = number of nodes flag for vector ijk
-1 : values for all nodes given
0 : all values zero, no values given
ivec( 8) = not used
ivec( 9) = not used
ivec(10) = not used
ivec(11) = not used
ivec(11) = not used
vecr(i) = real values for vector ijk (or magnitude)
veci(i) = imaginary values for vector ijk (or phase)
blkend
= =end=
Description of quantity identifiers of nodal vectors:
1 = Displacement
2 = Rotation
3 = External Force
4 = External Moment
5 = Reaction Force
6 = Reaction Moment
7 = Fluid Velocity
8 = Fluid Pressure
9 = External Fluid Force
10 = Reaction Fluid Force
11 = Sound Pressure
12 = External Sound Source
13 = Reaction Sound Source
14 = Temperature
15 = External Heat Flux
16 = Reaction Heat Flux
17 = Electric Potential
18 = External Electric Charge
19 = Reaction Electric Charge
20 = Magnetic Potential
21 = External Electric Current
22 = Reaction Electric Current
23 = Pore Pressure
24 = External Mass Flux
25 = Reaction Mass Flux
26 = Bearing Pressure
27 = Bearing Force
28 = Velocity
29 = Rotational Velocity
30 = Acceleration
31 = Rotational Acceleration
9-41
9-42
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
32
33
34
35
36
37
38
39
40
=
=
=
=
=
=
=
=
=
Modal Mass
Rotational Modal Mass
Contact Normal Stress
Contact Normal Force
Contact Friction Stress
Contact Friction Force
Contact Status
Contact Touched Body
Herrmann Variable
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccc
BLOCK 25 - response gradients
*****************************
if(jantyp.eq.60) then
read(formatted,’(a70)’) blkbegin
read(formatted,’(6e13.6)’) (respon(ijk),ijk=1,ndsvar)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) (respon(ijk),ijk=1,ndsvar)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin =
jantyp
=
ndsvar
=
respon(i)=
blkend
=
=beg=52500 (Response Gradients)
analysis type (see BLOCK 517nn)
number of design variables (see BLOCK 517nn)
response gradient for design variable i
=end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 526nn - element contribution to response
**********************************************
if(jantyp.eq.60) then
read(formatted,’(a70)’) blkbegin
read(formatted,’(6e13.6)’) (elcon(ijk),ijk=1,numel)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) (elcon(ijk),ijk=1,numel)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
jantyp
numel
elcon(i)
blkend
=
=
=
=
=
=beg=52600 (Element Contribution to the Response)
analysis type (see BLOCK 517nn)
number of elements (from BLOCK 502nn)
contribution of element i to the response
=end=
BLOCK 527nn - design variable values
************************************
if(jantyp.eq.61) then
read(formatted,’(a70)’) blkbegin
read(formatted,’(6e13.6)’) (desvar(ijk),ijk=1,ndsvar)
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
read(binary) (desvar(ijk),ijk=1,ndsvar)
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin =
jantyp
=
ndsvar
=
desvar(i)=
blkend
=
=beg=52700 (Design Variable Values)
analysis type (see BLOCK 517nn)
number of design variables (see BLOCK 517nn)
value of design variable i
=end=
9-43
9-44
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 528nn - flow line updates
********************************
if(numndgr.gt.0) then
read(formatted,’(a70)’) blkbegin
do ijk=1,numndgr
if(numcrgr.eq.2) read(formatted,’(i13,2e13.6)’) inod,yp,yp
if(numcrgr.eq.3) read(formatted,’(i13,3e13.6)’) inod,yp,yp,zp
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,numndgr
if(numcrgr.eq.2) read(binary) inod,yp,yp
if(numcrgr.eq.3) read(binary) inod,yp,yp,zp
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
numndgr
numcrgr
inod
xp,yp,zp
blkend
=
=
=
=
=
=
=beg=52800 (Flow Line Updates)
number of "nodes" in grid (see BLOCK 515nn)
dimension of grid (see BLOCK 515nn)
id of grid "node" ijk
x-, y-, z- coordinate of grid "node" ijk
=end=
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK 529nn - global variables
********************************
if(postrv.ge.11) then
read(formatted,’(a70)’) blkbegin
read(formatted,’(2i13)’) inumv,inumt
do ijk=1,inumv
read(formatted,’(a48)’) globename(ijk)
read(formatted,’(6i13)’) ityp,id2,8num,nnum,id5,id6
read(formatted,’(6e13.6)’) (xlm(ijl),ijl=1,nnum)
enddo
read(formatted,’( a5)’) blkend
read(binary) (ibeg(ijk),ijk=1,70)
write(blkbegin,’(70a1)’) blkbegin
do ijk=1,inumv
read(binary) (inam(ijl)’),ijl=1,48)
write(globnam,’48a1)’) (inam(ijl),ijl=1,48)
read(binary) ityp,id2,inum,nnum,id5,id6
read(binary) (xlm(ijl)’),ijl=1,nnum)
enddo
read(binary) (iend(ijk),ijk=1,5)
write(blkbegin,’(5a1)’) blkend
endif
blkbegin
inumv
inumt
globname
ityp
=
=
=
=
=
id2
inum
nnum
id5
id6
xlm
blkend
=
=
=
=
=
=
=
=beg=52900 (Flow Line Updates)
number of items in this block
total number of global variables in this block
global variable name for this item
global variable type:
1=Cavity Pressure
2=Cavity volume
3=Global State Variable
4=Cavity Mass
5=Cavity Temperature
6=Throat Coordinate
7=Loadcase percentage complete
0 (for the time being)
id for this global variable, e.g. cavity number
1 (number of variables in this item)
0 (for the time being)
0 (for future use)
value of the global variables defined in this item
=end=
9-45
9-46
MSC.Marc Volume D: User Subroutines and Special Routines
PLDUMP2000/PLDUMP
Chapter 9 Special Routines — MSC.Marc Post File Processor
BLOCK yyyyy - end increment indicator
*************************************
read(formatted,’(a4)’) csee
read(binary) isee
write(csee,’(a4)’) isee
csee
= indicator
---- end of incremental data
Chapter 10 Mathematical Utility Routines List
CHAPTER
10
Utility Routines List
Utility Routine
DDOT .
Page
..........................................................
10-2
GMADD
GMPRD
GMSUB
GMTRA
GTPRD .
.........................................................
.........................................................
.........................................................
.........................................................
.........................................................
10-3
10-4
10-5
10-6
10-7
INV3X3 .
INVERT
.........................................................
.........................................................
10-9
10-8
MCPY
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-10
MSC.Marc Volume D: User Subroutines and Special Routines
10-ii
Chapter 10 Utility Routines List
Utility Routine
PRINCV .
SCLA .
Page
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-12
MSC.Marc Volume D: User Subroutines and Special Routines
10-1
Chapter 10 Utility Routines
Chapter 10 Mathematical Utility Routines
CHAPTER
10
Utility Routines
This chapter discusses a selection of the mathematical utility routines that may be
called from any subroutine to simplify the program.
10-2
MSC.Marc Volume D: User Subroutines and Special Routines
DDOT
Chapter 10 Utility Routines
■ DDOT
Inner Product of Two Vectors
Description
Returns the dot product of two vectors.
Format
Utility function DDOT can be used in the following format:
ANS=DDOT(NN,A,IA,B,IB)
where:
Input:
NN
number of items in each vector to be used
A
first input vector
IA
stride in vector A
B
second input vector
IB
stride in vector B
Output:
ANS
inner product of vectors A and B
Note: Vectors A, B, and ANS are real*8 variables.
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 10 Utility Routines
■ GMADD
Matrix Add
Description
Add two matrices and put sum into third matrix.
Format
Utility routine GMADD can be called with the following format:
CALL GMADD (W,X,Y,N,M)
where:
Input:
W
first input matrix
X
second input matrix
N
first dimension of W, X, and Y
M
second dimension of W, X, and Y
Output:
Y
output matrix,
Y = W+X
Note: Matrices W, X, and Y are real*8 arrays.
GMADD
10-3
10-4
MSC.Marc Volume D: User Subroutines and Special Routines
GMPRD
Chapter 10 Utility Routines
■ GMPRD
Matrix Product
Description
Multiply two matrices and put product in third matrix.
Format
Utility routine GMPRD can be called with the following format:
CALL GMPRD (W,X,Y,N,M)
where:
Input:
W
first input matrix
X
second input matrix
N
first dimension of W and Y
M
second dimension of W and first dimension of X
L
second dimension of X and Y
Output:
Y
output matrix,
Y = W*X
Note: Matrices W, X, and Y are real*8 arrays.
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 10 Utility Routines
■ GMSUB
Matrix Subtract
Description
Subtract two matrices and put remainder in third matrix.
Format
Utility routine GMSUB can be called with the following format:
CALL GMSUB (W,X,Y,N,M)
where:
Input:
W
first input matrix
X
second input matrix
N
first dimension of W, X, and Y
M
second dimension of W, X, and Y
Output:
Y
output matrix,
Y = W–X
Note: Matrices W, X, and Y are real*8 arrays.
GMSUB
10-5
10-6
MSC.Marc Volume D: User Subroutines and Special Routines
GMTRA
Chapter 10 Utility Routines
■ GMTRA
Matrix Transpose
Description
Transpose a matrix.
Format
Utility routine GMTRA can be called with the following format:
CALL GMTRA (W,X,N,M)
where:
Input:
W
input matrix
N
first dimension of W and second dimension of X
M
second dimension of W and first dimension of X
Output:
X
output matrix
X = WT
Note: Matrices W and X are real*8 matrices.
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 10 Utility Routines
■ GTPRD
Transpose Matrix Product
Description
Transpose product of two matrices.
Format
Utility routine GTPRD can be called with the following format:
CALL GTPRD (W,X,Y,N,M.L)
where:
Input:
W
first input matrix
X
second input matrix
N
first dimension of W and X
M
second dimension of W and first dimension of Y
L
second dimension of X and Y
Output:
Y
output matrix
Note: Matrices W, X, and Y are real*8 matrices.
GTPRD
10-7
10-8
MSC.Marc Volume D: User Subroutines and Special Routines
INVERT
Chapter 10 Utility Routines
■ INVERT
Invert Matrix
Description
Matrix inversion and system solution (for small matrices, 15x15 max).
Format
Utility routine INVERT can be called with the following format:
CALL INVERT (A,N,B,MR,D2,IDIM)
where:
Input:
A
input matrix
N
number of rows and columns of A, must be less than or equal 15
B
array of right-hand side vectors for which the solution is required
MR
number of right hand side vectors. If
IDIM
dimension of A in storage
MR = 0 , only inversion is performed
Output:
A
inverse of input matrix A
B
array of solution vectors
D2
determinant of A
Note: Matrices A, B, and scalar D2 are real*8.
If D2 equals zero, the matrix is singular; neither the inverse or the solution are calculated.
If N is greater than 15, an error message is printed and the matrix is not inverted.
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 10 Utility Routines
■ INV3X3
Invert 3 x 3 Matrix
Description
Invert 3 x 3 matrices.
Format
Utility routine INV3X3 can be called with the following format:
CALL INV3X3 (A,AINV,DET,IFLAG)
where:
Input:
A
input matrix
IFLAG
flag for output
Output:
A
inverse of input matrix A if IFLAG = 1
AINV
inverse of input matrix A if IFLAG is not = 1
DET
determinant of A
Note: Matrices A, AINV, and scalar DET are real*8 variables.
If DET = 0, the matrix is singular and the inverse is not calculated.
INV3X3
10-9
MSC.Marc Volume D: User Subroutines and Special Routines
10-10 MCPY
Chapter 10 Utility Routines
■ MCPY
Matrix Copy
Description
Copy a matrix.
Format
Utility routine MCPY can be called with the following format:
CALL MCPY (W,X,N,M,MS)
where:
Input:
W
input matrix
N
first dimension of W and X
M
second dimension of W and X
MS
not used
Output:
X
output matrix,
X = W
Note: Matrices W and X are real*8 arrays.
MSC.Marc Volume D: User Subroutines and Special Routines
PRINCV
10-11
Chapter 10 Utility Routines
■ PRINCV
Find Principle Values
Description
Solves 3 x 3 Eigen problem with Jacobi transformations to find principle values of
stresses and strains.
Format
Utility routine PRINCV can be called with the following format:
CALL PRINCV (PV,R,V,NDI,NSHEAR,ISS,JCR1,JCR2,JCR3)
where:
Input:
V(6)
vector of strains or stresses.
NDI
number of direct stress or strain components.
NSHEAR
number of shear stress or strain components.
ISS
flag to indicate whether V is stress or strain.
if ISS = 0, V is stress
if ISS = 1, V is strain
JCR1
set to 0
JCR2
set to 0
JCR3
set to 0
Output:
PV(3)
vector of principal values
R(3,3)
matrix of principal directions
Note: Vectors and matrices PV, R, and V are real*8 arrays.
MSC.Marc Volume D: User Subroutines and Special Routines
10-12 SCLA
Chapter 10 Utility Routines
■ SCLA
Set Matrix to Value
Description
Assign a scalar value to a matrix.
Format
Utility routine SCLA can be called with the following format:
CALL SCLA (W,C,N,M,MS)
where:
Input:
W
input matrix
C
scalar
N
first dimension of W
M
second dimension of W
MS
not used
Output:
W
output matrix
Note: Matrix W and scalar C are real*8 variables.
Chapter 11 Considerations for Parallel Processing
CHAPTER
11
Considerations for Parallel
Processing
■ Overview
■ Auxiliary Routines
■ Sharing Data
This chapter describes some special considerations that need to be taken into account
when writing user subroutines for parallel processing.
Overview
In a parallel run with MSC.Marc, the finite element mesh is subdivided into domains
where each element is part of one domain. Nodes at the boundary between domains
are present in all domains sharing that boundary. Each domain is run on one process
in the job, normally corresponding to a processor (CPU).
Note: There is a difference between process and processor. A process is run by a processor. A
processor can run multiple processes, but in a parallel analysis, each process is normally
run by one processor for efficiency.
MSC.Marc Volume D: User Subroutines and Special Routines
11-2
Chapter 11 Considerations for Parallel Processing
Auxiliary Routines
There are a number of auxiliary routines available for parallel applications.
DOMFLAG
The DOMFLAG subroutine is used for sharing variables between domains. The
variables can be summed, the maximum taken etc. Suppose the variables num1, r1, and
volume have been obtained on each domain. Each domain may have different values
of these variables. Now, the user wants to calculate the largest value of num1 and r1
and the variable volume should be summed over the domains. The code for doing this
would look like:
include ’cdominfo’
ibuff1(1)=num1
dbuff1(1)=r1
dbuff1(2)=volume
itest1(1)=1
itest2(1)=1
itest2(2)=3
call domflag(ibuff1,dbuff1,itest1,itest2,1,2)
num1=ibuff1(1)
r1=dbuff1(1)
volume=dbuff1(2)
This code sets num1 and r2 to the maximum over the domains and sets num1 to the sum
over the domains. The action taken is controlled by the value set to itest1 and itest2:
= 0: minimum
= 1: maximum
= 2: average
= 3: sum
The last two arguments of DOMFLAG specify the number of integers and reals,
respectively, that are involved. The arrays ibuff1, dbuff1, itest1, and itest2 are
declared in cdominfo with a range also defined in cdominfo (currently 512). If only one
variable is used, one can skip the use of the arrays, for instance
call domflag(int1,ddummy,3,0,1,0)
for summing int1 over the domains.
MSC.Marc Volume D: User Subroutines and Special Routines
11-3
Chapter 11 Considerations for Parallel Processing
Reading Input
Reading input into a user subroutine requires that all domains get access to the data.
This can be accomplished in different ways:
A. The data file is copied to one file for each domain using a unique name and
each domain reads its own file.
B. The parent domain reads the file and sends each line to the child domains.
C. The parent domain reads the whole file, possibly processes the data and sends
the data to the child domains.
Option A has the disadvantage that the user has to copy the file before the job is
started (possibly to remote machines if the job is run on a cluster). With Option B,
the data file remains the same as for a serial run. It can be inefficient for large amounts
of data, though. Option C can be more efficient depending on the type of data that
is processed.
For Option A, it is necessary to create a filename which is unique to each domain.
Suppose a file called yourname.txt contains data that is read from a user subroutine.
For each domain, a copy of the file is made into 1yourname.txt, 2yourname.txt, etc.
These files can be read using the following piece of code:
include 'cdominfo'
include 'jname'
include 'prepro'
include 'machin'
character file*200,line*200
file=dirjid(1:ljid)
length=last_char(file)
if (nprocd.gt.0) then
if(iprcnm.lt.10) then
write(file(length+1:length+2), '(i1)') iprcnm
else
write(file(length+1:length+3), '(i2)') iprcnm
endif
endif
length=last_char(file)
file=file(1:length)//'yourname.txt'
Now the file can be opened as in a serial run.
The string variable dirjid contains the full path to the directory where the MSC.Marc
input file is located for each domain. The variable iprcnm (from cdominfo) is the
process (domain) number. The auxiliary function last_char returns the last nonblank
character of a string.
MSC.Marc Volume D: User Subroutines and Special Routines
11-4
Chapter 11 Considerations for Parallel Processing
The following code can be used for Option B:
include
include
include
include
'cdominfo'
'jname'
'prepro'
'machin'
character file*200,line*200
c open a file on the parent process (domain 1) only, and send
c each line read to the other domains
c
file='yourname.txt'
iunit=68
iostatus=0
if (iparent.eq.0) then
open(iunit,file=file,access='sequential',
1
status='old',form='formatted',iostat=iostatus)
endif
if (nprocd.gt.0) then
call domflag(iostatus,dummy,3,0,1,0) ! share the status flag
endif
if (iostatus.gt.0) then
c error in open file, bail out with marc exit 999
call quit(999)
endif
lastread=1
do i=1,100000
! loop over all lines in the file
iostatus=0
if (iparent.eq.0) then ! only read on parent
read(iunit,'(a80)',iostat=iostatus) line
endif
if (nprocd.gt.0) then
call domflag(iostatus,dummy,3,0,1,0) ! share the status flag
endif
if (iostatus.ne.0) then
go to 102 ! found end of file
else
if (nprocd.gt.0) call domstring(line)
endif
c
c now "line" is available on all domains
c
write(kou,*) 'line',line(1:last_char(line))
enddo
102
continue
MSC.Marc Volume D: User Subroutines and Special Routines
11-5
Chapter 11 Considerations for Parallel Processing
The file is only opened if iparent = 0, which is the case in a serial run and for the
parent process in a parallel run. The code also makes certain that all processes stop if
an error occurs while opening the file. Use is made of the DOMFLAG auxiliary routine
to make sure all domains have the same value of iostatus. The DOMSTRING routine
broadcasts the line read to all domains.
Sharing Data
Since elements are distributed to different domains it is sometimes necessary to share
data. Suppose that the total volume is calculated in a user subroutine by integrating
over all elements. Each domain would then calculate the volume of the domain. To get
the total volume, it is necessary to sum the contributions from all domains. This can
be done with the DOMFLAG auxiliary routine :
include ’cdominfo’
c the variable vol contains the volume of each domain
if (nprocd.gt.0) call domflag(idummy,vol,0,3,0,1)
It is crucial that all domains call this routine the same number of times. Sharing data
should be avoided inside element loops. Apart from being inefficient, it usually causes
the job to hang or crash since there are, in general, a different number of elements in
the domains. If, for example, the code for calculating the volume is done in an element
loop, the calculation of the total volume should be done outside the element loop (for
instance, in the UEDINC user subroutine, which is called at the end of the increment).
Dealing with nodal arrays sometimes requires special attention since the nodes on
interdomain boundaries are duplicated. One such example is when counting the total
number of nodes with a certain property (like being in contact). If this number is
summed up in each domain and then later added between domains it will be too large
since the interdomain nodes are counted multiple times. This can be handled with the
following code:
if (nprocd.gt.0) call domnodmask(mask)
num=0
do i=1,numnp
if (nprocd.gt.0) then
if (some_property(i).and.mask(i).eq.1) num=num+1
else
if (some_property(i)) num=num+1
endif
enddo
11-6
MSC.Marc Volume D: User Subroutines and Special Routines
Chapter 11 Considerations for Parallel Processing
The integer array mask must be allocated with at least the number of nodes in the
domain. The subroutine domnodmask returns mask(i) such that mask(i) = 0 if internal
node i is also present in another domain and 1 otherwise (for each interdomain node,
it is set to one in one domain and to zero in the rest).
Appendix A User Subroutines and Special Routines List
APPENDIX
A
User Subroutines,
Special Routines and
Utility Routines List
User Subroutine
ANELAS .
ANEXP . .
ANKOND
ANPLAS .
ASSOC .
Page
........................................................
........................................................
........................................................
........................................................
........................................................
3-5
3-22
3-24
3-17
4-13
CREDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CRPLAW (Viscoplastic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CRPLAW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CRPVIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CUPFLX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-50
4-7
3-33
5-3
2-18
MSC.Marc Volume D: User Subroutines and Special Routines
A-2
Appendix A User Subroutines, Special Routines and Utility Routines List
User Subroutine
Page
DIGEOM.
........................................................
2-70
ELEVAR .
ELEVEC .
........................................................
........................................................
7-18
7-20
FILM . . .
FLOW . .
FLUX . . .
FORCDF
FORCDT
FORCEM
........................................................
........................................................
........................................................
........................................................
........................................................
........................................................
2-35
2-37
2-12
2-31
2-22
2-7
GAPT . . .
GAPU . . .
GENSTR
........................................................
........................................................
........................................................
2-44
3-91
3-82
HOOKLW .
HOOKVI . .
HYPELA2 .
IMPD . .
INITPL .
INITPO .
INITSV .
INTCRD
.......................................................
.......................................................
.......................................................
3-15
5-8
3-68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-104
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-105
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-52
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-22
MAP2D. . . . . .
MOTION (2-D)
MOTION (3-D)
....................................................
....................................................
....................................................
6-5
2-60
2-62
NASSOC
NEWPO .
NEWSV .
........................................................
4-9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-106
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-53
ORIENT .
........................................................
3-20
PLOTV .
.........................................................
7-3
REBAR.
.........................................................
6-10
MSC.Marc Volume D: User Subroutines and Special Routines
A-3
Appendix A User Subroutines, Special Routines and Utility Routines List
User Subroutine
SEPFOR . . .
SEPFORBBC
SEPSTR . . . .
SINCER . . . .
SSTRAN. . . .
Page
.....................................................
.....................................................
.....................................................
.....................................................
.....................................................
2-71
2-73
2-75
4-14
6-21
........................................................
........................................................
3-49
5-6
UACOUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UACTIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UACTUAT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UADAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UADAP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UADAPBOX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UARRBO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UBEAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UBEAR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UBGINC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UBGITR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UBGPASS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UCAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UCOMPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UCONTACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UCOORD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UCRACK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UCRPLW (Viscoplastic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UCRPLW (Viscoplastic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UDAMAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UEDINC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UELASTOMER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UELDAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UELOOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UENERG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UEPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UFAIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UFCONN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UFILM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UFINITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-101
6-9
6-23
6-15
6-16
6-17
3-99
3-84
8-3
7-23
7-25
7-26
2-108
3-89
2-101
6-14
3-47
3-31
4-5
3-56
7-24
3-77
3-66
7-27
3-62
3-26
3-19
6-4
2-41
3-74
TENSOF.
TRSFAC .
MSC.Marc Volume D: User Subroutines and Special Routines
A-4
Appendix A User Subroutines, Special Routines and Utility Routines List
User Subroutine
UFORMS . . . .
UFOUND . . . .
UFOUR . . . . .
UFRIC . . . . . .
UFRICBBC . . .
UFRORD . . . .
UFXORD . . . .
UGENT . . . . .
UGRAIN . . . . .
UGROOV . . . .
UGROWRIGID
UHTCOE . . . .
UHTCON . . . .
UHTNRC . . . .
UINSTR . . . . .
UMDCOE . . . .
UMDCON . . . .
UMDNRC . . . .
UMOONY . . . .
UMU . . . . . . .
UNEWTN . . . .
UNORST . . . .
UOBJFN . . . . .
UOGDEN . . . .
UPERM . . . . .
UPHI . . . . . . .
UPNOD . . . . .
UPOSTV . . . .
UPOWDR . . . .
UPSTNO . . . .
URCONN . . . .
UREACB . . . .
URESTR . . . .
URPFLO. . . . .
USDATA . . . . .
USELEM . . . .
USHELL . . . . .
USHRET . . . .
USIGMA . . . . .
Page
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-45
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-39
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-66
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-11
....................................................
6-3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-100
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-55
....................................................
8-4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-65
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-76
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-79
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-81
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-19
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-91
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-94
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-96
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-61
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-27
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-96
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-98
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-110
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-64
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-60
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-87
....................................................
6-7
....................................................
7-5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-58
....................................................
7-8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-12
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-107
....................................................
8-5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-97
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-57
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-93
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-50
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-29
MSC.Marc Volume D: User Subroutines and Special Routines
A-5
Appendix A User Subroutines, Special Routines and Utility Routines List
User Subroutine
Page
USINC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
USINKPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
USIZEOUTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
USPCHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
USPLIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
USPRNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
USSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
USSUBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UTHICK (Hydrodynamic Lubrication) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UTHICK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UTIMESTEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UTRANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UVELOC (Hydrodynamic Lubrication) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UVELOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UVOID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UVOIDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UVOIDRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UVSCPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UVTCOE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UVTCON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UVTNRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UWELDFLUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UWELDPATH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-56
2-43
6-6
3-30
6-13
3-44
2-55
3-102
8-6
6-22
2-58
6-19
8-8
2-59
3-51
3-52
3-54
4-3
2-84
2-87
2-89
2-14
2-16
VSWELL.
........................................................
3-38
.........................................................
3-41
...........................................................
4-12
WKSLP
YIEL .
ZERO .
..........................................................
4-11
MSC.Marc Volume D: User Subroutines and Special Routines
A-6
Appendix A User Subroutines, Special Routines and Utility Routines List
Mathematical Utility Routine
DDOT .
..........................................................
10-2
GMADD
GMPRD
GMSUB
GMTRA
GTPRD .
.........................................................
.........................................................
.........................................................
.........................................................
.........................................................
10-3
10-4
10-5
10-6
10-7
INV3X3 .
INVERT
.........................................................
.........................................................
10-9
10-8
MCPY
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-10
PRINCV .
SCLA .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-12
Special Routine
PLDUMP2000/PLDUMP
.............................................
9-2