205
University of Ljubljana Faculty of Civil and Geodetic Engineering 2009 AceFEM Mathematica Finite Element Environment Jože Korelc

AceFEMManual

Embed Size (px)

Citation preview

Page 1: AceFEMManual

University of Ljubljana

Faculty of Civil and Geodetic

Engineering

2009

AceFEMMathematica Finite

Element Environment

Jože Korelc

Page 2: AceFEMManual

AceFEM Contents

AceFEM Tutorials .................................................................................................................5

AceFEM Preface ..........................................................................................................5• Acknowledgement

AceFEM Structure .......................................................................................................6

AceFEM Palettes .........................................................................................................9

Standard AceFEM Procedure ................................................................................12

Input Data .......................................................................................................................15

Analysis Phase .............................................................................................................18

Iterative solution procedure ...................................................................................19

Data Base Manipulations .........................................................................................25

Selecting Nodes ..........................................................................................................26

Selecting Elements ....................................................................................................27

Implementation Notes for Contact Elements .................................................27

General Formulation of Transient Coupled Non-linear Systems ...........32

Semi-analytical solutions ........................................................................................35

User Defined Tasks ....................................................................................................39

Parallel AceFEM computations .............................................................................42

Bibliography ..................................................................................................................45

Code Verification Methods & Debugging ..................................................................46

Solution Convergence Test ....................................................................................46

Interactive Debugging ...............................................................................................52

Code Profiling ...............................................................................................................56

Round-off Error Test .................................................................................................58

Shared Finite Element Libraries ....................................................................................63

AceShare ........................................................................................................................63

Accessing elements from shared libraries ......................................................63

Unified Element Code ...............................................................................................66

Simple AceShare library ..........................................................................................66

Advanced AceShare library ....................................................................................68

2 AceFEM Finite Element Environment

Page 3: AceFEMManual

Advanced User Documentation .....................................................................................72Mesh Input Data Structures ...72

Sensitivity Input Data Structures .......75

Examples and Exercises ..................................................................................................76

About AceFEM Examples ........................................................................................76

Solid, Finite Strain Element for Direct and Sensitivity Analysis ............76

Parameter, Shape and Load Sensitivity Analysis of Multi-Domain Example ..............................................................................................................................................82

Solid, Finite Strain Element for Direct and Sensitivity Analysis ............88

Parameter, Shape and Load Sensitivity Analysis of Multi-Domain Example ..............................................................................................................................................93

Inflating the Tyre .........................................................................................................99

Three Dimensional, Elasto-Plastic Element ....................................................103

Axisymmetric, finite strain elasto-plastic element .......................................111

Cyclic tension test, advanced post-processing , animations .................115

Solid, Finite Strain Element for Dynamic Analysis ......................................124

2D slave node, line master segment element ................................................126

2D indentation problem ............................................................................................129

2D slave node, smooth master segment element ........................................131

2D snooker simulation .............................................................................................135

3D slave node, triangle master segment element ........................................138

3D slave node, quadrilateral master segment element ..............................141

3D slave node, quadrilateral master segment and 2 neighboring nodes element ..............................................................................................................................................142

3D slave triangle and 2 neighboring nodes, triangle master segment element ..............................................................................................................................................144

3D slave triangle, triangle master segment and 2 neighboring nodes element ..............................................................................................................................................147

3D contact analysis ....................................................................................................149

Troubleshooting and New in version ..........................................................................150

AceFEM Troubleshooting ........................................................................................150

New in version .............................................................................................................151

Reference Guide ...................................................................................................................152

Description of Problem ............................................................................................152SMTInputData ...........152

SMTAddDomain .......153

SMTAddMesh ...........154

SMTAddElement ......154

SMTAddNode ...........155

SMTAddEssentialBoundary ..156

SMTAddNaturalBoundary ....158

SMTAddInitialBoundary .......159

SMTMesh ......159

SMTAddSensitivity ...167• Example

Analysis ...........................................................................................................................170

AceFEM Finite Element Environment 3

Page 4: AceFEMManual

SMTAnalysis .170

SMTNewtonIteration 172

SMTNextStep 172

SMTStepBack ...........173

SMTConvergence ......173

SMTDump ....174

SMTRestart ...178

SMTSensitivity ..........178

SMTTask .......178

SMTStatusReport ......179

SMTSessionTime ......180

SMTErrorCheck ........180

SMTSimulationReport ..........181

Postprocessing ............................................................................................................182SMTShowMesh .........182

SMTMakeAnimation .189

SMTResidual .189

SMTPostData 189

SMTData .......190

SMTPut .........191

SMTGet .........194

SMTSave .......194

Data Base Manipulations .........................................................................................194SMTIData ......194

SMTRData ....194

SMTNodeData ..........195• Interpreted nodal data

SMTNodeSpecData ...196

SMTElementData ......196

SMTDomainData ......197

SMTFindNodes .........197

SMTFindElements ....197

SMTSetSolver ...........197• Intel MKL Solver - PARDISO initialization • References

Shared Finite Element Libraries ...........................................................................199SMTSetLibrary .........199

SMTAddToLibrary .. .200

SMTLibraryContents 201

Utilities .............................................................................................................................201SMTScanedDiagramToTable 201

SMTPost .......204

SMTPointValues .......204

SMTMakeDll 205

4 AceFEM Finite Element Environment

Page 5: AceFEMManual

AceFEM Tutorials

AceFEM Preface

AceFEM 2.3Dr. JozÓe Korelc 2006, 2007, 2008, 2009

Ravnikova4, SI-1000, Ljubljana, Slovenia

mail : AceProductsü fgg.uni- lj.si

www.fgg.uni- lj.si êSymechê

The AceFEM package is a general finite element environment designed to solvemulti-physics and multi-field problems. The AceFEM package explores advantagesof symbolic capabilities of Mathematica while maintaining numerical efficiency ofcommercial finite element environments. The main part of the package includesprocedures that are not numerically intensive, such as processing of the user inputdata, mesh generation, control of the solution procedures, graphic post-processing ofthe results, etc.. Those procedures are written in Mathematica language and executedinside Mathematica. The numerical module includes numerically intensive opera-tions, such as evaluation and assembly of the finite element quantities (tangentmatrix, residual, sensitivity vectors, etc.), solution of the linear system of equations,contact search procedures, etc.. The numerical module exists as Mathematica pack-age as well as external program written in C language and is connected with Mathe-matica via the MathLink protocol. This unique capability gives the user the opportu-nity to solve industrial large-scale problems with several 100000 unknowns and touse advanced capabilities of Mathematica such as high precision arithmetic, intervalarithmetic, or even symbolic evaluation of FE quantities to analyze various proper-ties of the numerical procedures on relatively small examples. The AceFEM package

AceFEM Finite Element Environment 5

Page 6: AceFEMManual

comes with a large library of finite elements (solid, thermal, contact,... 2D, 3D,...)including full symbolic input for most of the elements. Additional elements can beaccessed through the AceShare finite element file sharing system. The element ori-ented approach enables easy creation of costumized finite element based applica-tions in Mathematica. In combination with the automatic code generation packageAceGen the AceFem package represents an ideal tool for a rapid development ofnew numerical models.

Acknowledgement

The AceFEM environment is, as it is the case with all complex environments, theresult of scientific cooperation with my colleagues and former students. I would liketo thank Tomaž Šuštar, Centre for Computational Continuum Mechanics d.o.o.,Vandotova 55, Ljubljana, Slovenia for his work on AceFEM and especially imple-mentation of various linear solver packages. I am also indebted to my friends Stanis-law Stupkiewicz and Jakub Lengiewicz, Institute of Fundamental TechnologicalResearch, Swietokrzyska 2, Warszawa, Poland for helpful discussions and implemen-tation of contact search routines.

AceFEM StructureCommercial FE systems have incorporated ten to several hundred different element formulations. This of course can notbe done manually without the use of reusable parts of the code (often element shape functions, material models, pre andpost-processing procedures are written as reusable codes). The complexity of advanced numerical software arises alsofrom other sources which include: necessity for realistic description of physical phenomena involved in industrialproblems, requirements for highly efficient numerical procedures, and the complexity of the data structure. Normallythe complete structure appears inside the FE environment which is typically written in FORTRAN or C language. In thelast decade or so the use of object oriented (OO) approach was considered as the main method of obtaining reusable andextensible numerical software. However, despite its undoubted success in many areas, the OO approach did not gainmuch popularity in the field of finite element methods, and all the main FE systems (ABAQUS, ANSYS, MARC, etc.)are still written in a standard way. Also most of the research work is still based on a traditional approach. One of thereasons for this is that only the shift of complexity of data management has been performed by utilizing OO methods,while the level of abstraction of the problem description remains the same. The symbolic approach can bypass thisdrawback of the OO formulation since only the basic functionality is provided at the global level of the finite elementenvironment which is manually coded, while all the codes at the local level of the finite element are automaticallygenerated. The AceFEM package has been designed in a way that explores advantages of this new approach to thedesign of finite element environments.

The element oriented concept is the basic concept behind the formulation of the AceFEM environment. The idea is todesign a FE environment where code complexity will be shifted out of the finite element environment to a symbolicmodule, which will provide all the necessary formulation dependent codes by automatic code generation. The shiftconcerns the data structures (organization of environment, nodal and element data) as well as numerical algorithms atthe local element level. The traditional definition of the finite element treats the chosen discretization of the unknownfields and a chosen variational formulation as the "definition of the finite element", while different material models thenentail only different implementation of the same elements. This approach requires the creation of reusable code formaterial description and element description. In the present formulation an element will be identified by its discretiza-tion and material models, so no reusable code is needed at the local level. In principle each element has a separatesource file with the element user subroutines. This is the way how the "element oriented" concept can be fully exploitedin the case of multi-field, multi-physic, and multi-domain problems. Usually it is more convenient to have a single

6 AceFEM Finite Element Environment

Page 7: AceFEMManual

in the case of multi-field, multi-physic, and multi-domain problems. Usually it is more convenient to have a singlecomplex symbolic description and to generate several separate elements for various tasks, than to make a very generalelement which covers several tasks.

AceFEM

element 1.dll file

element 2.dll file

element ....dll file

element 2.m file

element ....m file

- data base- evaluation of element quantities- assembly of element contributions- various linear solvers

CDriverCDriver

- Mathematica language- data base in MMA- evaluation of element quantities- assembly of element contributions- MMA linear algebra

MDriverMDriver

- input data processing- mesh generation- solution strategies- command language- graphic post-processing

General proceduresGeneral procedures

element 1.m file

MathematicaMathematica C languageC language

dynamic link

MathLink

AceShareAceShare

- FEM file sharing system- download .dll or .m files

AceFEM

element 1.dll file

element 2.dll file

element ....dll file

element 2.m file

element ....m file

- data base- evaluation of element quantities- assembly of element contributions- various linear solvers

CDriverCDriver

- Mathematica language- data base in MMA- evaluation of element quantities- assembly of element contributions- MMA linear algebra

MDriverMDriver

- input data processing- mesh generation- solution strategies- command language- graphic post-processing

General proceduresGeneral procedures

element 1.m file

MathematicaMathematica C languageC language

dynamic link

MathLink

AceShareAceShare

- FEM file sharing system- download .dll or .m files

AceFEM organization scheme

The AceFEM package is a general finite element environment designed to solve multi-physics and multi-field problems.The AceFEM package explores advantages of symbolic capabilities of Mathematica while maintaining numericalefficiency of commercial finite element environment. Tee AceFEM package is designed to solve steady-state or tran-sient finite element and similar type problems implicitly by means of Newton-Raphson type procedures.

The main part of the package includes procedures that are not numerically intensive such as processing of the user inputdata, mesh generation, control of the solution procedures, graphic post-processing of the results, etc.. Those proceduresare written in Mathematica language and executed inside Mathematica. The second part includes numerically intensiveoperations such as evaluation and assembly of the finite element quantities (tangent matrix, residual, sensitivity vectors,etc.), solution of the linear system of equations, contact search procedures, etc.. The numerical module exists in twoversions.

The basic version called CDriver is independent executable written in C language and is connected with Mathematicavia the MathLink protocol. It is designed to solve industrial large-scale problems with several 1.000.000 unknowns. Theelement subroutines are not linked directly with the CDriver but dynamically when they are needed. Consequently, thereare as many dynamically linked library files (dll file) as is the number of different elements. The dll file is created

AceFEM Finite Element Environment 7

Page 8: AceFEMManual

are as many dynamically linked library files (dll file) as is the number of different elements. The dll file is createdautomatically by the SMTMakeDll function. User can derive and use its own user defined finite elements or it can usestandard elements from the extensive library of standard elements (Accessing elements from shared libraries).

The alternative version called MDriver is completely written in Mathematica's symbolic language. It has advantage thatwe can use advanced capabilities of Mathematica, such as high precision arithmetic, interval arithmetic, or evensymbolic evaluation of FE quantities to analyze various properties of the numerical procedures on relatively smallexamples. The MDriver has the same data structures and command language as the CDriver, but due to the limitedfunctionality and efficiency it should be primary used in element development phase for the problems with less than10.000 unknowns. It also does not support advanced post processing, contact searches, etc..

The AceGen package represents suitable environment for debugging and testing of a new finite element before it isincluded into the commercial finite element environment. For example, the following tests can be performed directly inMathematica:

fl convergence of iterative procedures,

fl different forms of the patch tests,

fl element distortion tests,

fl tests of the element eigenvalues,

fl test of objectivity.

The AceFEM package has laso some basic pre-processing and post-processing functions (SMTMesh, SMTShowMesh).It can be used for the geometries that can be discretized by the structured meshes of arbitrary shape. For a more com-plex geometries the commercial pre/post-processor has to be used. The AceFEM has built-in interface to commercialpre/post-processor GID developed by International Center for Numerical Methods in Engineering, Edificio C1, CampusNorte UPC, Gran Capitan, 08034 Barcelona, Spain, http://www.cimne.upc.es.

The AceFEM environment comes with a small built-in library including standard solid, structural, thermal and contactelements. Additional elements are accessed and automatically downloadable through the AceShare system. The Ace-Share system is a finite element file sharing mechanism built in AceFEM that makes AceGen generated finite elementsource codes available for other users to download through the Internet. The AceShere system enables: browsing the on-line FEM libraries; downloading the finite elements from the on-line libraries; formation of the user defined library thatcan be posted on the internet to be used by other users of the AceFEM system. The AceShare system offers for eachfinite element included in the on-line library: the element home page with basic descriptions, links, authors data, etc.. ,the AceGen template (Mathematica input) for the symbolic description of the element, the element source codes for allsupported finite element environments (FEAP, AceFEM-MDriver, Abaqus, ...), the element Dynamic Link File (dll)used by AceFEM, an additional documentation and benchmark tests. The files are stored on and served by personalcomputers of the users.

The already available AceShare on-line libraries include AceGen templates for the symbolic description of direct andsensitivity analysis of the most finite element formulations that appear in the description of problems by finite elementmethod (steady state, transient, coupled and coupled transient problems). This large collection of prepared Mathematicainputs for a broad range of finite elements can be easily adjusted for users specific problem. The user can use theMathematica input file as a template for the introduction of modifications to the available formulation (e.g. modifiedmaterial model) or combine several Mathematica input files into one that would create a coupled finite element (e.g. theAceGen input files for solid and thermal conduction elements can be combined into new AceGen input file that wouldcreate a finite element for thermomechanical analysis).

8 AceFEM Finite Element Environment

Page 9: AceFEMManual

AceFEM Palettes

Main AceFEM palette.

AceFEM Finite Element Environment 9

Page 10: AceFEMManual

Post-processing palette and mesh display windows.

10 AceFEM Finite Element Environment

Page 11: AceFEMManual

AceShare FEM browser.

AceFEM Finite Element Environment 11

Page 12: AceFEMManual

Standard AceFEM ProcedureThe standard AceFEM procedure is comprised of two major phases:

A) Input data phase

- phase starts with SMTInputData

- mesh input data (Input Data)

- element description (Input Data, the actual element codes have to generated before the analysis by AceGencode generator)

- sensitivity input data ( SMTAddSensitivity )

B) Analysis phase

- phase starts with SMTAnalysis

- solution procedure is executed accordingly to the Mathematica input given by the user (SMTConvergence)

- AceFEM is designed to solve steady-state or transient finite element and related problems implicitly by meansof Newton-Raphson type procedures

- post-processing of the results can be part of the analysis (SMTShowMesh) or done later independently of theanalysis (SMTPut)

Let us consider a simple one element example to illustrate the standard AceFEM procedure. The problem considered issteady-state heat conduction in a three-dimensional domain. The procedure to generate heat-conduction element that isused in this example is explained in AceGen manual section Standard FE Procedure. The element dll file(ExamplesHeatConduction.dll) is also included as a part of installation (in directory$BaseDirectory/Applications/AceFEM/Elements/), thus one does not have to create dll with AceGen in order to run theexample.

Here the AceFEM is used to analyze simple one element example.

This loads the AceFEM package, and prepares input data structures and starts input data section

<< AceFEM`;

SMTInputData @D

Here the domain description is given that defines the name of the element, the source code file with the element subroutines, thematerial data (in this case k0, k1, k2M and the initial value of the heat source Q= 1.

SMTAddDomain@" A", " ExamplesHeatConduction ",

8" k0 ∗" −> 10., " k1 ∗" −> .5, " k2 ∗" −> .1, " Q ∗" −> 1. <D;

12 AceFEM Finite Element Environment

Page 13: AceFEMManual

Here the element, the node coordinates and the boundary conditions of the problem depicted below.

SMTAddElement @" A", 88−0.5, 0, −0.5 <, 81, 0, 0 <, 81, 1.5, 0 <,

80, 1.5, 0 <, 80, 0, 1.1 <, 81, 0, 1 <, 81.35, 1, 1 <, 80, 1, 1 <<D;

SMTAddNaturalBoundary @87, 1 −> 5.5 <D;

SMTAddEssentialBoundary @81, 1 −> 0.1 <, 82, 1 −> 0.2 <, 83, 1 −> 0.3 <, 84, 1 −> 1.1 <D;

This checks the input data, creates data structures and starts the analysis. The SMTAnalysis also compiles the element source files

and creates dynamic link library files (dll file) with the user subroutines (see also SMTMakeDll) or in the case of MDriver reads all

the element source files into Mathematica.

SMTAnalysis @D;

Here the real time and the value of the boundary condition and the heat source multiplier are prescribed. The problem is steady-state so that the real time in this case has no meaning.

SMTNextStep @1, 1 D;

AceFEM Finite Element Environment 13

Page 14: AceFEMManual

Here the problem is solved by the standard quadratically convergent Newton-Raphson iterative method. Observed quadraticconvergence is also a proof that the problem was correctly linearized. This test can be used as one of the code verification tests.

While @SMTConvergence @10^ −12, 10 D, SMTNewtonIteration @D;

SMTStatusReport @SMTPostData @" Temperature ", 8−0.5, 0, −0.5 <DDD;

Tê∆T=1. ê1. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=1.10033

ê3.66682 Iter êTotal =1ê1 Status =0ê8< Tag=0.1

Tê∆T=1. ê1. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=0.0370544

ê0.142921 Iter êTotal =2ê2 Status =0ê8< Tag=0.1

Tê∆T=1. ê1. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=0.0000510625

ê0.000203298 Iter êTotal =3ê3 Status =0ê8< Tag=0.1

Tê∆T=1. ê1. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=8.83286 × 10−11

ê3.5599 × 10−10 Iter êTotal =4ê4 Status =0ê8< Tag=0.1

Tê∆T=1. ê1. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=1.14193 × 10−16

ê4.57125 × 10−16 Iter êTotal =5ê5 Status =0ê8< Tag=0.1

During the analysis we have all the time full access to all environment, nodal and element data. They can be accessed and changedwith the data manipulation commands (see Data Base Manipulations). This gives to AceFEM flexibility that is not shared by otherFE environments.

Here additional step is made, however instead of increasing time or multiplier, the temperature in node 3 is set to 1.5.

SMTNextStep @0, 0 D;

SMTNodeData@3, " Bp", 81.5 <D;

While @SMTConvergence @10^ −12, 10 D, SMTNewtonIteration @D; D;

SMTStatusReport @SMTPostData @" Temperature ", 8−0.5, 0, −0.5 <DD;

Tê∆T=1. ê0. λê∆λ=1. ê0. ˛∆a˛ê˛Ψ˛=7.86125 × 10−15ê3.91155 × 10−14 Iter êTotal =5ê10 Status =0ê8Convergence < Tag=0.1

The SMTSimulationReport command displays vital characteristics of the analysis performed.

SMTSimulationReport @D;

No. of nodes 8No. of elements 1No. of equations 4Data memory HKBytes L 1Solver memory HKBytes L 0No. of steps 2No. of steps back 0Step efficiency H%L 100.Total no. of iterations 10Average iterations êstep 5.Total time HsL 0.28Total solver time HsL 0.Total solver time H%L 0.Total element time HsL 0.Total element time H%L 0.Average time êiteration HsL 0.028Average solver time HsL 0.Average element time HsL 0.USER−IDataUSER−RData

14 AceFEM Finite Element Environment

Page 15: AceFEMManual

Here the SMTShowMesh function displays three-dimensional contour plot of the current temperature distribution. Additionalexamples how to post-process the results can be found in Solution Convergence Test.

SMTShowMesh@" Marks " → True, " Field " → " Tem∗", " Contour " → True D

1

2

3

4

5

6

7

8

1

AceFEM0.1Min.0.2096e1Max.

Tem*

0.3490.5990.8480.109e10.134e10.159e10.184e1

Input DataThe obligatory parts of the input data phase are:

A) The input phase starts with the initialization (see SMTInputData ).

B) The type of the elements and the data common to all elements of the specific type is specified by the SMTAddDo-main command. The actual element codes have to be generated before the analysis by the AceGen code generator ortaken from the AceShare libraries.

C) The node coordinates and the connectivity of nodes for topological mesh can be given by the SMTMesh , theSMTAddNode , and the SMTAddElement commands. AceFEM is an element oriented environment that providesmechanisms for the elements to take active part in construction of the actual mesh. The topological mesh is a base onwhich the actual finite element mesh is constructed. If there are no elements that take active part in construction of themesh, then are the actual mesh and the topological mesh identical.

D) The essential (Dirichlet) and the natural (Neumann) boundary conditions of the problem are specified by the SMTAd-dEssentialBoundary , the SMTAddNaturalBoundary and the SMTAddInitialBoundary commands.

E) If sensitivity analysis is required then the SMTAddSensitivity command specifies the type and the values of thesensitivity parameters.

AceFEM Finite Element Environment 15

Page 16: AceFEMManual

Note that the node numbering is changed after the input data phase due to the process of joining the nodeswhich have the coordinates and the node identification with the same value.

à Example: One element

Here follows the input data for a single element example depicted below.

<< AceFEM`;

SMTInputData @D;

Here are the nodal data and the boundary conditions.

SMTAddNode@8−0.5, 0.1 <, 81.2, −0.3 <, 81.1, 1.3 <, 80.1, 1.4 <D

81, 2, 3, 4 <

SMTAddEssentialBoundary @81, 1 −> 0.015, 2 −> −0.12 <,

82, 2 −> 0.02 <, 83, 2 −> 0.015 <, 84, 1 −> 0.021 <D;

SMTAddNaturalBoundary @82, 1 −> 105<D;

Here are the element nodes and the domain identification.

SMTAddElement @8" patch ", 81, 2, 3, 4 <<D

Here are the element material data, the integration code, and the type of the element. The element name is usually used also for the file name of the file where element subroutines are stored.

SMTAddDomain@8" patch ", " SEPEQ1DFLEQ1IsoHooke", 8" E ∗" −> 3000., " ν ∗" −> 0.3, " t ∗" −> 2. <<D;

Here are the finite element data structures are established. Note that the node numbering is changed after the AMTAnalysis due to the process of joining the nodes which have the coordinates and the node identification with the same value.

SMTAnalysis @D

16 AceFEM Finite Element Environment

Page 17: AceFEMManual

Example: Standard benchmark test for distorted elements<< AceFEM`;

SMTInputData @D;

SMTAddDomainA" A", " SEPSQ1DFLEQ1IsoHooke",

9" E ∗" −> 11. 10 7 , " ν ∗" −> 0.3, " t ∗" −> 0.1 =E;

SMTAddMesh@" A"

, 881, 0.0, −0.2 <, 82, 1.1, −0.2 <, 83, 1.9, −0.2 <, 84, 3.1, −0.2 <, 85, 3.9, −0.2 <, 86, 5.1, −0.2 <, 87, 6.0, −0.2 <, 88, 0.0, 0 <, 89, 0.9, 0 <, 810, 2.1, 0 <, 811, 2.9, 0 <, 812, 4.1, 0 <, 813, 4.9, 0 <, 814, 6.0, 0 <<

, 881, 2, 9, 8 <, 82, 3, 10, 9 <, 83, 4, 11, 10 <,

84, 5, 12, 11 <, 85, 6, 13, 12 <, 86, 7, 14, 13 <<D;

SMTAddNaturalBoundary @" X" 6 & , 2 −> −0.5 D;

SMTAddEssentialBoundary @" X" 0 &, 1 −> 0, 2 −> 0D;

SMTAnalysis @D;

SMTNextStep @1, 1 D;

While @SMTConvergence @10^ −12, 10 D, SMTNewtonIteration @DD;

SMTNodeData@" X" 6 &, " at " DSMTShowMesh@" BoundaryConditions " −> True, " DeformedMesh " −> True, " Scale " −> 1000 D

99−5.77117 × 10−6 , −0.000264499 =, 95.15829 × 10−6 , −0.000264364 ==

AceFEM Finite Element Environment 17

Page 18: AceFEMManual

Analysis PhaseThe standard parts of the analysis phase are:

A) The analysis phase starts with the initialization (see SMTAnalysis ).

B) The AceFEM is designed to solve steady-state or transient finite element and related problems implicitly by meansof Newton-Raphson type procedures. The actual solution procedure is executed accordingly to the Mathematica inputgiven by the user. The details of the iterative solution procedure are given in Iterative solution procedure .

C) The graphic post-processing of the results can be part of the analysis ( SMTPostData , SMTShowMesh) or donelater independently of the analysis (SMTPut).

D) All the data in the data base can be directly accessed from Mathematica and most of the data can be also changedduring the analysis using Data Base Manipulations .

The SMTAnalysis command does the following:

æ checks the correctness of the input data structures;

æ transcripts input data structures into analysis data base structures;

æ compiles the element source files and creates dynamic link library files or in the case of MDriver numerical

module reads all the element source files into Mathematica;

æ performs initialization of the data base structures (see Iterative solution procedure ).

18 AceFEM Finite Element Environment

Page 19: AceFEMManual

Iterative solution procedureSymbol table:

át current iterative value

áp value at the end of previous time (load) step

Bt, Bp boundary conditions

Btè

part of the current boundary conditions vector (Bt) where essential boundary conditions are prescribed bySMTAddEssentialBoundary

Bt part of the current boundary conditions vector (Bt) where natural boundary conditions are prescribed

By default all the unknowns have prescribed natural boundary condition (set to 0), thus Bt:= BtîBtè

. The nonzerovalue of the natural boundary condition can be prescribed by SMTAddNaturalBoundary.

Bi initial boundary conditions

The initial boundary conditions are not stored into the analysis data base. They used for the initialization of theBp vector at the start of the analysis and discarded after.

ap, at global variables with unknown value

apé , até

global variables with prescribed value (essential boundary condition)

ht, hp element specific (transient) variables

The following steps are performed at the beginning at of the analysis:

æ data is set to zero

at=ap=ht=hp=0

æ boundary conditions are set to initial boundary conditions (Bi) prescribed by SMTAddInitialBoundary

Bt:=Bi

Bp:=Bi

The following steps are performed at the beginning of the time or multiplier increment:

æ global variables at the end of previous step are reset to the current values of global variables

ap:=at

æ boundary conditions at the end of previous step are reset to the current values of boundary conditions

Bp:=Bt

The following steps are performed for each iteration:

æ global vector R and global matrix K are initialized

R:=0, K:=0

æ boundary conditions are updated as follows:

AceFEM Finite Element Environment 19

Page 20: AceFEMManual

boundary conditions are updated as follows:

the current boundary value is calculated as Bt:= Bp+Dl dB, where Dl is the multiplier increment

essential boundary conditions are set até

:= Bté

natural boundary conditions are added to the global vector R:=R+Bt

æ user subroutine "Tangent and residual" is called for each element,

the element tangent matrix Ke is added to the global matrix K:=K+Ke,

element residual Ye is taken from the global vector R:=R-Ye

æ set of linear equations is solved K Da=R,

æ solution is incremented at:= at+Da.

à Example: Bending of the columnCalculate the typical load/deflection curve of the column subjected to the constant horizontal force H=10 and variablevertical force V=-l 10.

<< AceFEM`;

SMTInputData @D;

SMTAddDomain@" Ω", " SEPSQ2DFHYQ2NHookeA", 8" E ∗" −> 21 000, " ν ∗" −> 0.3 <D;

SMTAddEssentialBoundary @ " Y" 0 &, 1 −> 0, 2 −> 0D;

SMTAddNaturalBoundary @ " X" 0 && " Y" 20 &, 2 −> −10D;

SMTAddInitialBoundary @ " X" 0 && " Y" 20 &, 1 −> 10D;

SMTMesh@" Ω", " Q2", 820, 5 <, 8881, 0 <, 81, 20 <<, 88−1, 0 <, 8−1, 20 <<<D;

SMTAnalysis @D;

20 AceFEM Finite Element Environment

Page 21: AceFEMManual

SMTShowMesh@" BoundaryConditions " → True D

λucurve = 880, 0 <<;

uσcurve = 880, 0 <<;

SMTNextStep @1, .1 D;

While @While @step = SMTConvergence @10^ −8, 15, 8" Adaptive ", 8, .0001, 1, 10 <D,

SMTNewtonIteration @D; D;

If @Not @step @@1DDD,

SMTShowMesh@" DeformedMesh " → True, " Field " → " Syy ",

" Show" → " Window" 8" Animation ", " column " <, " BoundaryConditions " → True D;

AppendTo @λucurve , 8SMTData@" Multiplier " D, SMTPostData @" u", 80, 20 <D<D;

AppendTo @uσcurve , SMTPostData @8" u", " Syy " <, 80, 10 <DD;

D;

If @step @@4DD === " MinBound ", SMTStatusReport @" Error: ∆λ < ∆λmin " D; D;

step @@3DD, If @step @@1DD, SMTStepBack @D; D;

SMTNextStep @1, step P2TDD;

AceFEM Finite Element Environment 21

Page 22: AceFEMManual

ListLinePlot @λucurve , PlotRange → All, Filling → Axis,

AxesLabel −> 8" λ", " u" <, PlotMarkers → Automatic DListLinePlot Auσcurve , PlotRange → All, Filling → Axis,

AxesLabel −> 9" u", " σyy " =, PlotMarkers → Automatic E

SMTMakeAnimation @" column " D

22 AceFEM Finite Element Environment

Page 23: AceFEMManual

à Example: constant increment

This is a path following procedure with a constant multiplier increment (the multiplier increment runs from 0 to 1 in 10 steps).

Do@SMTNextStep @1, .1 D;

While @SMTConvergence @10^ −8, 10 D, SMTNewtonIteration @D; D;

, 8i, 1, 10 <D

AceFEM Finite Element Environment 23

Page 24: AceFEMManual

à Example: adaptive increment

This is a path following procedure with an adaptive multiplier increment (the multiplier increment runs from 0 to 10 with an initialincrement 0.1, maximal increment 0.2 and minimal increment 0.001).

SMTNextStep @1, 0.1 D;

While @While @step = SMTConvergence @10^ −8, 10, 8"Adaptive", 8, 0.001, 0.2, 10. <D,

SMTNewtonIteration @D; D;

step P3T, If @step P1T, SMTStepBack @D; D;

SMTNextStep @1, step P2TDD

à Example: adaptive increment with graphics and analysis

This is a path following procedure with an adaptive multiplier increment (the multiplier increment runs from 0 to 10 with an initialincrement 0.1, maximal increment 0.2 and minimal increment 0.001). Deformed mesh is displayed after each completed incrementinto the post-processing window. The list of points graph is also collected during the analysis.

graph = 8<;

SMTNextStep @1, 0.1 D;

While @While @step = SMTConvergence @10^ −8, 10, 8"Adaptive", 8, 0.001, 0.2, 10. <D,

SMTNewtonIteration @D; D;

If @step P4T === "MinBound", SMTStatusReport @" ∆λ < ∆λmin" D; D;

If @Not @step P1TD,

SMTShowMesh@"DeformedMesh" → True, "Show" −> "Window" D;

AppendTo @graph, 8SMTData@"Multiplier" D, SMTPostData @"Sxx", 8.2, .5 <D<D;

D;

step P3T, If @step P1T, SMTStepBack @D; D;

SMTNextStep @1, step P2TDD;

ListLinePlot @graph D

24 AceFEM Finite Element Environment

Page 25: AceFEMManual

Data Base ManipulationsThe SMTAnalysis command transcripts input data structures into analysis data base structures. The analysis data basestructures can be accessed and changed during the analysis.

æ environment data (see SMTIData , SMTRData , );

æ node data (see SMTNodeData , Node Data );

æ node specification data (see SMTNodeSpecData , Node Specification Data );

æ element data (see SMTElementData , Element Data );

æ element specification data (see SMTDomainData , Domain Specification Data );

æ tangent matrix nad residual related to the whole structure as well as to the particular element (see SMTData );

æ method used to solve linear system of equations during the iterative procedure (see SMTSetSolver ).

The user can interactively change during the analysis:

æ all environment data;

æ node coordinates;

æ values of the essential nad natural boundary conditions and all unknowns of the problem;

æ elements nodes;

æ material data;

æ elements history variables.

AceFEM Finite Element Environment 25

Page 26: AceFEMManual

Selecting Nodes

form selectednodes

8in1,in2,…inN< N nodes with the node indecesin1,in2,…inN

Hnote that node index can be changed due tothe "Tie" command after theSMTAnalysiscommandL

i_Integer ª 8i<crit_Function nodes for which testcrit@xi ,yi ,zi,nIDiD yields True

8"Find",X,Y,Z,nID< search for node with the coordinates8X,Y,Z< and node identificationnID

8"Find","ALL",Y ,Z,nID< search for all nodes with the coordinates yiªY, ziªZ,arbitrary x coordinate and node identificationnIDHother combinations are alsopossible e.g.8" Find ",X ,"ALL","ALL",nID<L

8"Find",X,Y,Z< search for all nodes with the coordinates xiªX,yiªY, ziªZ and arbitrary identificationª 8X,Y,Z,"ALL"<

8"Find",X,Y< search for all nodes with the coordinates xiªX, yiªYª 8X,Y,"ALL","ALL"<

8"Find",X< search for all nodes with the coordinates xiªXª 8X,"ALL","ALL","ALL" <

8"Find", crit< ª crit

Selecting nodes for 3D problems.

Many functions require as input a list of nodes on which certain action is applied. The parameter that is used to selectnodes can be a list of node indeces, coordinates of the nodes or a pure function. The simbol "ALL" or simply emptyspace can be used insted of the coordinates of the nodes. The string "ALL" means that boundary condition is prescribedfor all nodes with the given coodinate or node identification.

The parameter crit is a pure function applied to each node in turn. Nodes for which test function crit returns True areselected. The standard Mathematica symbols for the formal parameters of the pure function (#1,#2,#3,..) can bereplaced by the strings representing coordinates "X","Y","Z", and the node identification "ID".

Examples: "X"==5 && "Z"==2 & ª "Find",5,"ALL",2 ª "Find",5, ,2 ª "Find","X"==5 && "Z"==2 & ª"Find",#1==5 && #3==2&

The number of coordinates is reduced for 2D and 1D problems as follows.

form explanation

8" Find",X ,Y,nID< sets essential or natural boundary condition for the nodewith the coordinates8X,Y< and node identificationnID

8" Find",crit < nodes for which testcrit@xi ,yi , nIDiD yields True

Selecting nodes for 2D problems.

26 AceFEM Finite Element Environment

Page 27: AceFEMManual

form explanation

8" Find",X ,nID< sets essential or natural boundary condition for the nodewith the coordinates8X,Y< and node identificationnID

8" Find", crit < nodes for which testcrit@xi , nIDiD yields True

Selecting nodes for 1D problems.

Selecting Elements

form selectedelements

8ie1,ie2,…ieN< N elements with the element indecesie1,ie2,…ieN

i_Integer ª 8i<dID all elements with domain identificationdID

crit_Function selection of elements with the nodesfor which testcrit@xi ,yi ,zi,nIDiD yields True

Selecting nodes for 3D problems.

Many functions require as input a list of elements on which certain action is applied. The parameter that is used to selectelements can be a list of element indeces, domain identification or pure function.

The parameter crit is a pure function applied to all nodes of the element in turn. Elements for which all nodes returnTrue are selected. The standard Mathematica symbols for the formal parameters of the pure function (#1,#2,#3,..) canbe replaced by the strings representing coordinates "X","Y","Z", and the node identification "ID".

Examples: "X"<5 && "Z">2 &

Implementation Notes for Contact ElementsContact section has been contributed by Jakub Lengiewicz,Institute of Fundamental Technological Research-,Warszawa,Poland.

The contact support in AceGen is based on a particular scheme, which will be presented below. The basic part of thescheme is an element. We use the special kind of elements in AceGen (a contact elements) to formulate the contactlaws. We make a distinction there in the contact elements for slave and master part. The slave part is defined directly asthe system covers the bodies surfaces with contact elements. The master part is a group of special kind of nodes ( NodeSpecification Data) which are considered as empty slots where another nodes are placed during the evaluation (due to aglobal search routine).

Such an element must provide additional information required for global search routine purposes:

- contact type for slave and master part separately (see table below) put into SMSCharSwitch array in SMSTem-plate procedure

- information, that the element should be considered as contact element -- "ContactElement" string put intoSMSCharSwitch array

- SMSStandardModule["Nodal information"] describing the actual and previous positions of all integrationpoints (slave nodes)

AceFEM Finite Element Environment 27

Page 28: AceFEMManual

SMSTemplate@ ....,"SMSCharSwitch"->8slave part contact type, master part contact type,"ContactElement"<, ...D

slave part contact types " CTD2N1 "- one 2 D node" CTD2L1 " - one 2 D line" CTD3V1 " - one 3 D node" CTD3P1 "- one 3 D triangle" CTD3S1 "- one 3 D quad

master part contact types "CTNULL"- no nodes" CTD2N1 " - one 2 D node" CTD2L1 " - one 2 D line" CTD3V1 " - one 3 D nodeHvertexL" CTD3P1 "- one 3 D triangle" CTD3S1 "- one 3 D quad

Contact types supported by the system

It is possible to extend each contact type (except CTNULL) to attach also neighboring nodes. You do this appending"DN<i>" string to the contact type, where <i> is a number of dummy slots prepared for each node's neighborhood. Thusyou have to define additional (i*NumberOfSlaveNodes) slots if you extend the slave part or(i*NomberOfMasterNodes*NumberOfIntegrationPoints) slots in case of extending master part.

NOTE: the number of neighboring nodes may vary during analysis, while the number of slots in element is strictlydefined by "DN<i>" flag. The question is: what the system puts into unused dummy slots. The answer is: the mostrecent neighbor found for given node. The reason is that the common use of neighboring nodes is to calculate thenormal vectors. If we put dummy node instead of the last found, the element code would be more complicated becauseof if/else statements.

NOTE: from the same reasons as above, there might be the situation where there are more neighboring nodes found thanthe number of slots in contact element. In such a situation the slots are filled with a natural order until it is possible.There is only one exception to this procedure: the last slot is always reserved for the last found neighboring node.

Nodes position in the contact element (general grouping scheme.)

8type of slave, type of master< Detailed numbering scheme

8" CTD2 N1 "," CT NULL "<

28 AceFEM Finite Element Environment

Page 29: AceFEMManual

8" CT D2 N1 "," CTD2 L1 "<

8" CTD2 L1 "," CTD2 L1 "<

8" CTD2 L1DN1 "," CTD2 N1DN1 "<

8" CTD2 L1DN1 "," CTD2 L1DN1 "<

AceFEM Finite Element Environment 29

Page 30: AceFEMManual

8" CTD3 V1 "," CTD3 P1 "<

8" CTD3 V1DN3 "," CTD3 S1 "<

8" CTD3 V1DN4 "," CTD3 S1DN2 "<

Position of nodes in the contact element (detailed numbering scheme for choosen examples.)

30 AceFEM Finite Element Environment

Page 31: AceFEMManual

After definition of the contact element we may proceed with the analysis. In particular contact system, there are severalbodies which may come into the contact. Each of them has its own boundary (boundaries) where the contact elementsmust be placed. We need to apply some extra parameters to SMTMesh procedure to specify the body name to which themesh belongs and the list of domains (contact domains in our case) which will be used to cover the surface of the body.

By default ("ContactPairs"->Automatic) the lexicographical order of BodyID's is used by the global search routine (inmaster-slave approach): for each surface node taken from particular body it searches for the closest segment on thesurface of bodies which ID's are "greater". So slave bodies have "lower" ID's than master bodies. All possible combina-tions of bodies are checked.

The SMTAnalysis option ContactPairs-> 99slaveBodyID1, masterBodyID1=, 9slaveBodyID2, masterBodyID2=, ...=specifies the pairs slave-body/master -body for which the possible contact condition is checked.

After SMTAnalysis one may need to provide some additional coefficients for global search routine purpose. We setupthem as (see Real Type Environment Data) :

Default form Description Default value

SMTRData@"ContactSearchTolerance",toleranceD

contact search tolerance for global search routine. 0.001 SMTRData@"XYZRange"D

Additional environmental data for contact search purposes.

Then, calling the SMTNewtonIteration[] procedure, the global search routine is executed to search for contact pairsand, eventually, update the information in elements' dummy slots.

NOTE: it is important to cover with contact elements also the body, which is "master" to all the others. Such an ele-ments are needed to calculate the actual positions of nodes (integration points) on the surface of this body. It is enoughto have only "Nodal information" subroutine defined there. In this case we may set the master part contact type as"CTNULL".

Function name Description

SMTContactData@D prints out the actual contact stateHnode->segment mappingLSMTContactSearch@D manually runs the global contact search routine

Contact related functions.

AceFEM Finite Element Environment 31

Page 32: AceFEMManual

General Formulation of Transient Coupled Non-linear SystemsIn order to make symbolic formulation of continuum problems general and simple we need a clear mathematicalformulation at the highest abstract level possible. A typical procedure for solving coupled transient non-linear problemswith FE method is presented in figure below. The AD mark indicates where the automatic differentiation procedure canbe used. In addition to the large number of global degrees of freedom there can be several types of internal degrees offreedom. To avoid locking problems mixed variation principles can be employed. This leads to additional degrees offreedom, defined locally at the element level. They are eliminated by static condensation. The description of complexphysical behavior requires internal variables, defined at every point of the domain (in the discretized case at everynumerical integration point). The associated non-linear equations are solved by the iterative/sub-iterative procedureusing an additional iterative loop for every integration point.

For the derivation of the corresponding formulae for direct and sensitivity analysis of wide range of problems a generalsymbolic formulation of transient coupled non-linear systems can be used (more detailed description can be found in P.Michaleris, D.A. Tortorelli and C.A. Vidal, "Tangent operators and design sensitivity formulations fortransient non-linear coupled problems with applications to elastoplasticity", Int. J. Num. Meth. Engng, 37,2471-2499, (1994)). The element stiffness matrix, the residual and the sensitivity terms must be evaluated consistentlywith the numerical procedures (so called consistent or algorithmic tangent modulus). The development of the presentedstructure is required for the reasons of efficiency.

Let a be a vector of global element parameters, Y a set of global equations, b a vector of unknown local parameters, F

a set of local equations, f an arbitrary sensitivity parameter, Da

Df a sensitivity of global variables with respect to parame-

ter f, Db

Df a sensitivity of local variables with respect to parameter f, D

èY

Df an independent sensitivity pseudo-load vector,

DèF

Df a dependent sensitivity pseudo-load vector, t indicates the current time step , p the previous time step and i is an

iteration counter. Procedures for the direct and the sensitivity analysis of the steady state, transient and transient couplednon-linear systems are presented in the following tables.

32 AceFEM Finite Element Environment

Page 33: AceFEMManual

ui

vi

i

αi

Global level:• several millions of d.o.f.• AD is not usable• several MB of code

Local level of FE:• <100 d.o.f• 10-200 Kb of code• AD for ΨΨΨΨ and KΨΨΨΨ

Internal parameters:• <100 internal d.o.f• AD for ΨΨΨΨαααα

and Kαααα• static condensation.

Integration point level:• <100 internal d.o.f• consistent linearisation• AD for ΦΦΦΦ and

Element description:• coordinate transformations• AD for the element quantities• ...

Direct analysis Sensitivity analysis

ti

ti

ti

ti

ti

ti

ti

tit

i

tt

aaa

0ΨaK

K

0aΨ

Ψ

Ψ

∆+=

=+∆

∂∂=

=

+ :

)(

1

φφ

φφ

D

D

D

D ttt

tt

ΨaK

0aΨ

Ψ−=

=)),((

Direct and sensitivity analysis of steady state problems.

AceFEM Finite Element Environment 33

Page 34: AceFEMManual

Direct analysis Sensitivity analysis

ti

ti

ti

ti

ti

ti

ti

tit

i

tt

aaa

0ΨaK

K

0aΨ

Ψ

Ψ

∆+=

=+∆

∂∂=

=

+ :

)(

1

)(

)),(),((

φφφ

φφφ

D

D

D

D

D

D

D

D tp

p

tt

ptt

ΨaaΨa

K

0aaΨ

Ψ+−=

=

Direct and sensitivity analysis of transient problems.

Local level- direct analysis Global level-direct analysis

tj

tj

tj

ti

tj

tj

tj

tit

j

tt

bbb

0ΦbK

K

0bΦ

Φ

Φ

∆+=

=+∆

∂∂=

=

+ :

)(

1

ti

ti

ti

ti

ti

ti

ti

tit

i

ti

ti

ti

ti

ti

tti

tttt

aaa

0ΨaK

K

ab

ab

K

0abaΨ

Ψ

Ψ

Φ

∆+=

=+∆

∂∂=

∂∂

∂−=∂∂

=

+ :

))(,(

1

Global level-sensitivity analysis Local level-sensitivity analysis

( )

++

∂∂

++−=

=

=

−Φ

φφφ

φφφφ

φφ

φ

D

D

D

D

D

D

D

D

D

D

K

D

D

D

D

D

D

D

D

D

D

D

D

D

D

D

D

p

p

tp

p

tt

tt

t

p

p

tp

p

ttt

ttt

ptpt

a

a

Ψa

a

ΦΦ

ΨbbΨa

aΨΨ

ΨaK

0bbaaΨ

Ψ

1

~

~

~

~),,,,(

+

+

+−=

=

=

Φ

φφ

φφφ

φφ

φ

D

D

D

D

D

D

D

D

D

D

D

D

D

D

D

D

D

D

D

D

p

p

tp

p

t

tt

t

tt

ttt

ptpt

bbΦa

ΦaaΦΦ

ΦbK

0bbaaΦ

~

~

~

~),,,,(

Direct and sensitivity analysis of coupled transient problems.

34 AceFEM Finite Element Environment

Page 35: AceFEMManual

Semi-analytical solutionsSemi-analytical solution of the finite element problem is a solution of the problem where the results are expressed as apower series expansion with respect to one or several parameters of the problem. The expansion parameters, the expan-sion point and the order of the power series expansion is specified by the SMTInputData options "SeriesData" and"SeriesMethod" (see SMTInputData). In the case of the full multivariate power series expansion the number of termsgrows exponentially. The number of terms can be reduced by the reduced expansion. Three types of reduces expansion("Lagrange", "Pascal", and "Serendipity") are available as depicted in a table below.

2 2 2 2 2 2

3 2 2 3 3 2 2 3 3 2 2 3

4 3 2 2 3 4 4 3 2 2 3 4 4 3 3 4

4 3 2 2 3 4 4 4

4 2 3 3 2 4

4 3 3 4

4 4

... ...... ... ... ... ... ... .

... ...

... ...

... ...

(

1

(

1

)

1

)Lagrange Pascal

α β α β α βα αβ β α αβ β α αβ β

α α β αβ β α α β αβ β α α β αβ βα α β α β αβ β α α β α β αβ β α α β αβ β

α β α β α β αβ α β αβα β α β α β

α β α βα β

... ...

(Serendipity)

expansion description

"Lagrange" full multivariate series expansion

"Pascal" multivariate series expansion in a form of Pascal triangle

8"Serendipity",n< multivariate series expansion withthe secondary terms up to thenth power

Possible values for the "SeriesMethod" option of the SMTInputData command.

AceFEM Finite Element Environment 35

Page 36: AceFEMManual

à Example: Bending of the sinusoidal double skin cladding

Skin

Foam

The goal of the presented example is to find a semi-analytical linear elastic solution for the bending of the sinusoidaldouble skin cladding. The solution employes the fifth order power series expansion with respect to thickness of thefoam and the amplitude of the waves. The "Serendipity" type multivariate series expansion with the secondary terms upto the second power is used. The symbol a is used for the foam thickness and the symbol b for the amplitude of thewaves .

36 AceFEM Finite Element Environment

Page 37: AceFEMManual

<< AceFEM`;

L = 400.; b = 100; hwave0 = 10; nwave = 10;

T0foam = L ê 200; T0steel = 0.2; qz0 = b 2.4 10 −4 ;

nx = 60; ny = 6; δh = 2 T0steel ê ny 0.5; dx = L ê H10. Hhwave0 + T0foam LL;

Tfoam = Series @α, 8α, T0foam , 5 <D; Tsteel = T0steel ;

hwave = Series @β, 8β, hwave0 , 5 <D; qz = qz0 ;

SMTInputData @" NumericalModule " → " MDriver ",

" SeriesData " → 88α, T0foam , 5 <, 8β, hwave0 , 5 <<,

" SeriesMethod " → 8" Serendipity ", 2 <D;

SMTAddDomain@" Foam", " SEPSQ1DFLEQ1IsoHooke",

8" E ∗" −> 500., " ν ∗" −> 0.48, " t ∗" −> b<D;

SMTAddDomain@" Steel ", " SEPSQ1DFLEQ1IsoHooke",

8 " E ∗" −> 21 000, " ν ∗" −> 0.3, " t ∗" −> b<D;

SMTMesh@" Foam", " Q1", 8nx , ny<,

8 Table @8x, hwave ê 2 Sin @nwave π x ê LD − Tfoam ê 2< , 8x, 0, L, dx<D,

Table @8x, hwave ê 2 Sin @nwave π x ê LD + Tfoam ê 2< , 8x, 0, L, dx<D<D;

SMTMesh@" Steel ", " Q1", 8nx , 2 <,

8Table @ 8x, hwave ê 2 Sin @nwave π x ê LD + Tfoam ê 2 <, 8x, 0, L, dx<D,

Table @ 8x, hwave ê 2 Sin @nwave π x ê LD + Tfoam ê 2 + Tsteel <, 8x, 0, L, dx<D<D;

SMTMesh@" Steel ", " Q1", 8nx , 2 <,

8Table @ 8x, hwave ê 2 Sin @nwave π x ê LD − Tfoam ê 2 − Tsteel <, 8x, 0, L, dx<D,

Table @ 8x, hwave ê 2 Sin @nwave π x ê LD − Tfoam ê 2 <, 8x, 0, L, dx<D<D;

SMTAddNaturalBoundary @Abs@ hwave ê 2 Sin @nwave π " X" ê LD + Tfoam ê 2 + Tsteel − " Y" D <= δh &,

2 −> −qz L ê nxD;

SMTAddEssentialBoundary @H" X" == 0 »» " X" == LL &, 1 −> 0., 2 −> 0. D;

SMTAnalysis @D;

SMTNextStep @1, 1 D;

SMTNewtonIteration @D;

Here is the deflection in the middle of the beam retrieved from the data based and transformed into normal form. Thetransformation to the normal form (Normal[i]) is necessary for the symbolic manipulations later.

w = Normal @ SMTNodeData@" X" L ê 2 &, " at " D@@1, 2 DDD

−0.632351 + 0.233877 H−2. + αL − 0.0364066 H−2. + αL2 −

0.00448821 H−2. + αL3 + 0.00435552 H−2. + αL4 − 0.0012384 H−2. + αL5 +

I0.00835702 − 0.00977376 H−2. + αL + 0.00342247 H−2. + αL2 − 0.000207154 H−2. + αL3 −

0.000314466 H−2. + αL4 + 0.000152023 H−2. + αL5M H−10. + βL +

I0.000352781 − 0.000126855 H−2. + αL − 0.0000726406 H−2. + αL2 + 0.000050776 H−2. + αL3 −

6.11087 × 10−6 H−2. + αL4 − 5.64683 × 10−6 H−2. + αL5M H−10. + βL2 +

I−9.40668 × 10−6 + 0.0000266261 H−2. + αL − 0.0000118708 H−2. + αL2M H−10. + βL3 +

I−4.12175 × 10−7 − 4.01097 × 10−7 H−2. + αL + 7.85323 × 10−7 H−2. + αL2M H−10. + βL4 +

I9.00983 × 10−9 − 4.28775 × 10−8 H−2. + αL + 1.10114 × 10−8 H−2. + αL2M H−10. + βL5

wc = w ê. α −> T0foam ê. β −> hwave0

−0.632351

AceFEM Finite Element Environment 37

Page 38: AceFEMManual

Plot3D @w, 8α, 0.1 T0foam , 2 T0foam <, 8β, 0 , 3 hwave0<D

The "ShowFor" option of the SMTShowMesh command can be used to depict mesh and results for arbitrary values ofparameters.

Show@SMTShowMesh@" BoundaryConditions " −> True, " ShowFor " −> 8α −> 0.1 T0foam , β −> 0<D,

SMTShowMesh@" DeformedMesh " −> True,

" Scale " −> 100, " ShowFor " −> 8α −> 0.1 T0foam , β −> 0<DD

Show@SMTShowMesh@" BoundaryConditions " −> True,

" ShowFor " −> 8α −> 3 T0foam , β −> 3 hwave0<D, SMTShowMesh@" DeformedMesh " −> True,

" Scale " → 100, " ShowFor " −> 8α −> 3 T0foam , β −> 3 hwave0<DD

38 AceFEM Finite Element Environment

Page 39: AceFEMManual

User Defined TasksThe standard task performed by the finite element environment are evaluation of the global residual and tangent matrix,solution of the resulting system of linear equations and postprocessing of the results. Additionally to the standard tasks,user can also define and execute user defined tasks. The process of defining and executing the user defined tasks iscomposed of:

æ definition of the standard user subroutine "Tasks" as a part of element definition with AceGen (see also Standarduser subroutines);

æ generation of the element source file;

æ definition of the AceFEM input data;

æ at any point of the analysis the user defined tasks can be executed by the SMTTask command.

The user defined tasks can be used to perform various tasks that requires the assembly of the results over a completefinite element mesh or over a part of the mesh.

à Example: Evaluating Mass and mesh distortion of arbitrary quadrilateral 2D mesh

Generation of the element source code

Create an 2D quadrilateral element that would perform two tasks:

a) Calculate the mass m= ŸAr „A where A is a complete mesh or a part of the mesh and r is a density.

b) Calculate the mesh distortion in an arbitrary point of the mesh. Mesh distortion is defined by

d =ArcTangAr,hE-ArcTangAr,xE-pê2

pê2 where x,h are the reference coordinates of the element.

The first task returns a real type scalar value and is, accordingly to the definitions defined in User Defined Tasks, "type1" task. The second task calculates the distortion in a integration points of the element and is a "type 3" task.

AceFEM Finite Element Environment 39

Page 40: AceFEMManual

<< " AceGen` ";

SMSInitialize @" ExamplesTasks2D ", " Environment " −> " AceFEM" D;

SMSTemplate @" SMSTopology " → " Q1",

" SMSCharSwitch " → 8" Mass", " MeshDistortion " <,

" SMSGroupDataNames" −> 8" ρ −density ", " t −thickness " <,

" SMSDefaultData " −> 81, 1 <D;

SMSStandardModule @" Tasks " D;

task £ SMSInteger @Task$$ D;

SMSIf @task < 0

, SMSSwitch @task

, −1,

SMSExport @81, 0, 0, 0, 1 <, TasksData$$ D;

, −2,

SMSExport @83, 0, 0, 0, SMSInteger @es$$ @" id ", " NoIntPoints " DD<, TasksData$$ D;

D;

, 8ρ, t < £ Array @SMSReal@es$$ @" Data ", DD &, 2 D;

Xi £ SMSReal@Array @nd$$@1, " X", 1 D &, SMSNoNodesDD;

Yi £ SMSReal@Array @nd$$@1, " X", 2 D &, SMSNoNodesDD;

SMSDo@8ξ, η, ζ, wGauss< ¢ Array @SMSReal@es$$ @" IntPoints ", 1, IpIndex DD &, 4 D;

Ni £ 1 ê 4 8H1 − ξL H1 − ηL, H1 + ξL H1 − ηL, H1 + ξL H1 + ηL, H1 − ξL H1 + ηL<;

X£ SMSFreeze@Ni . Xi D; Y£ SMSFreeze@Ni . Yi D;

Jm£ SMSD@8X, Y<, 8ξ, η<D; Jd £ Det @JmD; J0 £ SMSReplaceAll @Jd , 8ξ −> 0, η −> 0<D;

SMSSwitch @task

, 1,

SMSExport @Jd t ρ, RealOutput$$ @1D, " AddIn " → True D;

, 2,

r £ 8X, Y<;

r ξ £ SMSD@r , ξD; r η £ SMSD@r , ηD;

dist £ SMSAbs@HArcTan @@ r ηL − HArcTan @@ r ξL − Hπ ê 2LD ê Hπ ê 2L;

SMSExport @dist , RealOutput$$ @IpIndex DD;

D;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<D;

DSMSWrite @D;

Method : Tasks 31 formulae, 350 sub −expressions

@1D File created : ExamplesTasks2D . c Size : 5168

Example: Sinusoidal double skin cladding

Find the mass and mesh distortion of the sinusoidal double skin cladding.

40 AceFEM Finite Element Environment

Page 41: AceFEMManual

<< AceFEM`;

L = 80.; b = 100; hwave0 = 30; nwave = 2; T0foam = 5; T0steel = 1;

nx = 120; ny = 6; δh = 2 T0steel ê ny 0.5; dx = L ê H10. Hhwave0 + T0foam LL;

Tfoam = T0foam ; Tsteel = T0steel ; hwave = hwave0 ;

SMTInputData @D;

SMTAddDomainA" Foam", " ExamplesTasks2D ", 9" ρ ∗" −> 10 10 −6 , " t ∗" −> b=E;

SMTAddDomainA" Steel ", " ExamplesTasks2D ", 9" ρ ∗" −> 7830 10 −6 , " t ∗" −> b=E;

SMTMesh@" Foam", " Q1", 8nx , ny<,

8 Table @8x, hwave ê 2 Sin @nwave π x ê LD − Tfoam ê 2< , 8x, 0, L, dx<D,

Table @8x, hwave ê 2 Sin @nwave π x ê LD + Tfoam ê 2< , 8x, 0, L, dx<D<D;

SMTMesh@" Steel ", " Q1", 8nx , 1 <,

8Table @ 8x, hwave ê 2 Sin @nwave π x ê LD + Tfoam ê 2 <, 8x, 0, L, dx<D,

Table @ 8x, hwave ê 2 Sin @nwave π x ê LD + Tfoam ê 2 + Tsteel <, 8x, 0, L, dx<D<D;

SMTMesh@" Steel ", " Q1", 8nx , 1 <,

8Table @ 8x, hwave ê 2 Sin @nwave π x ê LD − Tfoam ê 2 − Tsteel <, 8x, 0, L, dx<D,

Table @ 8x, hwave ê 2 Sin @nwave π x ê LD − Tfoam ê 2 <, 8x, 0, L, dx<D<D;

SMTAnalysis @D;

Here the mass if the structure is evaluated.

SMTTask@" Mass" D

125.68

The mass if the structure can as well be calculated as a sum of the mass of the steel and the mass of the foam.

SMTTask@" Mass", " Elements " −> " Foam" D + SMTTask@" Mass", " Elements " −> " Steel " D

125.68

Here the distortion of the mesh is calculated for all integration points, extrapolated to the nodes and depicted by theSMTShowMesh command.

AceFEM Finite Element Environment 41

Page 42: AceFEMManual

SMTShowMesh@" Field " → SMTTask@" MeshDistortion " DD

Here the distortion of the mesh is calculated for all integration points in the neigborhood of the given spatial positionL/2,0 and extrapolated to the given spatial position.

SMTTask@" MeshDistortion ", " Point " → 8L ê 2, 0 <D

0.551796

Parallel AceFEM computationsThe AceFEM based finite element simulations can be accelerated by utilizing three types of parallelization:

A) the procedure used to collect the contributions of individual finite elements to the global matrices and vectors isfully parallelized for the multi-core environments (parallelization of the assembly procedure)

B) the solution to the system of linear equations performed by the PARDISO linear solver is parallelized for the multi-core environments (parallelization of the linear solver)

C) several finite elements simulations can be performed in parallel on multi-core or grid environments using Mathemat-ica 7.0 parallel computing capabilities (parallelization of the FE simulations)

The user can control the type A and the type B parallelization by setting the SMTInputData option "Threads" (seeSMTInputData ). The "Threads" option limits the number of processors used for the parallel execution on multi-coresystems.

The user controls the type C parallelization by launching a specified number of subkernels (see LaunchKernels).

Using all three types of parallelization on a single multi-core environments is obviously not an optimal parallelizationstrategy. The type A and the type B parallelization can be suppressed by setting SMTInputData option "Threads" to 1(SMTInputData["Threads" Ø 1]).

The highest speedup is achieved when AceFEM is run on a grid of multi-core machines. The type C parallelization isthen used to run several simulations in parallel on the nodes of the grid. Additionally, the assembly procedures and thelinear solver of each simulation is also parallelized.

à Example: Parallelization of FE simulations

First one must lunch the AceFEM on a master kernel.

Get @" AceFEM`" D;

42 AceFEM Finite Element Environment

Page 43: AceFEMManual

The user interface (palettes, menus, etc. ) is not available on remote kernels. The Get["AceFEM`Remote`"] command loads the AceFEM package without the user interface on all available kernels. For more details how to select and set specific number of kernels see Parallel Computing.

kernels = ParallelEvaluate @SetDirectory @$HomeDirectory D;

Get @" AceFEM`Remote` " D;

$KernelID D81, 2, 3, 4, 5, 6, 7, 8 <

Calculate the typical load/deflection curve of the 20×2×2 hyperelastic column subjected to the constant horizontal forceH = 10 and variable vertical force V = -l 10 for the elastic modulus ranging from 10000 to 30000.

The ParallelTable commands executes the given AceFEM input data and the analysis procedure in parallel on allavailable kernels and generates a list of load/deflection curves.

The "Threads" Ø 1 option for the SMTInputData command prevents the parallelization of the assembly procedure andparallelization of the linear solver.

AceFEM Finite Element Environment 43

Page 44: AceFEMManual

table = ParallelTable @SMTInputData @" Threads " → 1D;

SMTAddDomain@" Ω", " SEPEQ2DFHYQ2NHookeA", 8" E ∗" −> emodule , " t ∗" → 2<D;

SMTAddEssentialBoundary @8 " Y" 0 &, 1 −> 0, 2 −> 0<D;

SMTAddNaturalBoundary @ " X" 0 && " Y" 20 &, 2 −> −10D;

SMTAddInitialBoundary @ " X" 0 && " Y" 20 &, 1 −> 10D;

SMTMesh@" Ω", " Q2", 820, 5 <, 8881, 0 <, 81, 20 <<, 88−1, 0 <, 8−1, 20 <<<D;

SMTAnalysis @D;

λucurve = 880, 0 <<;

SMTNextStep @1, .1 D;

While @While @step = SMTConvergence @10^ −8, 15, 8" Adaptive ", 8, .0001, 1, 40 <D,

SMTNewtonIteration @D; D;

If @step @@4DD === " MinBound ", SMTStatusReport @" Error: ∆λ < ∆λmin " D; Abort @D; D;

If @Not @step @@1DDD,

AppendTo @λucurve , 8SMTData@" Multiplier " D, SMTPostData @" u", 80, 20 <D<D; D;

step @@3DD, If @step @@1DD, SMTStepBack @D; D;

SMTNextStep @1, step P2TDD;

8emodule , λucurve <, 8emodule , 10 000, 30 000, 500 <D;

The result are deflection curves of upper center node considering the changing elastic modulus.

ListLinePlot @table @@All, 2 DD, AxesLabel → 8" Load ", " Tip deflection " <D

44 AceFEM Finite Element Environment

Page 45: AceFEMManual

BibliographyWRIGGERS, Peter, KRSTULOVIC-OPARA, Lovre, KORELC, Jože.(2001), Smooth C1-interpolations for two-dimensional frictional contact problems. Int. j. numer. methods eng., 2001, vol. 51, issue 12, str. 1469-1495

KRSTULOVIC-OPARA, Lovre, WRIGGERS, Peter, KORELC, Jože. (2002), A C1-continuous formulation for 3Dfinite deformation frictional contact. Comput. mech., vol. 29, issue 1, 27-42

STUPKIEWICZ, Stanislaw, KORELC, Jože, DUTKO, Martin, RODIC, Tomaž. (2002), Shape sensitivity analysis oflarge deformation frictional contact problems. Comput. methods appl. mech. eng., 2002, vol. 191, issue 33, 3555-3581

BRANK, Boštjan, KORELC, Jože, IBRAHIMBEGOVIC, Adnan. (2002), Nonlinear shell problem formulation account-ing for through-the-tickness stretching and its finite element implementation. Comput. struct.. vol. 80, n. 9/10, 699-717

BRANK, Boštjan, KORELC, Jože, IBRAHIMBEGOVIC, Adnan. (2003),Dynamic and time-stepping schemes forelastic shells undergoing finite rotations. Comput. struct., vol. 81, issue 12, 1193-1210

STADLER, Michael, HOLZAPFEL, Gerhard A., KORELC, Jože. (2003) Cn continuous modelling of smooth contactsurfaces using NURBS and application to 2D problems. Int. j. numer. methods eng., 2177-2203

KUNC, Robert, PREBIL, Ivan, RODIC, Tomaž, KORELC, Jože. (2002),Low cycle elastoplastic properties of nor-malised and tempered 42CrMo4 steel. Mater. sci. technol., Vol. 18, 1363-1368.

Bialas M, Majerus P, Herzog R, Mroz Z, Numerical simulation of segmentation cracking in thermal barrier coatings bymeans of cohesive zone elements, MATERIALS SCIENCE AND ENGINEERING A-STRUCTURAL MATERIALSPROPERTIES MICROSTRUCTURE AND PROCESSING 412 (1-2): 241-251 Sp. Iss. SI, DEC 5 2005

Maciejewski G, Kret S, Ruterana P, Piezoelectric field around threading dislocation in GaN determined on the basis ofhigh-resolution transmission electron microscopy image , JOURNAL OF MICROSCOPY-OXFORD 223: 212-215 Part3 SEP 2006

Wisniewski K, Turska E, Enhanced Allman quadrilateral for finite drilling rotations, COMPUTER METHODS INAPPLIED MECHANICS AND ENGINEERING 195 (44-47): 6086-6109 2006

Maciejewski G, Stupkiewicz S, Petryk H, Elastic micro-strain energy at the austenite-twinned martensite interface,ARCHIVES OF MECHANICS 57 (4): 277-297 2005

Stupkiewicz S, The effect of stacking fault energy on the formation of stress-induced internally faulted martensiteplates, EUROPEAN JOURNAL OF MECHANICS A-SOLIDS 23 (1): 107-126 JAN-FEB 2004

AceFEM Finite Element Environment 45

Page 46: AceFEMManual

Code Verification Methods & Debugging

Solution Convergence TestThe domain of the problem is [-.0.5,0.5]×[-0.5,0.5]×[0,1] cube. On all sides, apart from the upper surface, the constanttemperature f=0 is prescribed. The upper surface is isolated so that there is no heat flow over the boundary ( q=0).

There exists a constant heat source Q=1 inside the cube. The thermal conductivity of the material is temperature depen-dent as follows:

k= 1.+ 0.1f + 0.5f2.

The task is to calculate the temperature distribution inside the cube. First the example with the mesh 10×10×10 is testedin order to assess convergence properties of the Newton-Raphson iterative procedure for large meshes. The procedureto generate heat-conduction element that is used in this example is explained in AceGen manual section Standard FEProcedure

46 AceFEM Finite Element Environment

Page 47: AceFEMManual

The SMTMesh function generates nodes and elements for a cube discretized by the 10×10×10 mesh. The mesh and the boundaryconditions are also depicted.

<< AceFEM`;

SMTInputData @D;

SMTAddDomain@" cube ", " ExamplesHeatConduction ",

8" k0 ∗" −> 1., " k1 ∗" −> .1, " k2 ∗" −> .5, " Q ∗" −> 1. < D;

SMTAddEssentialBoundary @8" X" −0.5 »» " X" 0.5 »» " Y" −0.5 »» " Y" 0.5 »» " Z" 0. &, 1 −> 0<D;

SMTMesh@" cube ", " H1", 810, 10, 10 <, 8888−0.5, −0.5, 0 <, 80.5, −0.5, 0 <<, 88−0.5, 0.5, 0 <, 80.5, 0.5, 0 <<<,

888−0.5, −0.5, 1 <, 80.5, −0.5, 1 <<, 88−0.5, 0.5, 1 <, 80.5, 0.5, 1 <<<<D;

SMTAnalysis @D;

SMTShowMesh@" BoundaryConditions " → True, " Mesh" → True, " Elements " → True D

AceFEM Finite Element Environment 47

Page 48: AceFEMManual

Here the problem is analyzed and the contour plot of the temperature distribution is depicted.

SMTNextStep @0, 1 D;

While @SMTConvergence @10^ −12, 10 D, SMTNewtonIteration @D; SMTStatusReport @D; D;

SMTShowMesh@" Field " −> " Temperature ", " Mesh" → False, " Contour " → True DTê∆T=0. ê0. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=0.039126 ê0.000961769 Iter êTotal =1ê1 Status =0ê8<

Tê∆T=0. ê0. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=0.000117723 ê3.304 × 10−6 Iter êTotal =2ê2 Status =0ê8<

Tê∆T=0. ê0. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=2.01035 × 10−9ê9.4527 × 10−11 Iter êTotal =3ê3 Status =0ê8<

Tê∆T=0. ê0. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=2.83039 × 10−18ê6.97005 × 10−19 Iter êTotal =4ê4 Status =0ê8<

AceFEM0Min.0.7209e-1Max.

Temperature

0.610e-20.122e-10.183e-10.244e-10.305e-10.366e-10.427e-1

48 AceFEM Finite Element Environment

Page 49: AceFEMManual

Various views on the results can be obtained by the "Zoom" option.

SMTShowMesh@" Field " −> " Temp∗", " Mesh" → False,

" Contour " → True, " Zoom" → H" Z" <= 0.3 && H" X" <= 0 »» " Y" ≥ 0L &L D

AceFEM0Min.0.5300e-1Max.

Temp*

0.415e-20.830e-20.124e-10.166e-10.207e-10.249e-10.290e-1

SMTShowMesh@" Field " −> " Temp∗", " Zoom" → H" X"^2 + " Y"^2 + " Z"^2 .3 & L D

AceFEM is fully incorporated into Mathematica so that the various built-in Mathematica's functions can be used for the analysis ofthe results. One should observe that Mathematica's built-in functions operate mostly on regular domains, while SMTShowMesh

AceFEM Finite Element Environment 49

Page 50: AceFEMManual

displays results for an arbitrary mesh.

Here the ListContourPlot3D is used to get surfaces with constant temperature.

ListContourPlot3D @Transpose @Partition @Partition @SMTPost@" Temp∗" D, 11 D, 11 D, 83, 2, 1 <D,

Contours → 3, ContourStyle → Opacity @0.6 D, Mesh −> False D

In order to assess the convergence properties the problem is analyzed with the set of meshes from 2×2×2 to 20×20×20. Thesolution at the center of the cube (0.,0.,0.5) is observed.

s = Table @SMTInputData @D;

SMTAddDomain@" cube ", " ExamplesHeatConduction ",

8" k0 ∗" −> 1., " k1 ∗" −> .1, " k2 ∗" −> .5, " Q ∗" −> 1. <D;

SMTAddEssentialBoundary @81 −0.5 »» 1 0.5 »» 2 −0.5 »» 2 0.5 »» 3 0. &, 1 −> 0<D;

SMTMesh@" cube ", " H1", 8i , i , i <,

8888−0.5, −0.5, 0 <, 80.5, −0.5, 0 <<, 88−0.5, 0.5, 0 <, 80.5, 0.5, 0 <<<,

888−0.5, −0.5, 1 <, 80.5, −0.5, 1 <<, 88−0.5, 0.5, 1 <, 80.5, 0.5, 1 <<<<D;

SMTAnalysis @" Solver " → 5D;

SMTNextStep @1, 1 D;

While @SMTConvergence @10^ −12, 10 D, SMTNewtonIteration @D; D;

8i , SMTPostData @" Temp∗", 80, 0, 0.5 <D<, 8i , 2, 20, 2 <D

882, 0.0934011 <, 84, 0.0697145 <, 86, 0.0666232 <, 88, 0.0656559 <, 810, 0.0652253 <,

812, 0.0649954 <, 814, 0.064858 <, 816, 0.0647693 <, 818, 0.0647088 <, 820, 0.0646656 <<

50 AceFEM Finite Element Environment

Page 51: AceFEMManual

The figure shows rapid convergence of the solution in the centre of the cube with the mesh refinement.

ListLinePlot @s, PlotMarkers −> Automatic D

æ

æ

ææ

æ æ æ æ æ

æ

5 10 15 20

0.068

0.070

0.072

0.074

More about the convergence properties of the element can be observed form the Log[characteristic mesh size]/Log[error] plot.The solution obtained with the 20×20×20 mesh is assumed to be a converged solution. For a finite element method it is characteris-tic that the dependence between the characteristic mesh size and the error in a logarithmic scale is linear.

ListLinePlot @Map@Log@8 1 ê @@1DD, Abs @s@@−1, 2 DD − @@2DDD<D &, Drop @s, −1DD,

PlotMarkers −> Automatic D

æ

æ

æ

æ

æ

æ

æ

æ

æ-2.0 -1.5 -1.0

-9

-8

-7

-6

-5

-4

AceFEM Finite Element Environment 51

Page 52: AceFEMManual

Interactive DebuggingThe procedures described in the section User Interface of the AceGen manual can be used within AceFEM aswell. For the interactive debugging procedures, the code has to be generated in "Debug" mode. By default compilercompiles the code generated in "Debug" mode with the compiler options for debugging. For a large scale problems thismy represent a drawback. Compiler can be forced to produce optimized program also for the code generated in "Debug"mode with the SMTAnalysis option "OptimizeDll"->True.

This example requires AceGen package.

Here the code is generated in "Debug" mode. The break point with the identification "k" is inserted.

<< AceGen`;

SMSInitialize @" DebugHeatConduction ",

" Environment " −> " AceFEM", " Mode" −> " Debug" D;

SMSTemplate @" SMSTopology " → " H1", " SMSDOFGlobal" → 1,

" SMSSymmetricTangent " → False,

" SMSGroupDataNames" −>

8" k0 −conductivity parameter ", " k1 −conductivity parameter ",

" k2 −conductivity parameter ", " Q −heat source " <,

" SMSDefaultData " −> 81, 0, 0, 0 <D;

SMSStandardModule @" Tangent and residual " D;

Xi £ Array @ SMSReal@nd$$@ , " X", 1 DD &, 8 D;

Yi £ Array @ SMSReal@nd$$@ , " X", 2 DD &, 8 D;

Zi £ Array @ SMSReal@nd$$@ , " X", 3 DD &, 8 D;

φi £ Array @SMSReal@nd$$@ , " at ", 1 DD &, 8 D;

8k0 , k1 , k2 , Q< £

SMSReal@8es$$ @" Data ", 1 D, es$$ @" Data ", 2 D, es$$ @" Data ", 3 D, es$$ @" Data ", 4 D<D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

8ξ, η, ζ, wGauss< ¢ Array @SMSReal@es$$ @" IntPoints ", 1, IpIndex DD &, 4 D;

Ni £ MapThread @ 1 ê 8 H1 + ξ 1L H1 + η 2L H1 + ζ 3L &,

Transpose @88−1, −1, −1<, 81, −1, −1<, 81, 1, −1<, 8−1, 1, −1<,

8−1, −1, 1 <, 81, −1, 1 <, 81, 1, 1 <, 8−1, 1, 1 <<DD;

X¢ SMSFreeze@Ni . Xi D;

Y¢ SMSFreeze@Ni . Yi D;

Z ¢ SMSFreeze@Ni . Zi D;

Jm£ SMSD@8X, Y, Z<, 8ξ, η, ζ<D;

SMSDefineDerivative @8ξ, η, ζ<, 8X, Y, Z<, SMSInverse @JmDD;

φ £ Ni . φi ;

k £ k0 + k1 φ + k2 φ2 ;

SMSSetBreak @" k" D;

δφ £ SMSD@φ, φi D;

λ £ SMSReal@rdata$$ @" Multiplier " DD;

Ψi £ Det @JmD wGauss Hk SMSD@δφ, 8X, Y, Z<D. SMSD@φ, 8X, Y, Z<D − δφ λ QL;

SMSExport @SMSResidualSign Ψi , p$$ , " AddIn " → True D;

Kij £ SMSD@Ψi , φi D;

SMSExport @Kij , s$$ , " AddIn " → True D;

SMSEndDo@D;

SMSWrite @D;

time =0 variable = 0 ≡ 8<

time =2 variable = 100 ≡ 8<

52 AceFEM Finite Element Environment

Page 53: AceFEMManual

time =4 variable = 200 ≡ 9Ψi 8; φi 2=

@6D Consistency check − global

@6D Consistency check − expressions

@6D Generate source code :

Method : SKR278 formulae, 5660 sub −expressions

Events : 0

@7D Final formating

@7D File created :

DebugHeatConduction.c Size : 42 214

The SMTMesh function generates nodes and elements for a cube discretized by the 10×10×10 mesh.

The data and the definitions associalted with the derivation of the element are reloaded from the automatically generated fileDebugHeatConduction.dbg. See also SMSLoadSession.

<< AceFEM`;

SMTInputData @" LoadSession " −> " DebugHeatConduction " D;

SMTAddDomain@" cube ", " DebugHeatConduction ",

8" k0 ∗" −> 1., " k1 ∗" −> .1, " k2 ∗" −> .5, " Q ∗" −> 1. <D;

SMTAddEssentialBoundary @8" X" −0.5 »» " X" 0.5 »» " Y" −0.5 »» " Y" 0.5 »» " Z" 0. &, 1 −> 0<D;

SMTMesh@" cube ", " H1", 85, 5, 5 <, 8888−0.5, −0.5, 0 <, 80.5, −0.5, 0 <<, 88−0.5, 0.5, 0 <, 80.5, 0.5, 0 <<<,

888−0.5, −0.5, 1 <, 80.5, −0.5, 1 <<, 88−0.5, 0.5, 1 <, 80.5, 0.5, 1 <<<<D;

SMTAnalysis @D;

The break point stops the execution of the program accordingly to the value of the SMTIData["DebugElement"] variable. Thescope of the break point can be limited to one element by the command SMTIData["DebugElement",elementnumber], all elementsby the command SMTIData["DebugElement",-1] or none by the command SMTIData["DebugElement",0]. Default value isSMTIData["DebugElement",0]. Here the element 512 is specified as the element for which the break point is activated.

The program stops for each integration point where the program structure together with all the basic variables of the problem andthe current values of the variables are presented.

The program can be stopped also when there are no user defined break points by activating the automatically generated break pointat the beginning of the chosen module.

SMTIData @" DebugElement ", 112 D;

SMTNextStep @0, 0 D;

SMTNewtonIteration @D;

AceFEM Finite Element Environment 53

Page 54: AceFEMManual

The break points can be used also to trace the values of arbitrary variables during the analysis. Here the value of the conductivity kin the 6-th integration point of the 512-th element is traced during the Newton-Raphson iterative procedure.

allk = 8<;

SMSActivateBreak @" k", If @ IpIndex 6, allk = 8allk , k<; D &D;

Do@SMTNextStep @1, 500 D;

While @SMTConvergence @10^ −12, 15 D, SMTNewtonIteration @D; D;

, 8i , 1, 4 <D

54 AceFEM Finite Element Environment

Page 55: AceFEMManual

ListLinePlot @allk êê Flatten, PlotRange −> All D

5 10 15 20 25

4

6

8

10

The sparsity structure of the resulting tangent matrix can be graphically displayed by the ArrayPlot function.

MatrixPlot @SMTData@" TangentMatrix " DD

1 20 40 60 80

1

20

40

60

80

1 20 40 60 80

1

20

40

60

80

AceFEM Finite Element Environment 55

Page 56: AceFEMManual

Code ProfilingCode profiling is typically used to understand exactly where an application is spending its execution time.The SMTSimu-lationReport produce report identifying the percentage of time spent in specific tasks. However, by default you only seeperformance information at the global level rather than at the specific element level. For this additional user definedenvironment variables has to be defined.

This example requires AceGen package.

Here the code for the steady state heat conduction problem is generated. Two additional user defined environment variables aredefined where the results of the code profiling will be stored. The real type environment variable "EvaluationTime" will store thetotal time spent for the evaluation of the element tangent matrix and residual during the analysis. The integer type environmentvariable "NoEvaluations" will count the number of evaluations.

<< AceGen`;

SMSInitialize @" ProfileHeatConduction ", " Environment " −> " AceFEM" D;

SMSTemplate @" SMSTopology " → " H1", " SMSDOFGlobal" → 1

, " SMSSymmetricTangent " → False

, " SMSIDataNames" → 8" NoEvaluations " <, " SMSRDataNames" → 8" EvaluationTime " <, " SMSGroupDataNames" −>

8" k0 −conductivity parameter ", " k1 −conductivity parameter ",

" k2 −conductivity parameter ", " Q −heat source " <,

" SMSDefaultData " −> 81, 0, 0, 0 <D;

SMSStandardModule @" Tangent and residual " D;

Mark the starting time of the evaluation.

time £ SMSTime@D;

56 AceFEM Finite Element Environment

Page 57: AceFEMManual

Xi £ Array @ SMSReal@nd$$@ , " X", 1 DD &, 8 D;

Yi £ Array @ SMSReal@nd$$@ , " X", 2 DD &, 8 D;

Zi £ Array @ SMSReal@nd$$@ , " X", 3 DD &, 8 D;

φi £ Array @SMSReal@nd$$@ , " at ", 1 DD &, 8 D;

8k0 , k1 , k2 , Q< £

SMSReal@8es$$ @" Data ", 1 D, es$$ @" Data ", 2 D, es$$ @" Data ", 3 D, es$$ @" Data ", 4 D<D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

8ξ, η, ζ, wGauss< ¢ Array @SMSReal@es$$ @" IntPoints ", 1, IpIndex DD &, 4 D;

Ni £ MapThread @ 1 ê 8 H1 + ξ 1L H1 + η 2L H1 + ζ 3L &,

Transpose @88−1, −1, −1<, 81, −1, −1<, 81, 1, −1<, 8−1, 1, −1<,

8−1, −1, 1 <, 81, −1, 1 <, 81, 1, 1 <, 8−1, 1, 1 <<DD;

X¢ SMSFreeze@Ni . Xi D;

Y¢ SMSFreeze@Ni . Yi D;

Z ¢ SMSFreeze@Ni . Zi D;

Jm£ SMSD@8X, Y, Z<, 8ξ, η, ζ<D;

SMSDefineDerivative @8ξ, η, ζ<, 8X, Y, Z<, SMSInverse @JmDD;

φ £ Ni . φi ;

k £ k0 + k1 φ + k2 φ2 ;

δφ £ SMSD@φ, φi D;

λ £ SMSReal@rdata$$ @" Multiplier " DD;

Ψi £ Det @JmD wGauss Hk SMSD@δφ, 8X, Y, Z<D. SMSD@φ, 8X, Y, Z<D − δφ λ QL;

SMSExport @SMSResidualSign Ψi , p$$ , " AddIn " → True D;

Kij £ SMSD@Ψi , φi D;

SMSExport @Kij , s$$ , " AddIn " → True D;

SMSEndDo@D;

Mark the end time of the evaluation and add the difference to the user defined real type environment variable "EvaluationTime".Increase also the value of the integer type environment variable "NoEvaluations".

SMSExport @SMSTime@D − time , rdata$$ @" EvaluationTime " D, " AddIn " → True D;

SMSExport @SMSInteger @idata$$ @" NoEvaluations " DD + 1, idata$$ @" NoEvaluations " DD;

SMSWrite @D;

Method : SKR212 formulae, 4313 sub −expressions

@16D File created :

ProfileHeatConduction . c Size : 14 819

AceFEM Finite Element Environment 57

Page 58: AceFEMManual

Here is presented an input for the analysis and the results of code profiling for a cube discretized by the 20×20×20 mesh.

<< AceFEM`;

SMTInputData @D;

SMTAddDomain@" cube ", " ProfileHeatConduction ",

8" k0 ∗" −> 1., " k1 ∗" −> .1, " k2 ∗" −> .5, " Q ∗" −> 1. <D;

SMTAddEssentialBoundary @" X" −0.5 »» " X" 0.5 »» " Y" −0.5 »» " Y" 0.5 »» " Z" 0. &, 1 −> 0D;

SMTMesh@" cube ", " H1", 820, 20, 20 <, 8888−0.5, −0.5, 0 <, 80.5, −0.5, 0 <<, 88−0.5, 0.5, 0 <, 80.5, 0.5, 0 <<<,

888−0.5, −0.5, 1 <, 80.5, −0.5, 1 <<, 88−0.5, 0.5, 1 <, 80.5, 0.5, 1 <<<<D;

SMTAnalysis @D;

SMTNextStep @0, 1 D;

While @SMTConvergence @10^ −12, 10 D, SMTNewtonIteration @D; D;

SMTSimulationReport @8" NoEvaluations " <, 8" EvaluationTime " <D;

No. of nodes 9261No. of elements 8000No. of equations 7220Data memory HKBytes L 2110Solver memory HKBytes L 24 159No. of steps 1No. of steps back 0Step efficiency H%L 100.Total no. of iterations 4Average iterations êstep 4.Total time HsL 3.725Total solver time HsL 3.254Total solver time H%L 87.3557Total element time HsL 0.441Total element time H%L 11.8389Average time êiteration HsL 0.93125Average solver time HsL 0.8135Average element time HsL 0.0000137812USER−IDataTotal NoEvaluations 32 000Average NoEvaluations êelement 1.USER−RDataTotal EvaluationTime HsL 0.271Total EvaluationTime H%L 7.27517

Average EvaluationTime êelement HsL 8.46875 × 10−6

Round-off Error TestWith the MDriver version of the numerically intensive operations the advantages of the Mathematica's high precisionarithmetic, interval arithmetic, or even symbolic evaluation can be used. In this section the number of significant digitslost due to the round-off error is calculated.

In the previous section the C language code for the steady state heat conduction problem was generated. Due to thearbitrary precision arithmetic required, the C code can not be used any more and Mathematica code has to be generated.

This example requires AceGen package.

58 AceFEM Finite Element Environment

Page 59: AceFEMManual

Here the Mathematica code for MDriver is generated.

<< AceGen`;

SMSInitialize @" PrecisionHeatConduction ", " Environment " −> " AceFEM−MDriver " D;

SMSTemplate @" SMSTopology " → " H1", " SMSDOFGlobal" → 1, " SMSSymmetricTangent " → False

, " SMSGroupDataNames" −>

8" k0 −conductivity parameter ", " k1 −conductivity parameter ",

" k2 −conductivity parameter ", " Q −heat source " <,

" SMSDefaultData " −> 81, 0, 0, 0 <D;

SMSStandardModule @" Tangent and residual " D;

Xi £ Array @ SMSReal@nd$$@ , " X", 1 DD &, 8 D;

Yi £ Array @ SMSReal@nd$$@ , " X", 2 DD &, 8 D;

Zi £ Array @ SMSReal@nd$$@ , " X", 3 DD &, 8 D;

φi £ Array @SMSReal@nd$$@ , " at ", 1 DD &, 8 D;

8k0 , k1 , k2 , Q< £

SMSReal@8es$$ @" Data ", 1 D, es$$ @" Data ", 2 D, es$$ @" Data ", 3 D, es$$ @" Data ", 4 D<D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

8ξ, η, ζ, wGauss< ¢ Array @SMSReal@es$$ @" IntPoints ", 1, IpIndex DD &, 4 D;

Ni £ MapThread @ 1 ê 8 H1 + ξ 1L H1 + η 2L H1 + ζ 3L &,

Transpose @88−1, −1, −1<, 81, −1, −1<, 81, 1, −1<, 8−1, 1, −1<,

8−1, −1, 1 <, 81, −1, 1 <, 81, 1, 1 <, 8−1, 1, 1 <<DD;

X¢ SMSFreeze@Ni . Xi D;

Y¢ SMSFreeze@Ni . Yi D;

Z ¢ SMSFreeze@Ni . Zi D;

Jm£ SMSD@8X, Y, Z<, 8ξ, η, ζ<D;

SMSDefineDerivative @8ξ, η, ζ<, 8X, Y, Z<, SMSInverse @JmDD;

φ £ Ni . φi ;

k £ k0 + k1 φ + k2 φ2 ;

δφ £ SMSD@φ, φi D;

λ £ SMSReal@rdata$$ @" Multiplier " DD;

Ψi £ Det @JmD wGauss Hk SMSD@δφ, 8X, Y, Z<D. SMSD@φ, 8X, Y, Z<D − δφ λ QL;

SMSExport @SMSResidualSign Ψi , p$$ , " AddIn " → True D;

Kij £ SMSD@Ψi , φi D;

SMSExport @Kij , s$$ , " AddIn " → True D;

SMSEndDo@D;

SMSWrite @D;

Method : SMT`SKR208 formulae, 4266 sub −expressions

@16D File created :

PrecisionHeatConduction . mSize : 15 847

The domain of the problem is sphere with radius 1. On the lower surface of the sphere the constant temperature of f=0is prescribed. The upper surface is isolated, so that there is no heat flow over the boundary ( q=0). There exists a

constant heat source Q=1 inside the sphere. The task is to evaluate the number of significant digits lost when the sphereis discretized with the 125 hexahedra thermal conductivity elements.

AceFEM Finite Element Environment 59

Page 60: AceFEMManual

This starts symbolic MDriver with all the numerical constants set to have 40 digit precision, thus during the analysis the 40 digitprecision real numbers are used.

<< AceFEM`;

SMTInputData @" NumericalModule " → " MDriver ", " Precision " → 40DSMTAddDomain@" sphere ", " PrecisionHeatConduction ",

8" k0 ∗" −> 100, " k1 ∗" −> 10, " k2 ∗" −> 5, " Q ∗" −> 1<D;

SMTAddEssentialBoundary A " Z" <= 0.01 && " X" 2 + " Y" 2 + " Z" 2 > 0.98 &, 1 −> 0E;

The SMTMesh function uses general interpolation of coordinates with the arbitrary number of interpolation points. Here the meshof 11×11×11 interpolation points is obtained by mapping the cube into the sphere. The volume is then divided into 5×5×5 elements.

points = N@Table @ Max@Abs@8ξ, η, ζ<DD 8ξ, η, ζ< ê Sqrt @8ξ, η, ζ<. 8ξ, η, ζ<D,

8ζ, −1, 1, 2 ê 11<, 8η, −1, 1, 2 ê 11<, 8ξ, −1, 1, 2 ê 11<D, 50 D;

SMTMesh@" sphere ", " H1", 85, 5, 5 <, points D;

SMTAnalysis @D;

$MaxExtraPrecision = 0;

SMTNextStep @1, 1 D;

This gives the temperature in the node 100 and the numerical precision of the result for 5 Newton-Raphson iterations.

prec = Table @SMTNewtonIteration @D;

8i , SMTNodeData@100, " at " D@@1DD, SMTNodeData@" at " D êê Precision <, 8i , 5 <D;

TableForm @prec , TableHeadings → 8None, 8" Iteration ", " Temperature ", " Precision " <<D

Iteration Temperature Precision

1 0.004313677791579251746567536086840586 34.16682 0.004312689557244001123764159710402 31.46963 0.0043126895571937506401672640986 28.54354 0.00431268955719375064016726397 25.69725 0.00431268955719375064016726397 25.6972

It can be seen that 15 significant digits have been lost during the computation. Although this seems a lot, one should beaware that when a high precision arithmetic is used, Mathematica takes "save bound" for the precision of the intermedi-ate results and that the actual number of significant digits lost is usually much lower. This can be verified by running thesame example with the CDriver , where double precision real numbers are used.

<< AceFEM`;

SMTInputData @D;

SMTAddDomain@" sphere ", " ExamplesHeatConduction ",

8" k0 ∗" −> 100, " k1 ∗" −> 10, " k2 ∗" −> 5, " Q ∗" −> 1<D;

SMTAddEssentialBoundary A " Z" <= 0 && " X" 2 + " Y" 2 + " Z" 2 1 &, 1 −> 0E;

SMTMesh@" sphere ", " H1", 85, 5, 5 <,

Table @ Max@Abs@8ξ, η, ζ<DD 8ξ, η, ζ< ê Sqrt @8ξ, η, ζ<. 8ξ, η, ζ<D,

8ζ, −1., 1., 2. ê 5<, 8η, −1., 1., 2. ê 5<, 8ξ, −1., 1., 2. ê 5<DD;

SMTAnalysis @D; SMTNextStep @1, 1 D;

Table @SMTNewtonIteration @D, 85<D

90.00468689, 1.26934 × 10−6 , 1.04459 × 10−13 , 2.87537 × 10−19 , 2.41207 × 10−19=

60 AceFEM Finite Element Environment

Page 61: AceFEMManual

The numerical precision of the machine precision numbers is always 16. The number of significant digits lost can be obtained bycomparing the results with the high precision results.

SMTNodeData@100, " at " D êê InputForm

0.00430996637335456

Let us see some more methods how the results can be post-processed.

SMTShowMesh@" Field " −> " Temp∗", " BoundaryConditions " → True, " Contour " −> True D

AceFEM0Min.0.6552e-2Max.

Temp*

0.782e-30.156e-20.234e-20.313e-20.391e-20.469e-20.548e-2

AceFEM Finite Element Environment 61

Page 62: AceFEMManual

Here the temperature distribution along the central diagonal of the sphere is depicted. The SMTPostData command extrapolates thetemperature for the points that lie outside the sphere.

ListLinePlot @8Table @ξ, 8ξ, −1, 1, .01 <D,

SMTPostData @" Temp∗", Table @8ξ, 0, ξ<, 8ξ, −1, 1, .01 <DD< êê Transpose D

-1.0 -0.5 0.5 1.0

-0.002

0.002

0.004

0.006

62 AceFEM Finite Element Environment

Page 63: AceFEMManual

Shared Finite Element Libraries

AceShareThe AceFEM environment comes with the built-in library is a part of the installation and contains the element dll filesfor the most basic and standard elements. The standard built-in library of the elements is located at directory$BaseDirectory/Applications/AceFEM/Library/.

Additional elements can be accessed through the AceShare system. The AceShare system is a file sharing mechanismbuilt in AceFEM that allows:

- browsing the on-line FEM libraries

- downloding finite elements from the on-line libraries

- formation of the user defined library that can be posted on the internet to be used by other users of the AceFEM system

Each on-line library can contain:

fl element dll files,

fl home page file (HTML file with basic descriptions, links, etc..)

fl symbolic input used to generate element,

fl source codes for other environments (FEAP, AceFEM-MDriver, Abaqus, ...)

fl benchmark tests.

See also:

SMTSetLibrary — initializes the library

SMTAddToLibrary — add new element to library

SMTLibraryContents — prepare library for posting Unified Element Code

Unified Element Code — the elements in the libraries are located through unique codes

Accessing elements from shared librariesThe SMTAnalysis command automatically locates and downloads finite elements from the built-in and on-linelibraries. The required element dll file is located on a base on an Unified Element Code. The libraries can be selectedand searched by the use of the finite element browser. The finite element browser can be used to locate the element,paste the element code into problems input data, get informations about material constants, available postprocessingkeywords, and also to access element's home page with the links to benchmark tests and source codes.

AceFEM Finite Element Environment 63

Page 64: AceFEMManual

Selecting and browsing the AceShare libraries.

The information about the available on-line libraries is automatically updated once per day and stored in directory$BaseDirectory/AceCommon/. The downloding dll files from the on-line libraries are also stored in the same directory$BaseDirectory/AceCommon/.

The library is defined by the unique code (e.g. OL stands for standard AceFEM on-line library). The standard AceFEMOn-line library contains large number of finite elements (solid, thermal,... 2D, 3D,...) with full symbolic input for mostof the elements. The number of finite elements included in on-line libraries is a growing daily. Please browse theavailable libraries to see if the finite element model for your specific problem is already available or order creation ofspecialized elements (www.fgg.uni-lj.si/consulting/).

64 AceFEM Finite Element Environment

Page 65: AceFEMManual

Example: Accessing elements from shared libraries

<< AceFEM`;

SMTInputData @D;

SMTAddDomain@" A", " OL:SEPSQ1ESHYQ1E4NHookeA",

8" E ∗" −> 1000., " ν ∗" −> .49, " t ∗" −> 1. <D;

SMTAddNaturalBoundary @Abs@" X" Sin @" X" êê ND ê 20 + 8 − " Y" D < 0.1 &, 0, − .01 D;

SMTAddEssentialBoundary @" X" 1 &, 1 −> 0, 2 −> 0D;

SMTAddEssentialBoundary @" X" 40 &, 1 −> 0, 2 −> 0D;

SMTMesh@" A", " Q1", 880, 5 <, Array @ 82, 2 Sin @2 êê ND ê 20 + 4 1 < &, 82, 40 <DD;

SMTAnalysis @" Output " −> " tmp.out " D;

SMTNextStep @1, 100 D;

While @While @step = SMTConvergence @10^ −7, 15, 8" Adaptive ", 8, .01, 300, 500 <D ,

SMTNewtonIteration @DD;

SMTStatusReport @D;

If @step P4T === " MinBound ", Print @" Error: ∆λ < ∆λmin " DD;

If @Not @step P1TD, SMTShowMesh@" DeformedMesh " → True,

" Field " → " Sxy ", " Mesh" → False, " Contour " → 20, " Show" −> " Window" DD;

step P3T ,

If @step P1T, SMTStepBack @DD;

SMTNextStep @1, step P2TDD

Tê∆T=1. ê1. λê∆λ=100. ê100. ˛∆a˛ê˛Ψ˛=5.27759 × 10−9

ê7.97121 × 10−13 Iter êTotal =11ê11 Status =0ê8Convergence <

Tê∆T=2. ê1. λê∆λ=195.918 ê95.9184 ˛∆a˛ê˛Ψ˛=6.34041 × 10−13

ê8.44338 × 10−13 Iter êTotal =7ê18 Status =0ê8Convergence <

Tê∆T=3. ê1. λê∆λ=338.817 ê142.899 ˛∆a˛ê˛Ψ˛=4.49627 × 10−8

ê8.93353 × 10−13 Iter êTotal =6ê24 Status =0ê8Convergence <

Tê∆T=4. ê1. λê∆λ=500. ê161.183 ˛∆a˛ê˛Ψ˛=3.36994 × 10−10

ê8.55944 × 10−13 Iter êTotal =6ê30 Status =0ê8Convergence <

Show@SMTShowMesh@" Show" → False, " BoundaryConditions " → True D,

SMTShowMesh@" DeformedMesh " → True, " Mesh" → False, " Field " → " Sxy ",

" Contour " → 20, " Show" → False, " Legend " → False D, PlotRange → All D

AceFEM Finite Element Environment 65

Page 66: AceFEMManual

Unified Element CodeThe elements in the libraries are located through unique codes. The code is a string of the form:

" library_code:element_code" .

If the library code is omitted then the first element with the given element_code is selected.

The element code can be further composed form several parts wit predefined meaning.

For example the codes for the elements from the standard on-line AceFEM library (OL) consist of the following key-words:

Description No. of charactersin keyword

Examples of keywords

Physical problem 2 SEª Mechanical problems

Physical model 2 PEª 2 D solid plane strain problems

Topology 2 Q1ª 2 D Quadrilateral with 4 nodes

Variationalformulation

2 DFª Full integrated displacement based elements

General model 2 LEã linear elastic solid

Acronym arbitrary Q1E4

Sub-model arbitrary IsoHooke

Sub-sub-model arbitrary Missess…

arbitrary…

Keywords for the standard on-line AceFEM library.

For example the SEPEQ1HRLEPianSumIsoHooke code represents the well-known Pian-Sumihara element derived forisothropic Hook's material.

Simple AceShare library

Set up library

SMTSetLibrary — initializes the library

<< AceGen`; << AceFEM`;

SMTSetLibrary @" D: êUserLib ê"

, " Code" → " MY"

, " Title " → " My library "

, " URL" → " http: êêwww.fgg.uni −lj.si êsymechêUserLib ê"

, " Keywords " → 88" D3" < → " 3d elements ",

8" D3", " H1" < → " 8 nodeed ",

8" D3", _, " SE" < → " solid ",

8" D3", _, " TH" < → " Thermal "

<D

66 AceFEM Finite Element Environment

Page 67: AceFEMManual

Create element

SMSInitialize @" D3H1TH" , " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " H1", " SMSDOFGlobal" → 1,

" SMSSymmetricTangent " → False, " SMSGroupDataNames" −>

8" k0 −conductivity parameter ", " k1 −conductivity parameter ",

" k2 −conductivity parameter ", " Q −heat source " <,

" SMSDefaultData " −> 81, 0, 0, 0 <D;

SMSStandardModule @" Tangent and residual " D;

Xi £ Array @ SMSReal@nd$$@ , " X", 1 DD &, 8 D;

Yi £ Array @ SMSReal@nd$$@ , " X", 2 DD &, 8 D;

Zi £ Array @ SMSReal@nd$$@ , " X", 3 DD &, 8 D;

φi £ Array @SMSReal@nd$$@ , " at ", 1 DD &, 8 D;

8k0 , k1 , k2 , Q< £

SMSReal@8es$$ @" Data ", 1 D, es$$ @" Data ", 2 D, es$$ @" Data ", 3 D, es$$ @" Data ", 4 D<D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

8ξ, η, ζ, wGauss< ¢ Array @SMSReal@es$$ @" IntPoints ", 1, IpIndex DD &, 4 D;

Ni £ MapThread @ 1 ê 8 H1 + ξ 1L H1 + η 2L H1 + ζ 3L &,

Transpose @88−1, −1, −1<, 81, −1, −1<, 81, 1, −1<, 8−1, 1, −1<,

8−1, −1, 1 <, 81, −1, 1 <, 81, 1, 1 <, 8−1, 1, 1 <<DD;

X¢ SMSFreeze@Ni . Xi D;

Y¢ SMSFreeze@Ni . Yi D;

Z ¢ SMSFreeze@Ni . Zi D;

Jm£ SMSD@8X, Y, Z<, 8ξ, η, ζ<D;

SMSDefineDerivative @8ξ, η, ζ<, 8X, Y, Z<, SMSInverse @JmDD;

φ £ Ni . φi ;

k £ k0 + k1 φ + k2 φ2 ;

λ £ SMSReal@rdata$$ @" Multiplier " DD;

∆φ £ SMSD@φ, 8X, Y, Z<D;

Π £1

2k ∆φ. ∆φ − φ λ Q;

Ψi £ Det @JmD wGauss SMSD@Π, φi , " Constant " → kD;

SMSExport @SMSResidualSign Ψi , p$$ , " AddIn " → True D;

Kij £ SMSD@Ψi , φi D;

SMSExport @Kij , s$$ , " AddIn " → True D;

SMSEndDo@D;

SMSWrite @D;

Method : SKR217 formulae, 4407 sub −expressions

@19D File created : D3H1TH. c Size : 14 888

Add element to library

SMTAddToLibrary — add new element to library

SMTAddToLibrary @8" D3", " H1", " TH" <D

Prepare library for posting

SMTLibraryContents — prepare library for posting

SMTLibraryContents @D

AceFEM Finite Element Environment 67

Page 68: AceFEMManual

Please send the URL to [email protected] to make third-party library available to all AceFEM users.

Advanced AceShare library

Set up library

<< AceGen`; << AceFEM`;

SMTSetLibrary @" D: êUserLib ê"

, " Code" → " MY"

, " Title " → " My library "

, " URL" → " http: êêwww.fgg.uni −lj.si êsymechêUserLib ê"

, " Keywords " → 88" D3" < → " 3d elements ",

8" D3", " H1" < → " 8 nodeed ",

8" D3", _, " SE" < → " Solid ",

8" D3", _, " TH" < → " Thermal ",

8" D3", _, " TH", " Lin " < → " constant conductivity ",

8" D3", _, " TH", " Nonlin " < → " nonlinear conductivity "

<D;

Create first element

code = " D3H1THLin ";

keywords = 8" D3", " H1", " TH", " Lin " <;

material = keywords @@4DD;

SMSEvaluateCellsWithTag @" Element ",

" CollectInputStart " → True, " RemoveTag" → True D;

SMSEvaluateCellsWithTag @" Example ", " RemoveTag" → True D;

SMSRecreateNotebook @" File " → SMSSessionName, " Close " −> True,

" Head" → 8Cell @SMSSessionName, " Title " D, Cell @" <<AceGen`; <<AceFEM`; ", " Input " D<D;

Include Tag : Element H6 cells found, 6 evaluated L

Method : SKR186 formulae, 3369 sub −expressions

@12D File created : D3H1THLin . c Size : 12 599

Include Tag : Example H3 cells found, 3 evaluated L

SMTAddToLibrary @keywords

, " DeleteOriginal " → True

, " Source " −> SMSSessionName

, " Documentation " −> SMSSessionName

, " Examples " −> SMSSessionName

, " Author " → 8" J. Korelc ", " http: êêwww.fgg.uni −lj.si ê∼êjkorelc ê" <D;

68 AceFEM Finite Element Environment

Page 69: AceFEMManual

Create second element

code = " D3H1THNonlin " ;

keywords = 8" D3", " H1", " TH", " Nonlin " <;

material = keywords @@4DD;

SMSEvaluateCellsWithTag @" Element ",

" CollectInputStart " → True, " RemoveTag" → True D;

SMSEvaluateCellsWithTag @" Example ", " RemoveTag" → True D;

SMSRecreateNotebook @" File " → SMSSessionName, " Close " −> True, " Head" →

8Cell @SMSSessionName, " Title " D, Cell @" <<AceGen`; <<AceFEM`; ", " Input " D<D;

Include Tag : Element H6 cells found, 6 evaluated L

Method : SKR217 formulae, 4407 sub −expressions

@19D File created : D3H1THNonlin . c Size : 14 894

Include Tag : Example H3 cells found, 3 evaluated L

SMTAddToLibrary @keywords

, " DeleteOriginal " → True

, " Source " −> SMSSessionName

, " Documentation " −> SMSSessionName

, " Examples " −> SMSSessionName

, " Author " → 8" J. Korelc ", " http: êêwww.fgg.uni −lj.si ê∼êjkorelc ê" <D;

Prepare library for posting

SMTLibraryContents @D

General AceGen input for all elements

H∗ SMSTagEvaluate −

evaluated variable code is included into recreated notebook ∗LSMSInitialize @SMSTagEvaluate @code D, " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " H1", " SMSDOFGlobal" → 1, " SMSSymmetricTangent " → False D;

SMSStandardModule @" Tangent and residual " D;

Xi £ Array @ SMSReal@nd$$@ , " X", 1 DD &, 8 D;

Yi £ Array @ SMSReal@nd$$@ , " X", 2 DD &, 8 D;

Zi £ Array @ SMSReal@nd$$@ , " X", 3 DD &, 8 D;

φi £ Array @SMSReal@nd$$@ , " at ", 1 DD &, 8 D;

AceFEM Finite Element Environment 69

Page 70: AceFEMManual

H∗ SMSTagSwitch − only choosen option is included into recreated notebook ∗LSMSTagSwitch @material

, " Lin ",

SMSGroupDataNames = 8" k0 −conductivity parameter k0 ", " Q −heat source " <;

SMSDefaultData = 81, 0 <;

8k0 , Q< £ SMSReal@8es$$ @" Data ", 1 D, es$$ @" Data ", 2 D<D;

, " Nonlin ",

SMSGroupDataNames = 8" k0 −conductivity parameter ", " k1 −conductivity parameter ",

" k2 −conductivity parameter ", " Q −heat source " <;

SMSDefaultData = 81, 0, 0, 0 <;

8k0 , k1 , k2 , Q< £

SMSReal@8es$$ @" Data ", 1 D, es$$ @" Data ", 2 D, es$$ @" Data ", 3 D, es$$ @" Data ", 4 D<D;

D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

8ξ, η, ζ, wGauss< ¢ Array @SMSReal@es$$ @" IntPoints ", 1, IpIndex DD &, 4 D;

Ni £ MapThread @ 1 ê 8 H1 + ξ 1L H1 + η 2L H1 + ζ 3L &,

Transpose @88−1, −1, −1<, 81, −1, −1<, 81, 1, −1<, 8−1, 1, −1<,

8−1, −1, 1 <, 81, −1, 1 <, 81, 1, 1 <, 8−1, 1, 1 <<DD;

X¢ SMSFreeze@Ni . Xi D;

Y¢ SMSFreeze@Ni . Yi D;

Z ¢ SMSFreeze@Ni . Zi D;

Jm£ SMSD@8X, Y, Z<, 8ξ, η, ζ<D;

SMSDefineDerivative @8ξ, η, ζ<, 8X, Y, Z<, SMSInverse @JmDD;

φ £ Ni . φi ;

λ £ SMSReal@rdata$$ @" Multiplier " DD;

SMSTagSwitch Amaterial

, " Lin ",

k £ k0 ;

, " Nonlin ",

k £ k0 + k1 φ + k2 φ2 ;

E;

∆φ £ SMSD@φ, 8X, Y, Z<D;

Π £1

2k ∆φ. ∆φ − φ λ Q;

Ψi £ Det @JmD wGauss SMSD@Π, φi , " Constant " → kD;

SMSExport @SMSResidualSign Ψi , p$$ , " AddIn " → True D;

Kij £ SMSD@Ψi , φi D;

SMSExport @Kij , s$$ , " AddIn " → True D;

SMSEndDo@D;

SMSWrite @D;

Method : SKR217 formulae, 4407 sub −expressions

@20D File created : D3H1THNonlin . c Size : 14 894

70 AceFEM Finite Element Environment

Page 71: AceFEMManual

AceFEM example for all elements

SMTInputData @D;

Q= 50;

nn = 5;

SMSTagSwitch @material

, " Lin ",

SMTAddDomain@" cube ", SMSTagEvaluate @code D, 8" k0 ∗" −> 0.58, " Q ∗" −> Q<D;

, " Nonlin ",

SMTAddDomain@" cube ", SMSTagEvaluate @code D,

8" k0 ∗" −> 0.1, " k1 ∗" −> 0.02, " k2 ∗" −> 0.003, " Q ∗" −> Q<D;

D;

SMTAddEssentialBoundary @8" X" −0.5 »» " X" 0.5 »» " Y" −0.5 »» " Y" 0.5 »» " Z" 0. &, 1 −> 0<D;

SMTMesh@" cube ", " H1", 8nn, nn, nn<, 8888−0.5, −0.5, 0 <, 80.5, −0.5, 0 <<, 88−0.5, 0.5, 0 <, 80.5, 0.5, 0 <<<,

888−0.5, −0.5, 1 <, 80.5, −0.5, 1 <<, 88−0.5, 0.5, 1 <, 80.5, 0.5, 1 <<<<D;

SMTAnalysis @D;

SMTNextStep @0, 1 D;

While @step = SMTConvergence @10^ −8, 10 D, SMTNewtonIteration @D; D;

SMTShowMesh@" Field " → SMTPost@1DD

AceFEM Finite Element Environment 71

Page 72: AceFEMManual

Advanced User Documentation

Mesh Input Data Structures

An experience user can manipulate the input data arrays directly. In that case isthe users responsibility that the data provided is correct. It is advisable to usecommands described in Input Data instead. This data structures are subject tochange without notice! Directly changing the data after SMTAnalysis is forbiden.The data can be changed after the SMTAnalysis using the Data Base Manipula-tions .

input data

SMTNodes node coordinates for all nodes

SMTElements element nodes and domain identification for all elements

SMTDomains description of domains

SMTEssentialBoundary reference values of the essential boundary conditions

SMTNaturalBoundary reference values of the natural boundary conditions

SMTInitialBoundary initial values of boundary conditionsHeither essential or naturalLSMTBodies description of bodies

Basic input data arrays.

SMTNodes=8node1,node2,…,nodeN<

nodei

8inode,X ,Y,Z< 3 D node with coordinates8X,Y,Z<8inode,X ,Y< 2 D node with coordinates8X,Y<8inode,X< 1 D node with coordinates8X<

Node data for 3D, 2D and 1D problems.

72 AceFEM Finite Element Environment

Page 73: AceFEMManual

SMTElements=8elem1,elem2,…,elemM <

elementi

8ielem,dID,8inode1,inode2,…<< element with the element indexielem, the list of nodesinode1,inode2,... and domain identificationdID

Element nodes and domain identification for all elements.

SMTDomains=8domain1,omain2,…,omainK<

domaini

8dID, etype,8d1,…,dndata<< specifies that the domain identificationdID represents the element identified bythe stringetypeand the material datadi

Hthe element source code or dll file and the appropriateintegration code are selected automaticallyL

8dID, etype,8d1,d2,…,dndata<,opt< specifies that the domain identificationdID represents the element identifiedby the stringetype,the material datadi ,and set of optionsopt Hsee table belowL

option description default

"Source" specification of the location ofelement' s source codeHsee table belowL

Automatic

"IntegrationCode" numerical integration code

intcode see Numerical integration

SMSDefaultIntegrationCode

"AdditionalData" additional data commonfor all the elements within aparticular domainHe.g. flow curveL

8<

Options for domain input data.

Element source code location, group data, integration codes,... for all domains of the problem.

AceFEM Finite Element Environment 73

Page 74: AceFEMManual

SMTEssentialBoundary=9pnode1,pnode2,…,pnodeP=

pnodei

9nodeselector,v1,v2,…,vNdof= vi - reference value of the essential boundaryconditionHsupportL for the i-th unknown in allnodes that matchnodeselectoIsee Selecting NodesM

Essential boundary conditions.

SMTNaturalBoundary=8nnode1,nnode2,…,nnodeR<

nnodei

9nodeselector, f1, f2,…, fNdof= fi - reference value of the naturalboundary conditionHforceL for i-th unknown in allnodes that matchnodeselectorIsee Selecting NodesM

Natural boundary conditions.

SMTInitialBoundary=8nnode1,nnode2,…,nnodeR<

nnodei

9nodeselector, f1, f2,…, fNdof= fi - initial boundary conditionHforce or supportL for i-th unknown in all nodes that matchnodeselectorIsee Selecting NodesM

Initial boundary conditions.

SMTBodies=9bodyspec1,bodyspec2,…,bodyspecR=

bodyspeci

88ielem1,ielem2,...<,bID< specifies that the elements with the index8ielem1,ielem2,...<belongs to the bodyHtoplogicaly connected region of elementsLwith the body identificationbID

88ielem1,ielem2,...<,bID,8dID1,dID2,...<< orders creation of additional elements with thedomain identifications8dID1,dID2,...< on the boudaryof the body defined by the elements8ielem1,ielem2,...<

8...,dID< ª 8...,8dID<<Definition of the bodies.

74 AceFEM Finite Element Environment

Page 75: AceFEMManual

The parameter inode is a node number, ielem is an element number, dID is a domain identification, bID is a bodyidentification and inode iare the indices of nodes. The domain identification dID and the body identification bID can bearbitrary strings.

Instead of the value of essential boundary condition vi or natural boundary condition fi we can give "FREE" string or

simply empty space. The "FREE" string means that the boundary value is not prescribed for that parameter. If bothessential and natural boundary condition are specified for a particular unknown then the essential boundary conditionhas precedence.

The parameter nodeselector is used to select nodes. It has one of the forms described in section Selecting Nodes.

The SMTNodes and SMTElements input arrays are automatically generated by the SMTMesh command (see

SMTMesh).

The element user subroutines can be stored in a file in the Mathematica or C language, or in a dynamic link library.Dynamic link library file is generated automatically when the problem is run with the C source file as input for the firsttime. After that the dll library is regenerated if "dll" file is older than the current C source file.

scode

source_file file with the element sourceHproper extension is obligatory .m, or .cL

Automatic for the standard elements that are partof the standard library system the driverautomatically finds the source file of theelement according to the element name

executable_file dynamic link library withthe element subroutinesHname.dllL

Specification of the location of the element's source code.

Sensitivity Input Data Structures

An experience user can manipulate the input data arrays directly. In that case isthe users responsibility that the data provided is correct. It is advisable to usecommands described in Input Data instead. This data structures are subject tochange without notice! Directly changing the data after SMTAnalysis is forbiden.The data can be changed after the SMTAnalysis using the Data Base Manipula-tions .

AceFEM Finite Element Environment 75

Page 76: AceFEMManual

SMTSensitivityData=9param1,param2,…,paramns=

parami

8sID, value,8st1,…,stK<,8sti1,…,stiK<< specifies that the sensitivity parameteridentification sID represents the sensitivityparameter identified by the current valuevalue,the the sensitivity typesHSensTypeL sti for all domainsof the problem and the indices in a type groupHSensTypeIndexL stii for all domains of the problem

Sensitivity input data structure.

Examples and Exercises

About AceFEM ExamplesThe presented examples are meant to illustrate the general symbolic approach to computational problems and the use ofAceGen and AceFEM in the process. They are NOT meant to represent the state of the art solution or formulation ofparticular numerical or physical problem.

All the examples come with a full AceGen input used to generate AceFEM source codes and dll files. All dll files arealso included as a part of installation (at directory $BaseDirectory/Applications/AceFEM/Elements/), thus one does nothave to create finite element codes with AceGen in order to run simulations that are part of the examples.

More examples are available at www.fgg.uni-lj.si/symech/examples/ .

Solid, Finite Strain Element for Direct and Sensitivity Analysis

à DescriptionGenerate two-dimensional, four node finite element for the analysis of the steady state problems in the mechanics ofsolids. The element has the following characteristics:

fl quadrilateral topology,

fl 4 node element,

fl isoparametric mapping from the reference to the actual frame,

fl global unknowns are displacements of the nodes,

fl the element should allow arbitrary large displacements and rotations,

76 AceFEM Finite Element Environment

Page 77: AceFEMManual

the element should allow arbitrary large displacements and rotations,

fl the problem is defined by the hyperelastic Neo-Hooke type strain energy potential,

P= ŸW0I l

2HdetF - 1L2 + mI Tr@CD-3

2- Log@detFDM - u .Q M „W0,

where C =FT F is right Cauchy-Green tensor, F = I +õu is deformation gradient,

u is displacements field, Q is prescribed body force, t is prescribed surface traction,

W0 is the initial domain of the problem and l, m are the first and the second Lame's material constants.

The following user subroutines have to be generated:

fl user subroutine for the direct implicit analysis,

fl user subroutine for the sensitivity analysis with respect to the material constants,

arbitrary shape parameter and prescribed boundary condition.

fl user subroutine for the post-processing that returns the Green-Lagrange strain tensor and

the Cauchy stress tensor.

fl user subroutine Task that performs two tasks:

1 task "Volume" that returns the volume and the sensitivity of the volume with respect to all sensitivityparameters

2 task "Misses" that returns the Misses stress in all integration points

3 task "MissesSensitivity" that returns the sensitivity of the Misses stress with respect to given sensitivityparameter in all integration points

ξ

η

X, u, Fx

Y, v, Fy

1

2

34

(-1,-1) (1,-1)

(1,1)(-1,1)

1 2

34

AceFEM Finite Element Environment 77

Page 78: AceFEMManual

à Solution<< " AceGen` ";

SMSInitialize @" ExamplesHypersolid2D ", " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " Q1", " SMSSymmetricTangent " → True

, " SMSGroupDataNames" −> 8" E −elastic modulus ", " ν −poisson ratio ",

" t −thickness ", " Qx −volume load X ", " Qy −volume load Y " <, " SMSSensitivityNames " → 8" E −elastic modulus ", " ν −poisson ratio ",

" t −thickness ", " Qx −volume load X ", " Qy −volume load Y ", " BC" <, " SMSShapeSensitivity " −> True, " SMSDefaultData " −> 821 000, 0.3, 1, 0, 0 <, " SMSCharSwitch " → 8" Volume ", " Misses ", " MissesSensitivity " <

D;

78 AceFEM Finite Element Environment

Page 79: AceFEMManual

Definitions of geometry, kinematics, strain energy ...

ElementDefinitions @sensitivity_, postprocessing_D : = HIf @sensitivity

, H∗DOF sensitivity − essential boundary sensitivity included ∗Lδdof £ SMSReal@

Table @nd$$@i , " st ", SensIndex , j D, 8i , SMSNoNodes<, 8j , SMSDOFGlobal@@i DD<DD;

dof £ Table @SMSReal@nd$$@i , " at ", j D, " Dependency " → 8φ, δdof @@i , j DD<D,

8i , SMSNoNodes<, 8j , SMSDOFGlobal@@i DD<D;

H∗shape sensitivity ∗LδXYZ£ SMSIf @SensType == 2

, SMSReal@Table @nd$$@i , " sX", SensTypeIndex , j D, 8i , SMSNoNodes<, 8j , SMSNoDimensions <DD

, Table @0, 8i , SMSNoNodes<, 8j , SMSNoDimensions <DD;

XYZ£ Table @SMSReal@nd$$@i , " X", j D, " Dependency " → 8φ, δXYZ@@i , j DD<D,

8i , SMSNoNodes< , 8j , SMSNoDimensions <D;

H∗parameter sensitivity ∗L8Em, ν, thick , Qx, Qy< £ Table @

SMSReal@es$$ @" Data ", i D, " Dependency " →

8φ, SMSKroneckerDelta @1, SensType D SMSKroneckerDelta @i , SensTypeIndex D<D, 8i , 1, 5 <D;

,

dof £ SMSReal@Table @nd$$@i , " at ", j D, 8i , SMSNoNodes<, 8j , SMSDOFGlobal@@i DD<DD;

XYZ£ SMSReal@Table @nd$$@i , " X", j D, 8i , SMSNoNodes<, 8j , SMSNoDimensions <DD;

8Em, ν, thick , Qx, Qy< £ SMSReal@Array @es$$ @" Data ", 1D &, 5 DD;

D;

Xi £ XYZ@@All, 1 DD; Yi £ XYZ@@All, 2 DD;

t £ Flatten @dof D;

8ξ, η, ζ, wGauss< ¢ Array @SMSReal@es$$ @" IntPoints ", 1, IpIndex DD &, 4 D;

Ni £ 1 ê 4 8H1 − ξL H1 − ηL, H1 + ξL H1 − ηL, H1 + ξL H1 + ηL, H1 − ξL H1 + ηL<;

X£ SMSFreeze@Ni . Xi D;

Y£ SMSFreeze@Ni . Yi D;

Z £ ζ;

Jm£ SMSD@8X, Y, Z<, 8ξ, η, ζ<D; Jd £ Det @JmD;

SMSDefineDerivative @8ξ, η, ζ<, 8X, Y, Z<, SMSSimplify @SMSInverse @JmDDD;

ui £ dof @@All, 1 DD; vi £ dof @@All, 2 DD;

u £ Ni . ui ; v £ Ni . vi ;

£ SMSD@8u, v, 0 <, 8X, Y, Z<D;

£ SMSFreeze@IdentityMatrix @3D + , " Ignore " → H1 === 0 &LD;

£ Transpose @D. ;

£ Det @D;

8λ, µ< £ SMSHookeToLame@Em, νD;

Π £ 1 ê 2 λ H − 1L^2 + µ H1 ê 2 HTr @D − 3L − Log@DL − 8Qx, Qy<. 8u, v<;

Ψi £ thick Jd wGauss SMSD @Π, t D;

L

AceFEM Finite Element Environment 79

Page 80: AceFEMManual

"Tangent and residual" user subroutine

SMSStandardModule @" Tangent and residual " D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

ElementDefinitions @False, False D;

SMSExport @SMSResidualSign Ψi , p$$ , " AddIn " → True D;

Kij £ SMSD@Ψi , t D;

SMSExport @Kij , s$$ , " AddIn " → True D;

SMSEndDo@D;

"Postprocessing" user subroutine

SMSStandardModule @" Postprocessing " D;

SMSDo@ElementDefinitions @False, False D;

SMSGPostNames= 8" Exx ", " Eyy ", " Exy ", " Sxx ", " Syy ", " Sxy " <;

£ 1 ê 2 H − IdentityMatrix @3DL;

σ £ H1 ê L ∗ SMSD@Π, , " IgnoreNumbers " −> True D . Transpose @D;

SMSExport @Join @Extract @, 881, 1 <, 82, 2 <, 81, 2 <<D,

Extract @σ, 881, 1 <, 82, 2 <, 81, 2 <<DD, gpost$$ @IpIndex , 1D &D;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<D;

SMSNPostNames= 8" DeformedMeshX ", " DeformedMeshY " <;

SMSExport @8ui , vi < êê Transpose, npost$$ D;

"Sensitivity pseudo-load" user subroutine

SMSStandardModule @" Sensitivity pseudo −load " D;

φ £ SMSFictive @D;

SensIndex £ SMSInteger @idata$$ @" SensIndex " DD;

SensType £ SMSInteger @es$$ @" SensType ", SensIndex DD;

SensTypeIndex £ SMSInteger @es$$ @" SensTypeIndex ", SensIndex DD;

SMSDo@ElementDefinitions @True, False D;

SMSExport @SMSResidualSign SMSD @Ψi , φD, p$$ , " AddIn " → True D;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<D;

"Tasks" user subroutine

SMSStandardModule @" Tasks " D;

SMSIf @SMSInteger @Task$$ D −1

,

SMSExport @81, 0, 0, 0, 1 + SMSInteger @idata$$ @" NoSensParameters " DD<, TasksData$$ D;

D;

80 AceFEM Finite Element Environment

Page 81: AceFEMManual

SMSIf @SMSInteger @Task$$ D 1

, SMSDo@ElementDefinitions @False, False D;

SMSExport @thick Jd wGauss , RealOutput$$ @1D, " AddIn " → True D;

SMSDo@φ £ SMSFictive @D;

SensType £ SMSInteger @es$$ @" SensType ", SensIndex DD;

SensTypeIndex £ SMSInteger @es$$ @" SensTypeIndex ", SensIndex DD;

ElementDefinitions @True, True D;

SMSExport @SMSD@thick Jd wGauss , φD,

RealOutput$$ @1 + SensIndex D, " AddIn " → True D;

, 8SensIndex , 1, SMSInteger @idata$$ @" NoSensParameters " DD<D;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<D;

D;

SMSIf @SMSInteger @Task$$ D −2

, SMSExport @83, 0, 0, 0, SMSInteger @es$$ @" id ", " NoIntPoints " DD<, TasksData$$ D;

D;

SMSIf BSMSInteger @Task$$ D 2

, SMSDoBElementDefinitions @False, False D;

σ £ H1 ê L ∗ SMSD@Π, , " IgnoreNumbers " −> True D . Transpose @D;

s = σ −1

3IdentityMatrix @3D Tr @σD;

Misses = H3 ê 2L Total @s s , 2 D ;

SMSExport @Misses , RealOutput$$ @IpIndex DD;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<F;

F;

SMSIf @SMSInteger @Task$$ D −3

, SMSExport @83, 1, 0, 0, SMSInteger @es$$ @" id ", " NoIntPoints " DD<, TasksData$$ D;

D;

Please , consider using SMSSqrt instead of Sqrt.

See also: Expression Optimization

AceFEM Finite Element Environment 81

Page 82: AceFEMManual

SMSIf BSMSInteger @Task$$ D 3

, SMSDoBSensIndex £ SMSInteger @IntegerInput$$ @1DD;

φ £ SMSFictive @D;

SensType £ SMSInteger @es$$ @" SensType ", SensIndex DD;

SensTypeIndex £ SMSInteger @es$$ @" SensTypeIndex ", SensIndex DD;

ElementDefinitions @True, True D;

σ £ H1 ê L ∗ SMSD@Π, , " IgnoreNumbers " −> True D . Transpose @D;

s = σ −1

3IdentityMatrix @3D Tr @σD;

Misses = H3 ê 2L Total @s s , 2 D ;

SMSExport @SMSD@Misses , φD, RealOutput$$ @IpIndex DD;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<F;

F

Please , consider using SMSSqrt instead of Sqrt.

See also: Expression Optimization

Code generation

SMSWrite[];

File: ExamplesHypersolid2D.c Size: 33 859

Methods No.Formulae No.LeafsSKR 159 2491SPP 67 902SSE 154 2619

Tasks 292 4079

Parameter, Shape and Load Sensitivity Analysis of Multi-Domain Example

à DescriptionWith the use of the element generated in previous example analyze the following two-domain example.

82 AceFEM Finite Element Environment

Page 83: AceFEMManual

p3= L

Ω1 Ω2

p1=Ε1 p2=ν2

Ε=1000ν=0.3

Ε=5000ν=0.2

5

10

Qp =4

The sensitivity of the displacement field u= 8u, v< with respect to the following parameters has to be analyzed:

p1 fl elastic modulus of the first domain E1,

p2 fl Poisson ration of the second domain n2,

p3 fl length L,

p4 fl distributed force Q,

p5 fl prescribed displacement v.

AceFEM Finite Element Environment 83

Page 84: AceFEMManual

à Solution<< AceFEM`;

SMTInputData @D;

L = 10; Q= 500; v = 1;

SMTAddDomain@8" Ω1", " ExamplesHypersolid2D ", 8" E ∗" −> 1000, " ν ∗" −> 0.3 <<,

8" Ω2", " ExamplesHypersolid2D ", 8" E ∗" −> 5000, " ν ∗" −> 0.2 <<D;

SMTAddEssentialBoundary @ " X" 0 &, 1 −> 0, 2 → 0D;

SMTAddNaturalBoundary @ " Y" L ê 2 &, 2 → Qê 40D;

SMTAddEssentialBoundary @ " X" L && "Y" 0 &, 2 → −vD;

SMTMesh@" Ω1", " Q1", 820, 20 <, 8880, 0 <, 8L ê 2, 0 <<, 880, L ê 2<, 8L ê 2, L ê 2<<<D;

SMTMesh@" Ω2", " Q1", 820, 20 <, 888L ê 2, 0 <, 8L, 0 <<, 88L ê 2, L ê 2<, 8L, L ê 2<<<D;

SMTAddSensitivity @8H∗ E is the first material parameter on " Ω1" domain ∗L8" E", 1000, " Ω1" → 81, 1 <<,

H∗ ν is the second material parameter on " Ω2" domain ∗L8" ν", 0.2, " Ω2" → 81, 2 <<,

H∗ L is first shape parameter for all domains ∗L8" L", L, _ → 82, 1 <<,

H∗ Q is the first boundary condition parameter − prescribed force ∗L8" Q", 1, _ → 85, 1 <<,

H∗ v is the second boundary condition parameter − prescribed displacement ∗L8" v", 1, _ → 84, 2 <<

<D;

SMTAnalysis @D;

This sets an initial sensitivity of node coordinates (shape velocity field) with respect to L for shape sensitivity analysis.

SMTNodeData@" sX", Map @8P2T ê L, 0 < &, SMTNodesDD;

This sets an initial sensitivity of prescribed force (BC velocity field) with respect to the intensity of the distributed force Q.

SMTNodeData@ " Y" L ê 2 &, " sdB", 80, 1 ê 40., 0, 0 <D;

This sets an initial sensitivity of prescribed displacement (BC velocity field) with respect to prescribed displacement v.

SMTNodeData@" X" L && "Y" 0 &, " sdB", 80, 0, 0, −1<D;

Here is the primal analysis executed.

SMTNextStep @1, 1 D;

While @SMTConvergence @10^ −9, 10 D, SMTNewtonIteration @DD;

SMTStatusReport @D;

Tê∆T=1. ê1. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=2.84941 × 10−13

ê7.89811 × 10−11 Iter êTotal =6ê6 Status =0ê8Convergence <

84 AceFEM Finite Element Environment

Page 85: AceFEMManual

SMTShowMesh@" BoundaryConditions " → True, " DeformedMesh " → True D

This performs the sensitivity analysis with respect to all parameters.

SMTSensitivity @D;

AceFEM Finite Element Environment 85

Page 86: AceFEMManual

GraphicsGrid @Partition @Join @Array @

HSMTIData @" SensIndex ", D;

SMTShowMesh@" DeformedMesh " → True,

" Mesh" → False, " Field " → SMTPost@2, " st " D,

" Legend " → False, " Contour " → 5, " Label " →

8" ∂vê∂", 8" E", " ν", " L", " Q", " v" <@@DD, " ", Automatic <DL &, 5 D, 8"" <D, 2 DD

∑vê∑E Min= -0.3136e-3 Max= 0.65908e-4 ∑vê∑n Min= -0.9939e-1 Max= 0

∑vê∑L Min= -0.2577e-1 Max= 0.74954e-1 ∑vê∑Q Min= 0 Max= 0.88206e-3

∑vê∑v Min= -0.1045e1 Max= 0

This evaluates the volume of the mesh and sensitivity of the volume with respect to all parameters. As expected, only the third parameter (length L) effects the volume.

SMTTask@" Volume " D

850., 0., 0., 5., 0., 0. <

86 AceFEM Finite Element Environment

Page 87: AceFEMManual

This shows the distribution of the Misses stress.

SMTShowMesh@" DeformedMesh " → True, " Mesh" → False,

" Field " → SMTTask@" Misses " D, " Contour " → True D

AceFEM0.8187e1Min.0.2204e4Max.

0.429e20.623e20.818e20.101e30.120e30.140e30.159e3

This shows the distribution of the sensitivity of Misses stress with respect to elastic modulus of the first domain E1.

SMTShowMesh@" DeformedMesh " → True, " Mesh" → False,

" Field " → SMTTask@" MissesSensitivity ", " IntegerInput " → 81<D, " Contour " → True D

AceFEM-0.456e-1Min.0.1090Max.

-0.14e-30.420e-20.856e-20.129e-10.172e-10.216e-10.259e-1

AceFEM Finite Element Environment 87

Page 88: AceFEMManual

Solid, Finite Strain Element for Direct and Sensitivity Analysis

à DescriptionGenerate two-dimensional, four node finite element for the analysis of the steady state problems in the mechanics ofsolids. The element has the following characteristics:

fl quadrilateral topology,

fl 4 node element,

fl isoparametric mapping from the reference to the actual frame,

fl global unknowns are displacements of the nodes,

fl the element should allow arbitrary large displacements and rotations,

fl the problem is defined by the hyperelastic Neo-Hooke type strain energy potential,

P= ŸW0I l

2HdetF - 1L2 + mI Tr@CD-3

2- Log@detFDM - u .Q M „W0,

where C =FT F is right Cauchy-Green tensor, F = I +õu is deformation gradient,

u is displacements field, Q is prescribed body force, t is prescribed surface traction,

W0 is the initial domain of the problem and l, m are the first and the second Lame's material constants.

The following user subroutines have to be generated:

fl user subroutine for the direct implicit analysis,

fl user subroutine for the sensitivity analysis with respect to the material constants,

arbitrary shape parameter and prescribed boundary condition.

fl user subroutine for the post-processing that returns the Green-Lagrange strain tensor and

the Cauchy stress tensor.

fl user subroutine Task that performs two tasks:

1 task "Volume" that returns the volume and the sensitivity of the volume with respect to all sensitivityparameters

2 task "Misses" that returns the Misses stress in all integration points

3 task "MissesSensitivity" that returns the sensitivity of the Misses stress with respect to given sensitivityparameter in all integration points

88 AceFEM Finite Element Environment

Page 89: AceFEMManual

ξ

η

X, u, Fx

Y, v, Fy

1

2

34

(-1,-1) (1,-1)

(1,1)(-1,1)

1 2

34

à Solution<< " AceGen` ";

SMSInitialize @" ExamplesHypersolid2D ", " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " Q1", " SMSSymmetricTangent " → True

, " SMSGroupDataNames" −> 8" E −elastic modulus ", " ν −poisson ratio ",

" t −thickness ", " Qx −volume load X ", " Qy −volume load Y " <, " SMSSensitivityNames " → 8" E −elastic modulus ", " ν −poisson ratio ",

" t −thickness ", " Qx −volume load X ", " Qy −volume load Y ", " BC" <, " SMSShapeSensitivity " −> True, " SMSDefaultData " −> 821 000, 0.3, 1, 0, 0 <, " SMSCharSwitch " → 8" Volume ", " Misses ", " MissesSensitivity " <

D;

AceFEM Finite Element Environment 89

Page 90: AceFEMManual

Definitions of geometry, kinematics, strain energy ...

ElementDefinitions @sensitivity_, postprocessing_D : = HIf @sensitivity

, H∗DOF sensitivity − essential boundary sensitivity included ∗Lδdof £ SMSReal@

Table @nd$$@i , " st ", SensIndex , j D, 8i , SMSNoNodes<, 8j , SMSDOFGlobal@@i DD<DD;

dof £ Table @SMSReal@nd$$@i , " at ", j D, " Dependency " → 8φ, δdof @@i , j DD<D,

8i , SMSNoNodes<, 8j , SMSDOFGlobal@@i DD<D;

H∗shape sensitivity ∗LδXYZ£ SMSIf @SensType == 2

, SMSReal@Table @nd$$@i , " sX", SensTypeIndex , j D, 8i , SMSNoNodes<, 8j , SMSNoDimensions <DD

, Table @0, 8i , SMSNoNodes<, 8j , SMSNoDimensions <DD;

XYZ£ Table @SMSReal@nd$$@i , " X", j D, " Dependency " → 8φ, δXYZ@@i , j DD<D,

8i , SMSNoNodes< , 8j , SMSNoDimensions <D;

H∗parameter sensitivity ∗L8Em, ν, thick , Qx, Qy< £ Table @

SMSReal@es$$ @" Data ", i D, " Dependency " →

8φ, SMSKroneckerDelta @1, SensType D SMSKroneckerDelta @i , SensTypeIndex D<D, 8i , 1, 5 <D;

,

dof £ SMSReal@Table @nd$$@i , " at ", j D, 8i , SMSNoNodes<, 8j , SMSDOFGlobal@@i DD<DD;

XYZ£ SMSReal@Table @nd$$@i , " X", j D, 8i , SMSNoNodes<, 8j , SMSNoDimensions <DD;

8Em, ν, thick , Qx, Qy< £ SMSReal@Array @es$$ @" Data ", 1D &, 5 DD;

D;

Xi £ XYZ@@All, 1 DD; Yi £ XYZ@@All, 2 DD;

t £ Flatten @dof D;

8ξ, η, ζ, wGauss< ¢ Array @SMSReal@es$$ @" IntPoints ", 1, IpIndex DD &, 4 D;

Ni £ 1 ê 4 8H1 − ξL H1 − ηL, H1 + ξL H1 − ηL, H1 + ξL H1 + ηL, H1 − ξL H1 + ηL<;

X£ SMSFreeze@Ni . Xi D;

Y£ SMSFreeze@Ni . Yi D;

Z £ ζ;

Jm£ SMSD@8X, Y, Z<, 8ξ, η, ζ<D; Jd £ Det @JmD;

SMSDefineDerivative @8ξ, η, ζ<, 8X, Y, Z<, SMSSimplify @SMSInverse @JmDDD;

ui £ dof @@All, 1 DD; vi £ dof @@All, 2 DD;

u £ Ni . ui ; v £ Ni . vi ;

£ SMSD@8u, v, 0 <, 8X, Y, Z<D;

£ SMSFreeze@IdentityMatrix @3D + , " Ignore " → H1 === 0 &LD;

£ Transpose @D. ;

£ Det @D;

8λ, µ< £ SMSHookeToLame@Em, νD;

Π £ 1 ê 2 λ H − 1L^2 + µ H1 ê 2 HTr @D − 3L − Log@DL − 8Qx, Qy<. 8u, v<;

Ψi £ thick Jd wGauss SMSD @Π, t D;

L

90 AceFEM Finite Element Environment

Page 91: AceFEMManual

"Tangent and residual" user subroutine

SMSStandardModule @" Tangent and residual " D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

ElementDefinitions @False, False D;

SMSExport @SMSResidualSign Ψi , p$$ , " AddIn " → True D;

Kij £ SMSD@Ψi , t D;

SMSExport @Kij , s$$ , " AddIn " → True D;

SMSEndDo@D;

"Postprocessing" user subroutine

SMSStandardModule @" Postprocessing " D;

SMSDo@ElementDefinitions @False, False D;

SMSGPostNames= 8" Exx ", " Eyy ", " Exy ", " Sxx ", " Syy ", " Sxy " <;

£ 1 ê 2 H − IdentityMatrix @3DL;

σ £ H1 ê L ∗ SMSD@Π, , " IgnoreNumbers " −> True D . Transpose @D;

SMSExport @Join @Extract @, 881, 1 <, 82, 2 <, 81, 2 <<D,

Extract @σ, 881, 1 <, 82, 2 <, 81, 2 <<DD, gpost$$ @IpIndex , 1D &D;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<D;

SMSNPostNames= 8" DeformedMeshX ", " DeformedMeshY " <;

SMSExport @8ui , vi < êê Transpose, npost$$ D;

"Sensitivity pseudo-load" user subroutine

SMSStandardModule @" Sensitivity pseudo −load " D;

φ £ SMSFictive @D;

SensIndex £ SMSInteger @idata$$ @" SensIndex " DD;

SensType £ SMSInteger @es$$ @" SensType ", SensIndex DD;

SensTypeIndex £ SMSInteger @es$$ @" SensTypeIndex ", SensIndex DD;

SMSDo@ElementDefinitions @True, False D;

SMSExport @SMSResidualSign SMSD @Ψi , φD, p$$ , " AddIn " → True D;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<D;

"Tasks" user subroutine

SMSStandardModule @" Tasks " D;

SMSIf @SMSInteger @Task$$ D −1

,

SMSExport @81, 0, 0, 0, 1 + SMSInteger @idata$$ @" NoSensParameters " DD<, TasksData$$ D;

D;

AceFEM Finite Element Environment 91

Page 92: AceFEMManual

SMSIf @SMSInteger @Task$$ D 1

, SMSDo@ElementDefinitions @False, False D;

SMSExport @thick Jd wGauss , RealOutput$$ @1D, " AddIn " → True D;

SMSDo@φ £ SMSFictive @D;

SensType £ SMSInteger @es$$ @" SensType ", SensIndex DD;

SensTypeIndex £ SMSInteger @es$$ @" SensTypeIndex ", SensIndex DD;

ElementDefinitions @True, True D;

SMSExport @SMSD@thick Jd wGauss , φD,

RealOutput$$ @1 + SensIndex D, " AddIn " → True D;

, 8SensIndex , 1, SMSInteger @idata$$ @" NoSensParameters " DD<D;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<D;

D;

SMSIf @SMSInteger @Task$$ D −2

, SMSExport @83, 0, 0, 0, SMSInteger @es$$ @" id ", " NoIntPoints " DD<, TasksData$$ D;

D;

SMSIf BSMSInteger @Task$$ D 2

, SMSDoBElementDefinitions @False, False D;

σ £ H1 ê L ∗ SMSD@Π, , " IgnoreNumbers " −> True D . Transpose @D;

s = σ −1

3IdentityMatrix @3D Tr @σD;

Misses = H3 ê 2L Total @s s , 2 D ;

SMSExport @Misses , RealOutput$$ @IpIndex DD;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<F;

F;

SMSIf @SMSInteger @Task$$ D −3

, SMSExport @83, 1, 0, 0, SMSInteger @es$$ @" id ", " NoIntPoints " DD<, TasksData$$ D;

D;

Please , consider using SMSSqrt instead of Sqrt.

See also: Expression Optimization

92 AceFEM Finite Element Environment

Page 93: AceFEMManual

SMSIf BSMSInteger @Task$$ D 3

, SMSDoBSensIndex £ SMSInteger @IntegerInput$$ @1DD;

φ £ SMSFictive @D;

SensType £ SMSInteger @es$$ @" SensType ", SensIndex DD;

SensTypeIndex £ SMSInteger @es$$ @" SensTypeIndex ", SensIndex DD;

ElementDefinitions @True, True D;

σ £ H1 ê L ∗ SMSD@Π, , " IgnoreNumbers " −> True D . Transpose @D;

s = σ −1

3IdentityMatrix @3D Tr @σD;

Misses = H3 ê 2L Total @s s , 2 D ;

SMSExport @SMSD@Misses , φD, RealOutput$$ @IpIndex DD;

, 8IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DD<F;

F

Please , consider using SMSSqrt instead of Sqrt.

See also: Expression Optimization

Code generation

SMSWrite[];

File: ExamplesHypersolid2D.c Size: 33 859

Methods No.Formulae No.LeafsSKR 159 2491SPP 67 902SSE 154 2619

Tasks 292 4079

Parameter, Shape and Load Sensitivity Analysis of Multi-Domain Example

à DescriptionWith the use of the element generated in previous example analyze the following two-domain example.

AceFEM Finite Element Environment 93

Page 94: AceFEMManual

p3= L

Ω1 Ω2

p1=Ε1 p2=ν2

Ε=1000ν=0.3

Ε=5000ν=0.2

5

10

Qp =4

The sensitivity of the displacement field u= 8u, v< with respect to the following parameters has to be analyzed:

p1 fl elastic modulus of the first domain E1,

p2 fl Poisson ration of the second domain n2,

p3 fl length L,

p4 fl distributed force Q,

p5 fl prescribed displacement v.

94 AceFEM Finite Element Environment

Page 95: AceFEMManual

à Solution<< AceFEM`;

SMTInputData @D;

L = 10; Q= 500; v = 1;

SMTAddDomain@8" Ω1", " ExamplesHypersolid2D ", 8" E ∗" −> 1000, " ν ∗" −> 0.3 <<,

8" Ω2", " ExamplesHypersolid2D ", 8" E ∗" −> 5000, " ν ∗" −> 0.2 <<D;

SMTAddEssentialBoundary @ " X" 0 &, 1 −> 0, 2 → 0D;

SMTAddNaturalBoundary @ " Y" L ê 2 &, 2 → Qê 40D;

SMTAddEssentialBoundary @ " X" L && "Y" 0 &, 2 → −vD;

SMTMesh@" Ω1", " Q1", 820, 20 <, 8880, 0 <, 8L ê 2, 0 <<, 880, L ê 2<, 8L ê 2, L ê 2<<<D;

SMTMesh@" Ω2", " Q1", 820, 20 <, 888L ê 2, 0 <, 8L, 0 <<, 88L ê 2, L ê 2<, 8L, L ê 2<<<D;

SMTAddSensitivity @8H∗ E is the first material parameter on " Ω1" domain ∗L8" E", 1000, " Ω1" → 81, 1 <<,

H∗ ν is the second material parameter on " Ω2" domain ∗L8" ν", 0.2, " Ω2" → 81, 2 <<,

H∗ L is first shape parameter for all domains ∗L8" L", L, _ → 82, 1 <<,

H∗ Q is the first boundary condition parameter − prescribed force ∗L8" Q", 1, _ → 85, 1 <<,

H∗ v is the second boundary condition parameter − prescribed displacement ∗L8" v", 1, _ → 84, 2 <<

<D;

SMTAnalysis @D;

This sets an initial sensitivity of node coordinates (shape velocity field) with respect to L for shape sensitivity analysis.

SMTNodeData@" sX", Map @8P2T ê L, 0 < &, SMTNodesDD;

This sets an initial sensitivity of prescribed force (BC velocity field) with respect to the intensity of the distributed force Q.

SMTNodeData@ " Y" L ê 2 &, " sdB", 80, 1 ê 40., 0, 0 <D;

This sets an initial sensitivity of prescribed displacement (BC velocity field) with respect to prescribed displacement v.

SMTNodeData@" X" L && "Y" 0 &, " sdB", 80, 0, 0, −1<D;

Here is the primal analysis executed.

SMTNextStep @1, 1 D;

While @SMTConvergence @10^ −9, 10 D, SMTNewtonIteration @DD;

SMTStatusReport @D;

Tê∆T=1. ê1. λê∆λ=1. ê1. ˛∆a˛ê˛Ψ˛=2.8497 × 10−13

ê7.89614 × 10−11 Iter êTotal =6ê6 Status =0ê8Convergence <

AceFEM Finite Element Environment 95

Page 96: AceFEMManual

SMTShowMesh@" BoundaryConditions " → True, " DeformedMesh " → True D

This performs the sensitivity analysis with respect to all parameters.

SMTSensitivity @D;

96 AceFEM Finite Element Environment

Page 97: AceFEMManual

GraphicsGrid @Partition @Join @Array @

HSMTIData @" SensIndex ", D;

SMTShowMesh@" DeformedMesh " → True,

" Mesh" → False, " Field " → SMTPost@2, " st " D,

" Legend " → False, " Contour " → 5, " Label " →

8" ∂vê∂", 8" E", " ν", " L", " Q", " v" <@@DD, " ", Automatic <DL &, 5 D, 8"" <D, 2 DD

∑E Min= -0.3136e-3 Max= 0.65908 ∑vê∑n Min= -0.9939e-1 Max= 0

∑L Min= -0.2577e-1 Max= 0.74954 ∑vê∑Q Min= 0 Max= 0.025

∑vê∑v Min= -0.1045e1 Max= 0

This evaluates the volume of the mesh and sensitivity of the volume with respect to all parameters. As expected, only the third parameter (length L) effects the volume.

SMTTask@" Volume " D

850., 0., 0., 5., 0., 0. <

AceFEM Finite Element Environment 97

Page 98: AceFEMManual

This shows the distribution of the Misses stress.

SMTShowMesh@" DeformedMesh " → True, " Mesh" → False,

" Field " → SMTTask@" Misses " D, " Contour " → True D

AceFEM0.8187e1Min.0.2204e4Max.

0.429e20.623e20.818e20.101e30.120e30.140e30.159e3

This shows the distribution of the sensitivity of Misses stress with respect to elastic modulus of the first domain E1.

SMTShowMesh@" DeformedMesh " → True, " Mesh" → False,

" Field " → SMTTask@" MissesSensitivity ", " IntegerInput " → 81<D, " Contour " → True D

AceFEM-0.456e-1Min.0.1090Max.

-0.14e-30.420e-20.856e-20.129e-10.172e-10.216e-10.259e-1

98 AceFEM Finite Element Environment

Page 99: AceFEMManual

Inflating the Tyre

à DescriptionThe load such as gas pressure acts perpendicular to the actual deformed surface. Generate 2D surface traction elementwith the following characteristics:

fl surface is composed of linear segments,

fl traction is perpendicular to the deformed surface of the domain,

fl global unknowns are displacements of the nodes,

fl contribution of the surface pressure to the virtual work of the problem is defined by

Y = ŸG tdu„G

where du is variation of the displacement field, t is prescribed surface traction and G is the

deformed boundary of the problem.

With the derived code and the element from the previous examples analyze the problem of inflating the tyre. Calculatethe shape of the tyre when the pressure inside is 0 and when the pressure is 27.

à Gas pressure elementDue to the surface pressure acting perpendicular to the deformed mesh the surface traction element contributes also tothe global tangent matrix and makes the global tangent unsymmetrical.

AceFEM Finite Element Environment 99

Page 100: AceFEMManual

<< AceGen`;

SMSInitialize @" ExamplesGasPressure ", " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " L1"

, " SMSSymmetricTangent " → False

, " SMSDefaultIntegrationCode " → 0

, " SMSGroupDataNames" −> 8" p −pressure ", " t −thickness " <, " SMSDefaultData " −> 80, 1 <D;

SMSStandardModule @" Tangent and residual " D;

Xi £ SMSReal@8nd$$@1, " X", 1 D, nd$$@1, " X", 2 D<D;

Xj £ SMSReal@8nd$$@2, " X", 1 D, nd$$@2, " X", 2 D<D;

ui £ SMSReal@8nd$$@1, " at ", 1 D, nd$$@1, " at ", 2 D<D;

uj £ SMSReal@8nd$$@2, " at ", 1 D, nd$$@2, " at ", 2 D<D;

8p, thick < £ Array @SMSReal@es$$ @" Data ", DD &, 2 D;

xi £ Xi + ui ;

xj £ Xj + uj ;

L £ SMSSqrt @Hxj − xi L. Hxj − xi LD;

8cos φ, sin φ< £ Hxj − xi L ê L;

ξ £ SMSFictive @D;

8u, v< =1

28 H1 − ξL , H1 + ξL <. 8ui , uj <;

p = 88cos φ, −sin φ<, 8sin φ, cos φ<<. 80, p<;

Ψi £ thick Integrate B−L

2p. SMSD@8u, v<, Join @ui , uj DD, 8ξ, −1, 1 <F;

Kij £ SMSD@Ψi , Join @ui , uj DD;

SMSExport @Ψi , p$$ , " AddIn " → True D;

SMSExport @Kij , s$$ , " AddIn " → True D;

SMSWrite @D;

Method : SKR10 formulae, 182 sub −expressions

@1D File created : ExamplesGasPressure . c Size : 4105

à Analysis<< AceFEM`;

SMTInputData @D;

SMTAddDomain@8" tyre ", " ExamplesHypersolid2D ", 8" E ∗" −> 1000., " ν ∗" −> .3 <<,

8" gas ", " ExamplesGasPressure ", 8<<D;

ne = 40;

SMTAddEssentialBoundary @ " Y" < −1.02 &, 1 −> 0, 2 −> 0D;

SMTMesh@" tyre ", " Q1", 8ne, 4 <, Table @81.1 8Cos@φD, Sin @φD<, 8 Cos@φD, Sin @φD<<, 8φ, 0, 2. π, 2. π ê 20<D êê Transpose D;

SMTMesh@" gas ", " L1", 8ne<, Table @8Cos@φD, Sin @φD<, 8φ, 0, 2. π, 2. π ê 20<D êêReverse D;

SMTAnalysis @D;

undef = SMTShowMesh@" BoundaryConditions " → True, " Marks " → False, " Show" −> False,

" Mesh" → False, " Elements " → RGBColor @1, 0, 0 DD;

SMTNextStep @1, 1 D;

The first task is to find out the shape of the empty tyre. We only know that the shape of the weightless tyre is circular.The shape of the empty tyre can be obtained by starting with the weightless tyre and then increasing the volume force toits final value.

100 AceFEM Finite Element Environment

Page 101: AceFEMManual

graph = Table @SMTNextStep @0, 0 D;

SMTDomainData@" tyre ", " Data ", " Qy ∗" −> − force D;

While @SMTConvergence @10^ −9, 10 D, SMTNewtonIteration @DD;

SMTShowMesh@" DeformedMesh " → True,

" Show" → " Window" False, PlotRange → 88−1.5, 1.5 <, 8−1.4, 1.2 <<D, 8force , 1, 5, 1 <D;

Show@undef , graph D

The gas pressure is then increased in order to obtain the shape of the tyre for various gas pressure levels.

graph = 8<;

Map@HSMTNextStep @0, 0 D;

SMTDomainData@" gas ", " Data ", " p ∗" −> D;

While @SMTConvergence @10^ −9, 10 D, SMTNewtonIteration @DD;

AppendTo @graph , SMTShowMesh@" DeformedMesh " → True, " Show" → " Window" False, " Domains " → " tyre " DD;

L &, label = Join @Range@0, 2, .2 D, Range @3, 30, 6 DDD;

AceFEM Finite Element Environment 101

Page 102: AceFEMManual

GraphicsGrid @Partition @MapThread @Show@undef , ,

DisplayFunction → Identity, PlotLabel → 2,

PlotRange → 88−1.5, 1.5 <, 8−1.4, 2 <<D &, 8graph , label <D, 4 D, Spacings −> 0, ImageSize −> 450D

0. 0.2 0.4 0.6

0.8 1. 1.2 1.4

1.6 1.8 2. 3

9 15 21 27

102 AceFEM Finite Element Environment

Page 103: AceFEMManual

Three Dimensional, Elasto-Plastic Element

à DescriptionGenerate the three-dimensional, eight node finite element for the analysis of the transient coupled problems in themechanics of solids. The element has the following characteristics:

fl hexahedral topology,

fl 8 nodes,

fl isoparametric mapping from the reference to the actual frame,

fl global unknowns are displacements of the nodes,

fl the element should take into account only small strains,

fl surface tractions and body forces are neglected,

fl the classical Hooke's law for the elastic response and an ideal elasto-plastic material law for the plastic response.

à Three Dimensional, Elasto-Plastic Element

Here the AceGen and the AceFEM interface variables are initialized.

<< AceGen`;

SMSInitialize @" ExamplesElastoPlastic3D ",

" VectorLength " → 1000, " Environment " −> " AceFEM" D;

nstate = 7; nhistory = nstate + 1;

SMSTemplate @" SMSTopology " → " H1", " SMSSymmetricTangent " → True

, " SMSNoTimeStorage " → nhistory es$$ @" id ", " NoIntPoints " D, " SMSPostIterationCall " → True

, " SMSGroupDataNames" −>

8" E −elastic modulus ", " ν −poisson ration ", " σy −yield stress " <, " SMSDefaultData " −> 821 000, 0.3, 24 <

D;

AceFEM Finite Element Environment 103

Page 104: AceFEMManual

Here starts the definition of "tangent and residual" user subroutine. The nodal coordinates, the global degrees of freedom and thematerial parameters are introduced and connected to the chosen FE environment.

SMSStandardModule @" Tangent and residual " D;

8Xi , Yi , Zi < £ Array @SMSReal@nd$$@2, " X", 1DD &, 83, 8 <D;

8ut , vt , wt < £ Array @SMSReal@nd$$@2, " at ", 1DD &, 83, 8 <D;

8, ν, σy< £ Array @SMSReal@es$$ @" Data ", D, 1., 2. D &, 3 D;

8λ, µ< £ SMSHookeToLame@, νD;

Here all global degrees of freedom are collected in one vector so that the proper degree of freedom ordering is established. For thegeneration of the characteristic formulae, the array of all global degrees of freedom t is introduced.

t £ SMSArray @8ut , vt , wt < êê Transpose êê Flatten D;

Here the loop over the numerical integration points starts.

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

8ξ, η, ζ, wGauss< £ Array @SMSReal@es$$ @" IntPoints ", , IpIndex DD &, 4 D;

Here the isoparametric shape functions Ni and the isoparametric mapping from the actual (X,Y,Z) to the reference coordinates(x,h,z) is introduced. The SMSFreeze function is used here in order to enable differentiation with respect to the coordinates X,Y,Zlater on.

8ξi , ηi , ζi < = 88−1, 1, 1, −1, −1, 1, 1, −1<,

8−1, −1, 1, 1, −1, −1, 1, 1 <, 8−1, −1, −1, −1, 1, 1, 1, 1 <<;

Ni £ MapThread @ 1 ê 8 H1 + ξ 1L H1 + η 2L H1 + ζ 3L &, 8ξi , ηi , ζi <D;

8X, Y, Z< £ SMSFreeze@8Ni . Xi , Ni . Yi , Ni . Zi <D;

Jm£ SMSD@8X, Y, Z<, 8ξ, η, ζ<D; Jd £ Det @JmD;

This interpolates displacements within the element and gives the displacement gradient and the small strain tensore.

u= ui Ni , v= vi Ni , w=wi Ni

=

u,X u,Y u,Z

v,X v,Y v,Z

w,X w,Y w,Z

e =1

2I +TM

8u, v, w< £ 8Ni . ut , Ni . vt , Ni . wt <;

t £

SMSD@8u, v, w<, 8X, Y, Z<, " Dependency " → 888ξ, η, ζ<, 8X, Y, Z<, SMSInverse @JmD<<D;

The SMSFreeze function is used here in order to enable differentiation with respect to the elements of the strain tensor later on.

ε £ SMSFreezeBHt + Transpose @t DL

2, " KeepStructure " → True F;

104 AceFEM Finite Element Environment

Page 105: AceFEMManual

The p is the vector of the state variables for the IpIndex-th integration point at the end of the previous time step. It contains thecomponents of the plastic strain tensor pep and the plastic multiplier lmp I = 9pep1,1,

pep2,2,pep3,3,

pep1,2,pep1,3,

pep2,3,plm=M.

The location of the p vector within the elements history variables field ed$$["hp",i] is calculated and stored into the hindexvariable.

An additional history variable "switch" stores information whether the material point is in elastic regime (switch=0) or in plasticregime (switch=1000+ ).

hindex £ SMSInteger @HIpIndex − 1L nhistory D;

p £ SMSReal@Array @ed$$@" hp", hindex + D &, nstate DD;

switch £ SMSReal@ed$$@" hp", hindex + nstate + 1DD;

The FP[b_ , task_ ] function calculates accordingly to the task required the yield function , the system of local equations F orelastic strain energy P.

ee = e - ep

P = PHeeLs = sHeeL

s = s -1

3I trs

=3

2s : s - sy

=∑

∑s, Dep = l

°m

F = 9ep -pep - Dep, =

ΦΠ@b_, task_D : = Module B8<,

εp =

bP1T bP4T bP5TbP4T bP2T bP6TbP5T bP6T bP3T

; εpp =

pP1T pP4T pP5TpP4T pP2T pP6TpP5T pP6T pP3T

;

εe = ε − εp;

If Btask == " Π"

, Π £ Simplify @λ ê 2 Tr @εeD^2 + µ Total @εe εe, 2 DD;

, σ £ Simplify @λ Tr @εeD IdentityMatrix @3D + 2 µ εe D;

σ £ SMSFreeze@σ, " KeepStructure " → True D;

s = σ −1

3IdentityMatrix @3D Tr @σD;

= H3 ê 2L Total @s s , 2 D − σy;

If @task == " "

, £ ;

, = Simplify @SMSD@ , σ, " Symmetric " → True, " IgnoreNumbers " → True DD;

Φ £ Join @Extract @εp − εpp − HbP7T − p@@7DDL ,

881, 1 <, 82, 2 <, 83, 3 <, 81, 2 <, 81, 3 <, 82, 3 <<D, 8 £ <D;

DF

F

AceFEM Finite Element Environment 105

Page 106: AceFEMManual

ΦΠ@p, " " D;

SMSIf B HSMSInteger @idata$$ @" Iteration " DD == 1 && switch 0L »»

SMSInteger @ idata$$ @" Iteration " DD > 1 && <1

108F;

Please , consider using SMSSqrt instead of Sqrt.

See also: Expression Optimization

This is elastic part of the elasto-plastic formulation. The state variables are set to be the same as at the end of the previous time step.

• p;

SMSExport @p, Array @ed$$@" ht ", hindex + 1D &, nstate DD;

SMSExport @0, ed$$@" ht ", hindex + nstate + 1DD;

SMSElse@D;

Here the local iterative loop starts. Independent vector of state variables t is introduced. The trial value for t is taken to be theone at the end of the previous time step (p).

t • p;

SMSDo@iter , 1, 30, 1, t D;

Here the local system of equations F is evaluated, linearized and one iteration of the local Newton-Raphson procedure is performed.

ΦΠ@t , " Φ" D;

KΦ £ SMSD@Φ, t D;

LU• SMSLUFactor @KΦD;

∆ £ SMSLUSolve@LU, −ΦD;

t § t + ∆;

Please , consider using SMSSqrt instead of Sqrt.

See also: Expression Optimization

Please , consider using SMSSqrt instead of Sqrt.

See also: Expression Optimization

Forward elimination and back substitution of 7 equations.

106 AceFEM Finite Element Environment

Page 107: AceFEMManual

Exit the sub-iterative loop if the local equations are satisfied or the convergence was not reached. Consistent linearization of the global system of equations requires evaluation of the implicit dependencies among the state variables and the components of the total strain tensor. Implicit dependencies are obtained by definition.

KF∑

∑e= -

∑F

∑eï

∑e.

The values of the state variables are stored back to the history data of the element.

SMSIf @Sqrt @∆. ∆D < 1 ê 10^9 D;

δε • SMSLUSolve@LU, −SMSD@Φ, SMSVariables @εD, " Constant " → t DD;

SMSExport @1000 + SMSAbs@D, ed$$@" ht ", hindex + nstate + 1DD;

SMSExport @t , Array @ed$$@" ht ", hindex + D &, nstate DD;

SMSBreak@D;

SMSEndIf @D;

SMSIf @iter == " 29" D;

SMSExport @81, 2 <, 8idata$$ @" SubDivergence " D, idata$$ @" ErrorStatus " D<D;

SMSBreak@D;

SMSEndIf @D;

SMSEndDo@t , δεD;

Forward elimination and back substitution of

7 equations and 6 right hand sides

Get new, independent state variables and derive strain potential for them again. In this case, the automatic differentiation procedurewill ignore the sub-iteration loop.

§ SMSFreeze@t , " Dependency " → 8SMSVariables @εD, δε<D;

SMSEndIf @D;

Here the system of global equations Y and the global tangent matrix KY are evaluated and exported to the output parameters of theuser subroutine. One characteristic formula is generated for the arbitrary element of Y and one characteristic formula for thearbitrary element of KY.

ΦΠ@, " Π" D;

SMSDo@i , 1, 24 D;

Ψ £ Jd wGauss SMSD@Π, t , i , " Constant " → D;

SMSExport @SMSResidualSign Ψ, p$$@i D, " AddIn " → True D;

SMSIf @SMSInteger @idata$$ @" PostIteration " DD == 1D;

SMSContinue @D;

SMSEndIf @D;

SMSDo@j , 1, 24 D;

Kt = SMSD@Ψ, t , j D;

SMSExport @Kt , s$$@i , j D, " AddIn " → True D;

SMSEndDo@D;

SMSEndDo@D;

This is the end of the numerical integration loop.

SMSEndDo@D;

AceFEM Finite Element Environment 107

Page 108: AceFEMManual

Here starts the definition of the "Postprocessing" user subroutine. The values of the plastic strain tensor and the plastic multiplierare postprocessed.

SMSStandardModule @" Postprocessing " D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

hindex £ SMSInteger @HIpIndex − 1L nhistory D;

SMSGPostNames=

8" Exxp ", " Eyyp ", " Ezzp ", " Exyp ", " Exzp ", " Eyzp ", " Plastic mult. ", " Switch " <;

SMSExport @SMSReal@Array @ed$$@" ht ", hindex + D &, nhistory DD,

gpost$$ @IpIndex , 1D &D;

SMSEndDo@D;

SMSNPostNames= 8" DeformedMeshX ", " DeformedMeshY ", " DeformedMeshZ ", " u", " v", " w" <;

8ut , vt , wt < £ Array @SMSReal@nd$$@2, " at ", 1DD &, 83, 8 <D;

SMSExport @8ut , vt , wt , ut , vt , wt < êê Transpose, npost$$ D;

Here the element source code is written in "3DElastoPlastic.c" file.

SMSWrite @D;

Method : SKR554 formulae, 8680 sub −expressions

Method : SPP27 formulae, 431 sub −expressions

@35D File created :

ExamplesElastoPlastic3D.c Size : 31 402

à Analysis<< AceFEM`;

SMTInputData @D;

SMTAddDomain@" A", " ExamplesElastoPlastic3D ",

8" E ∗" −> 1000., " ν ∗" −> .3, " σy ∗" −> 10. <D;

SMTAddEssentialBoundary @8 " X" == 0 &, 1 −> 0, 2 −> 0, 3 −> 0<, 8 " X" == 10 &, 3 −> −1<D;

SMTMesh@" A", " H1", 815, 6, 6 <, 88880, 0, 0 <, 810, 0, 0 <<, 880, 2, 0 <, 810, 2, 0 <<<,

8880, 0, 3 <, 810, 0, 2 <<, 880, 2, 3 <, 810, 2, 2 <<<<D;

SMTAnalysis @D;

108 AceFEM Finite Element Environment

Page 109: AceFEMManual

SMTNextStep @1, 0.1 D;

While @While @step = SMTConvergence @10^ −8, 10, 8" Adaptive ", 8, .001, .1, 0.5 <D,

SMTNewtonIteration @D; D;

SMTStatusReport @D;

If @step P4T === " MinBound ", SMTStatusReport @D; D;

step @@3DD, If @step @@1DD, SMTStepBack @D; D;

SMTNextStep @1, step @@2DDDD;

SMTSimulationReport @D;

Tê∆T=1. ê1. λê∆λ=0.1 ê0.1 ˛∆a˛ê˛Ψ˛=2.57967 × 10−16

ê1.63165 × 10−15 Iter êTotal =3ê3 Status =0ê8Convergence <

Tê∆T=2. ê1. λê∆λ=0.2 ê0.1 ˛∆a˛ê˛Ψ˛=1.58875 × 10−15

ê3.60134 × 10−15 Iter êTotal =3ê6 Status =0ê8Convergence <

Tê∆T=3. ê1. λê∆λ=0.3 ê0.1 ˛∆a˛ê˛Ψ˛=1.38621 × 10−15

ê4.35272 × 10−15 Iter êTotal =3ê9 Status =0ê8Convergence <

Tê∆T=4. ê1. λê∆λ=0.4 ê0.1 ˛∆a˛ê˛Ψ˛=3.14954 × 10−9

ê2.50226 × 10−13 Iter êTotal =5ê14 Status =0ê8Convergence <

Tê∆T=5. ê1. λê∆λ=0.5 ê0.1 ˛∆a˛ê˛Ψ˛=2.03555 × 10−11

ê7.8609 × 10−15 Iter êTotal =6ê20 Status =0ê8Convergence <

No. of nodes 784No. of elements 540No. of equations 2156Data memory HKBytes L 805Solver memory HKBytes L 3132No. of steps 5No. of steps back 0Step efficiency H%L 100.Total no. of iterations 20Average iterations êstep 4.Total time HsL 2.463Total solver time HsL 1.382Total solver time H%L 56.1104Total element time HsL 0.791Total element time H%L 32.1153Average time êiteration HsL 0.12315Average solver time HsL 0.0691Average element time HsL 0.0000732408USER−IDataUSER−RData

AceFEM Finite Element Environment 109

Page 110: AceFEMManual

GraphicsGrid @ Partition @Map@SMTShowMesh@" Field " −> ,

" DeformedMesh " → True, " Mesh" → False, " Legend " −> " MinMax" D &,

8" Plastic ∗", " Exxp ", " Ezzp ", " Exzp " <D, 2 D, Spacings −> 0, ImageSize −> 450D

110 AceFEM Finite Element Environment

Page 111: AceFEMManual

Axisymmetric, finite strain elasto-plastic element

à DescriptionGenerate axisymmetric four node finite element for the analysis of the steady state problems in the mechanics of solids.The element has the following characteristics:

fl quadrilateral topology,

fl 4 node element,

fl isoparametric mapping from the reference to the actual frame

fl global unknowns are displacements of the nodes,

fl volumetric/deviatoric split

fl Taylor expansion of shape functions

fl J2 finite strain plasticity

fl isothropic hardening of the form: sy = sy0 + K a + IY¶ - sy0M H1-Exp@-d aD L

The detailed description of the steps is given in Problem 6 The only difference is in kinematical equations and thedefinition of the FP function. The state variables in this case are the components of an inverse plastic right Cauchy

strain tensor Cpl-1, a plastic multiplier gm and a Lagrange volumetric constrain l

I b = 9Cpl-111, Cpl

-122, Cpl-133, Cpl

-112, gm, l= M. The state variables are stored as history dependent real type values per each

integration point of each element (SMSNoTimeStorage). Additionally to the state variables, the component of thedeformation tensor IF1,1, F1,2, F2,1, F2,2, F3,3M are also stored for post-processing as arbitrary real values per element

(SMSNoElementData).

à Solution<< AceGen`;

AceFEM Finite Element Environment 111

Page 112: AceFEMManual

ΦΠ@b_, task_D : = Module B8<,

= IdentityMatrix @3D +bP1T bP4T 0

bP4T bP2T 0

0 0 bP3T;

= IdentityMatrix @3D +pP1T pP4T 0

pP4T pP2T 0

0 0 pP3T;

8γ, γ< = 8bP5T, pP5T<;

be £ . .Transpose @D;

b £ SMSFreeze@be, " Ignore " → H === 0 &L, " Symmetric " −> True D;

8µ, κ< £ SMSHookeToBulk @Em, νD;

db £ Det @bD;

Π = κ ê 2 H1 ê 2 Hdb − 1L − 1 ê 2 Log@dbDL + µ ê 2 ITr Adb−1ë3 bE − 3M;

If Btask == " Π"

, Π £ Π;

, τ £ Simplify @2 b. SMSD@Π, b, " IgnoreNumbers " → True, " Symmetric " → True DD;

τ £ SMSFreeze@τ, " KeepStructure " → True D;

s = τ −1

3IdentityMatrix @3D Tr @τD;

α = 2 ê 3 γ;

σy £ 2 ê 3 Hσy0 + Kf α + HYinf − σy0L H1 − Exp@−δ αDLL;

= SMSSqrt @Total @s s , 2 DD − σy;

If @task == " "

, £ ;

, = SMSD@ , τ, " IgnoreNumbers " → True, " Symmetric " → True D;

M£ Simplify @−2 Hγ − γL D;

£ Simplify @. − SMSMatrixExp @MD. . D;

Φ £ 8P1, 1 T, P2, 2 T, P3, 3 T, P1, 2 T, £ <;

DF

F

SMSInitialize @" ExamplesFiniteStrain ",

" Environment " −> " AceFEM", " VectorLength " → 3000D;

nstate = 5; iswitch = 6; nhistory = 6; nhdata = 5;

SMSTemplate @" SMSTopology " → " Q1", " SMSSymmetricTangent " → True,

" SMSPostIterationCall " → True,

" SMSNoTimeStorage " → nhistory es$$ @" id ", " NoIntPoints " D,

" SMSNoElementData " → nhdata es$$ @" id ", " NoIntPoints " D,

" SMSGroupDataNames" −> 8" E −elastic modulus ", " ν −poisson ratio ",

" σy −initial yield stress ", " K −hardening coefficient ",

" σyInf −residual flow stress ", " δ −saturation exponent " <, " SMSDefaultData " −> 821 000, 0.3, 24, 0, 24, 0 <D

SMSStandardModule @" Tangent and residual " D

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

112 AceFEM Finite Element Environment

Page 113: AceFEMManual

Xi £ SMSReal@Array @nd$$@1, " X", 1 D &, 4 DD;

Yi £ SMSReal@Array @nd$$@1, " X", 2 D &, 4 DD;

ui £ SMSReal@Array @nd$$@1, " at ", 1 D &, 4 DD;

vi £ SMSReal@Array @nd$$@1, " at ", 2 D &, 4 DD;

t £ SMSArray @Flatten @Transpose @8ui , vi <DDD;

hindex £ SMSInteger @HIpIndex − 1L nhistory D;

8Em, ν, σy0 , Kf , Yinf , δ < £

Array @SMSReal@es$$ @" Data ", 1DD &, SMSGroupDataNames êê Length D;

p £ SMSReal@Array @ed$$@" hp", hindex + D &, nstate DD;

switch £ SMSReal@ed$$@" hp", hindex + iswitch DD;

8ξ, η, ζ, wGauss< ¢ Array @SMSReal@es$$ @" IntPoints ", 1, IpIndex DD &, 4 D;

Ni £1

48H1 − ξL H1 − ηL, H1 + ξL H1 − ηL, H1 + ξL H1 + ηL, H1 − ξL H1 + ηL<;

X£ SMSFreeze@Ni . Xi D;

Y£ SMSFreeze@Ni . Yi D;

Z £ SMSFreeze@ζD;

Jm£ SMSD@8X, Y, Z<, 8ξ, η, ζ<D; Jd £ Det @JmD;

SMSDefineDerivative @8ξ, η, ζ<, 8X, Y, Z<, SMSInverse @JmDD;

8X0, Jd0 < £ SMSReplaceAll @8X, Jd<, ξ → 0, η → 0D;

8NXξ, NXη, NYξ, NYη< = 8SMSD@SMSD@Ni , XD, ξD,

SMSD@SMSD@Ni , XD, ηD, SMSD@SMSD@Ni , YD, ξD, SMSD@SMSD@Ni , YD, ηD<;

8NXξ0, NXη0, NYξ0, NYη0< £ SMSReplaceAll @8NXξ, NXη, NYξ, NYη<, ξ → 0, η → 0D;

8V, V0< £ Simplify @Integrate @SMSRestore @8 X Jd, X0 Jd0<, ξ ηD êê Normal êê Simplify, 8ξ, −1, 1 <, 8η, −1, 1 <DD;

NX0£1

VSimplify @Integrate @SMSRestore @Jd X SMSD@Ni , XD, ξ ηD êê Normal êê Simplify,

8ξ, −1, 1 <, 8η, −1, 1 <DD;

NY0£1

VSimplify @Integrate @SMSRestore @Jd X SMSD@Ni , YD, ξ ηD êê Normal êê Simplify,

8ξ, −1, 1 <, 8η, −1, 1 <DD;

Nφ £1

VSimplify @Integrate @SMSRestore @Jd Ni , ξ ηD êê Normal êê Simplify,

8ξ, −1, 1 <, 8η, −1, 1 <DD;

v =1

3HNX0. ui + NY0. vi + Nφ. ui L IdentityMatrix @3D;

dv = HNX0+ NXξ0 ξ + NXη0 ηL. ui + HNY0+ NYξ0 ξ + NYη0 ηL. vi +Nφ. ui ;

d =

HNX0+ NXξ0 ξ + NXη0 ηL. ui −1

3dv NY0. ui 0

NX0. vi HNY0+NYξ0 ξ + NYη0 ηL. vi −1

3dv 0

0 0 Nφ. ui −1

3dv

;

£ Simplify @v + dD;

£ SMSFreeze@IdentityMatrix @3D + , " KeepStructure " → True D;

AceFEM Finite Element Environment 113

Page 114: AceFEMManual

ΦΠ@p, " " D;

SMSIf B HSMSInteger @idata$$ @" Iteration " DD == 1 && switch 0L »»

SMSInteger @idata$$ @" Iteration " DD > 1 && <1

108F;

• p;

SMSExport @p, ed$$@" ht ", hindex + D &D;

SMSExport @0, ed$$@" ht ", hindex + iswitch DD;

SMSElse@D;

t • p;

SMSDo@iter , 1, 30, 1, t D;

ΦΠ@t , " Φ" D;

KΦ £ SMSD@Φ, t D;

LU• SMSLUFactor @KΦD;

∆ £ SMSLUSolve@LU, −ΦD;

t § t + ∆;

SMSIf @SMSSqrt @∆. ∆D < 1 ê 10^9 D;

δε • SMSLUSolve@LU, −SMSD@Φ, SMSVariables @D, " Constant " → t DD;

SMSExport @1000 + SMSAbs@D, ed$$@" ht ", hindex + iswitch DD;

SMSExport @t , ed$$@" ht ", hindex + D &D;

SMSBreak@D;

SMSEndIf @D;

SMSIf @iter == 29D;

SMSExport @81, 2 <, 8idata$$ @" SubDivergence " D, idata$$ @" ErrorStatus " D<D;

SMSBreak@D;

SMSEndIf @D;

SMSEndDo@t , δεD;

§ SMSFreeze@t , " Dependency " → 8SMSVariables @D, δε<D;

SMSEndIf @D;

ΦΠ@, " Π" D;

SMSDo@i , 1, 8 D;

Ψ £ 2 πV

V0X0 Jd0 wGauss SMSD@Π, t , i , " Constant " → D;

SMSExport @SMSResidualSign Ψ, p$$@i D, " AddIn " → True D;

SMSIf @SMSInteger @idata$$ @" PostIteration " DD == 1 D;

SMSExport @8P1, 1 T, P1, 2 T, P2, 1 T, P2, 2 T, P3, 3 T<,

ed$$@" Data ", HIpIndex − 1L nhdata + D &D;

SMSContinue @D;

SMSEndIf @D;

SMSDo@j , i , 8 D;

Kt = SMSD@Ψ, t , j D;

SMSExport @Kt , s$$ @i , j D, " AddIn " → True D;

SMSEndDo@D;

SMSEndDo@D;

SMSEndDo@D;

Closed form solution of matrix exponent.

See also: SMSMatrixExp

Forward elimination and back substitution of 5 equations.

Forward elimination and back substitution of

5 equations and 5 right hand sides

114 AceFEM Finite Element Environment

Page 115: AceFEMManual

SMSStandardModule @" Postprocessing " D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

H∗ here the contents of the above cell with the tag Data is includ ed∗LSMSEvaluateCellsWithTag @" Data ", " Session " D;

i £ SMSReal@Array @ed$$@" Data ", HIpIndex − 1L nhdata + D &, nhdata DD;

£

i P1T i P2T 0

i P3T i P4T 0

0 0 i P5T;

£ SMSReal@Array @ed$$@" ht ", hindex + D &, nstate DD;

ΦΠ@, " " D;

Cauchy = τ ê Det @D;

GreenLagrange = 1 ê 2 HTranspose @D. − IdentityMatrix @3DL;

PlasticDeformation = 2 ê 3 P5T;

SMSGPostNames= 8" Sxx", " Sxy", " Sxz ", " Syx ", " Syy ", " Syz ", " Szx ", " Szy ", " Szz ",

" Exx ", " Exy ", " Exz ", " Eyx ", " Eyy ",

" Eyz ", " Ezx ", " Ezy ", " Ezz ", " Plastic deformation " <;

SMSExport @8Cauchy , GreenLagrange , PlasticDeformation < êê Flatten,

gpost$$ @IpIndex , D &D;

SMSEndDo@D;

SMSNPostNames= 8" DeformedMeshX ", " DeformedMeshY ", " u", " v" <;

SMSExport @8ui , vi , ui , vi < êê Transpose, npost$$ D;

@137−1595D Include Tag : Data H1 cells found, 1 evaluated L

SMSWrite @D;

Method : SKR1251 formulae, 19 942 sub −expressions

Method : SPP63 formulae, 963 sub −expressions

@200D File created :

ExamplesFiniteStrain.c Size : 66 087

Cyclic tension test, advanced post-processing , animationsWith the use of the elements generated in Problem 8 the following cyclic plasticity example is analysed.

AceFEM Finite Element Environment 115

Page 116: AceFEMManual

à Analysis Session<< AceFEM`;

SMTInputData @D;

SMTAddDomain@" A", " ExamplesFiniteStrain ", 8" E ∗" −> 206.9, " ν ∗" −> .29,

" σy ∗" −> 0.45, " K ∗" −> 0.12924, " σyInf ∗" −> 0.715, " δ ∗" −> 16.93 <D;

L = 1.6; R = 0.4; ne = 10;

∆L = 0.16;

SMTMesh@" A", " Q1", 8 2 ne, ne<,

8880.4, 0 <, 80.4, 0.4 <<, 880, 0 <, 80, 0.4 <<<, " InterpolationOrder " → 1D;

SMTMesh@" A", " Q1", 8 ne, ne<, 8880.4, 0.4 <, 80.4, 0.8 <<, 880, 0.4 <, 80, 0.8 <<<,

" InterpolationOrder " → 1D;

SMTMesh@" A", " Q1", 8 ne, ne<,

8880.4, 0.8 <, 80.41, 0.89 <, 80.43, 0.98 <, 80.49, 1.06 <, 80.5, 1.1 <<,

880, 0.8 <, 80, 0.89 <, 80, 0.98 <, 80, 1.06 <, 80, 1.1 <<<, " InterpolationOrder " → 1D;

SMTMesh@" A", " Q1", 8 ne ê 2, ne<, 8880.5, 1.1 <, 80.5, 1.6 <<, 880, 1.1 <, 80, 1.6 <<<,

" InterpolationOrder " → 1D;

SMTAddEssentialBoundary @8 " X" == 0. &, 1 −> 0<,

8 " Y" == 0. &, 2 −> 0<, 8 " Y" L &, 2 −> ∆L <D;

Here the post-processing data base file name ("cyclic") is specified.

SMTAnalysis @" Output " −> " tmp.out ", " PostOutput " → " cyclic " D;

With the SMTSave command definitions of arbitrary number of symbols can be storder into the post-processing data base.

SMTSave@∆L, L, RD;

116 AceFEM Finite Element Environment

Page 117: AceFEMManual

SMTShowMesh@" BoundaryConditions " → True D

Here the cyclic loading simulation is performed. Function l(t) defines the load history with l as the load multiplier. The SMTPutcommand writes current values of post-processing data into the data base. Current time is used as an keyword that will be used laterto retrive informations from data base. Additonaly the resulting force at the top of the speciment is olso stored into data base.

Clear @λD; λ@t_D : = If @OddQ@Floor @Ht + 1L ê 2DD, 1, −1D H2 Floor @Ht + 1L ê 2D − tL ;

AceFEM Finite Element Environment 117

Page 118: AceFEMManual

Plot @λ@t D, 8t , 0, 10 <D

2 4 6 8 10

-1.0

-0.5

0.5

1.0

SMTNextStep @0.01, λD;

While @While @step = SMTConvergence @10^ −8, 15, 8" Adaptive Time ", 8, .0001, 0.1, 10 <D,

SMTNewtonIteration @D; D;

If @Not @step @@1DDD, force = HPlus @@ SMTResidual @" Y" L &DL@@2DD;

SMTPut@SMTRData@" Time " D, force , " TimeFrequency " → 0.1 D;

SMTShowMesh@" DeformedMesh " → True,

" Field " → " Plastic deformation ", " Show" → " Window" D;

D;

If @step @@4DD === " MinBound ", SMTStatusReport @" ∆T<∆Tmin " D; D;

step @@3DD, If @step @@1DD, SMTStepBack @D; D;

SMTNextStep @step P2T, λDD;

118 AceFEM Finite Element Environment

Page 119: AceFEMManual

SMTSimulationReport @D;

No. of nodes 506No. of elements 450No. of equations 944Data memory HKBytes L 376Solver memory HKBytes L 212No. of steps 115No. of steps back 23Step efficiency H%L 83.3333Total no. of iterations 864Average iterations êstep 6.26087Total time HsL 61.178Total solver time HsL 1.03Total solver time H%L 1.68361Total element time HsL 31.89Total element time H%L 52.1266Average time êiteration HsL 0.0708079Average solver time HsL 0.00119213Average element time HsL 0.0000820216USER−IDataUSER−RData

à Postprocessing Session

Here the new, independent session starts by reading input data from previously stored post-processing data base file.

<< AceFEM`;

SMTInputData @D;

SMTAnalysis @" PostInput " −> " cyclic " D;

The SMTGet[] command returns all keywords and the names of stored post-processing quantities.

8allkeys , allpost < = SMTGet@D;

allpost

allkeys êê Length

8DeformedMeshX, DeformedMeshY, Exx, Exy, Exz, Eyx, Eyy, Eyz , Ezx, Ezy, Ezz,

Plastic deformation, Sxx, Sxy, Sxz, Syx, Syy, Syz, Szx, Szy, Szz, u, v <

97

AceFEM Finite Element Environment 119

Page 120: AceFEMManual

The SMTGet[key] command reads the information storder under the keyword allkeys[[10]].

force = SMTGet@allkeys @@10DDDallkeys @@10DDSMTShowMesh@" BoundaryConditions " → True, " DeformedMesh " → True,

" Field " −> " Plastic deformation ", " Marks " → False, " Contour " → True D8−0.242828 <

1.07279

AceFEM0Min.0.3199Max.

Plasticdeformation

0.383e-10.766e-10.1140.1530.1910.2290.268

120 AceFEM Finite Element Environment

Page 121: AceFEMManual

Here all post-processing quantities are evaluated at point R,0. Note that the valu of "R" was stored by the SMTSave command atthe analysis time and restored by the SMTAnalysis["PostInput"->"cyclic"] command.

8Range@allpost êê Length D, allpost , SMTPostData @allpost , 8R, 0 <D< êê Transpose êêTableForm

1 DeformedMeshX −0.05416882 DeformedMeshY 0.3 Exx −0.1050324 Exy 0.0002161445 Exz 0.6 Eyx 0.0002161447 Eyy 0.3436918 Eyz 0.9 Ezx 0.10 Ezy 0.11 Ezz −0.1248112 Plastic deformation 0.26532213 Sxx 0.33570414 Sxy −0.0017950215 Sxz 0.16 Syx −0.0017950217 Syy −0.4749618 Syz 0.19 Szx 0.20 Szy 0.21 Szz 0.19934522 u −0.054168823 v 0.

Here the f(l) diagram is presented.

ListLinePlot @Map@Hforce = SMTGet@D@@1DD; 8SMTRData@" Multiplier " D, force <L &, allkeys DD

-1.0 -0.5 0.5 1.0

-0.4

-0.2

0.2

0.4

AceFEM Finite Element Environment 121

Page 122: AceFEMManual

Here the evolution of some Iu, v, plastic deformation,syyM postprocessing quantities in point R/2,L/3 is presented.

ListLinePlot @Map@8 , SMTGet@D; SMTPostData @" u", 8Rê 2, L ê 3. <D< &, allkeys DD

2 4 6 8 10

-0.01

0.01

0.02

ListLinePlot @Map@8 , SMTGet@D; SMTPostData @" v", 8Rê 2, L ê 3. <D< &, allkeys DD

2 4 6 8 10

-0.05

0.05

0.10

0.15

0.20

122 AceFEM Finite Element Environment

Page 123: AceFEMManual

ListLinePlot @Map@8 , SMTGet@D; SMTPostData @" Plast ∗", 8Rê 2, L ê 3. <D< &, allkeys DD

2 4 6 8 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

ListLinePlot @Map@8 , SMTGet@D; SMTPostData @" Syy ", 8Rê 2, L ê 3. <D< &, allkeys DD

2 4 6 8 10

-0.5

0.5

Here the sequence of pictures in GIF format is generated and stored in a subdirectory of the current directory with the name pldef.

If @FileType @" pldef " D === Directory,

DeleteDirectory @" pldef ", DeleteContents → True DD;

Map@HSMTGet@D;

SMTShowMesh@" DeformedMesh " → True,

" Field " → " Plastic deformation ", " Contour " −> True

, PlotRange → 88− .1 R, 2 R<, 80, L + ∆L<<, " Label " → 8" t =", SMTRData@" Time " D, " λ=", SMTRData@" Multiplier " D<, " Show" → 8" Animation ", " pldef " <D;

L &, allkeys D;

AceFEM Finite Element Environment 123

Page 124: AceFEMManual

The sequence of pictures is here transformed into the Mathematica type animation.

SMTMakeAnimation @" pldef " D

The sequence of pictures is here transformed into the animated gif file (pldef.gif), with the delay of 20/100 of seconds betweenframes and running in an infinite loop.

SMTMakeAnimation @" pldef ", " Flash " D

pldef.swf

Please follow the link to the animation galery http: êêwww.fgg.uni −lj.si êsymechê .

Solid, Finite Strain Element for Dynamic AnalysisSee also 2D snooker simulation .

<< " AceGen` ";

SMSInitialize @" ExamplesHypersolidDynNewmark ", " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " Q1", " SMSSymmetricTangent " → True

, " SMSNoTimeStorage " → 4 es$$ @" id ", " NoIntPoints " D, " SMSGroupDataNames" −> 8" E −elastic modulus ",

" ν −poisson ratio ", " t −thickness of the element ", " Qx −volume load X ",

" Qy −volume load Y ", " ρ −density ", " β −Newmark beta ", " δ −Newmark delta " <, " SMSDefaultData " −> 821 000, 0.3, 1, 0, 0, 2700, 0.25, 0.5 <D

SMSStandardModule @" Tangent and residual " D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

124 AceFEM Finite Element Environment

Page 125: AceFEMManual

Kinematics

H∗ this is notebook cell with the tag Hypersolid −definitions ∗LXi £ SMSReal@Array @nd$$@1, " X", 1 D &, 4 DD;

Yi £ SMSReal@Array @nd$$@1, " X", 2 D &, 4 DD;

ui £ SMSReal@Array @nd$$@1, " at ", 1 D &, 4 DD;

vi £ SMSReal@Array @nd$$@1, " at ", 2 D &, 4 DD;

uiP £ SMSReal@Array @nd$$@1, " ap", 1 D &, 4 DD;

viP £ SMSReal@Array @nd$$@1, " ap", 2 D &, 4 DD;

8Em, ν, thick , Qx, Qy, ρ, α, δ< £ Array @SMSReal@es$$ @" Data ", 1DD &, 8 D;

8ξ, η, ζ, wGauss< ¢ Array @SMSReal@es$$ @" IntPoints ", 1, IpIndex DD &, 4 D;

Ni £1

48H1 − ξL H1 − ηL, H1 + ξL H1 − ηL, H1 + ξL H1 + ηL, H1 − ξL H1 + ηL<;

X£ SMSFreeze@Ni . Xi D;

Y£ SMSFreeze@Ni . Yi D;

Jm£ SMSD@8X, Y<, 8ξ, η<D; Jd £ Det @JmD;

SMSDefineDerivative @8ξ, η<, 8X, Y<, SMSSimplify @SMSInverse @JmDDD;

u £ Ni . ui ; v £ Ni . vi ;

uP £ Ni . uiP ; vP £ Ni . viP ;

hi £ SMSInteger @4 HIpIndex − 1LD;

8duP, dvP, d2uP, d2vP< £ SMSReal@ Array @ed$$@" hp", hi + 1D &, 4 D D;

dt £ SMSReal@ rdata$$ @" TimeIncrement " D D;

8du, dv< £

δ ê Hα dt L H8u, v< − 8uP, vP<L + H1 − δ ê αL 8duP, dvP< + dt H1 − δ ê H2 αLL 8d2uP, d2vP<;

8d2u , d2v < £ 1 ê Hα dt ^2LH8u, v< − 8uP, vP< − dt 8duP, dvP< − dt ^2 H1 ê 2 − αL 8d2uP, d2vP<L;

£ SMSD@8u, v<, 8X, Y<D;

£ SMSFreeze@IdentityMatrix @2D + D;

£ Transpose @D. ;

£ Det @D;

8λ, µ< £ SMSHookeToLame@Em, νD;

Π £1

2λ H − 1L2 + µ

1

2HTr @D − 2L − Log@D − 8Qx− ρ d2u , Qy− ρ d2v <. 8u, v<;

SMSIf A 10−9E;

SMSExport @2, idata$$ @" ErrorStatus " DD;

SMSEndIf @D;

SMSExport @8du, dv , d2u , d2v <, Array @ed$$@" ht ", + hi D &, 4 D D;

= Flatten @Transpose @8ui , vi <DD;

Ψi £ thick Jd wGauss SMSD @Π, , " Constant " → 8d2u , d2v <D;

SMSExport @SMSResidualSign Ψi , p$$ , " AddIn " → True D;

Kij £ SMSD@Ψi , D;

SMSExport @Kij , s$$ , " AddIn " → True D;

SMSEndDo@D;

AceFEM Finite Element Environment 125

Page 126: AceFEMManual

SMSStandardModule @" Postprocessing " D;

SMSDo@IpIndex , 1, SMSInteger @es$$ @" id ", " NoIntPoints " DDD;

H∗ here the contents of the above cell with the tag Kinematics is included ∗LSMSEvaluateCellsWithTag @" Kinematics ", " Session " D;

SMSGPostNames= 8" Exx", " Eyy", " Exy ", " Sxx ", " Syy ", " Sxy " <;

£ 1 ê 2 H − IdentityMatrix @2DL;

σ £ H1 ê L ∗ SMSD@Π, , " IgnoreNumbers " −> True D . Transpose @D;

SMSExport @Join @Extract @, 881, 1 <, 82, 2 <, 81, 2 <<D,

Extract @σ, 881, 1 <, 82, 2 <, 81, 2 <<DD, gpost$$ @IpIndex , 1D &D;

SMSEndDo@D;

SMSNPostNames= 8" DeformedMeshX ", " DeformedMeshY ", " u", " v" <;

SMSExport @8ui , vi , ui , vi < êê Transpose, npost$$ D;

@6−253D Include Tag : Kinematics H2 cells found, 1 evaluated L

SMSWrite @D;

Method : SKR211 formulae, 3132 sub −expressions

Method : SPP68 formulae, 960 sub −expressions

@13D File created :

ExamplesHypersolidDynNewmark.cSize : 15 855

2D slave node, line master segment element

Description

Generate the node-to-segment element for analysis of the 2-D frictionless contact problems. The element has thefollowing characteristics:

fl 3 node element: one slave node + two dummy nodes (for linear master segment)

fl global unknowns are displacements of the nodes,

fl the element should allow arbitrary large displacements,

fl the impenetrability condition is regularized with penalty method and formulated as energy potential:

P= : ⁄i=1N 1

2r gN

2 for

0 for

gN § 0

gN > 0

where r is penalty parameter, and gN is normal gap (at the point of orthogonal projection of slave point on

master boundary). N is a number of nodes on slave contact surface.

126 AceFEM Finite Element Environment

Page 127: AceFEMManual

The following user subroutines have to be generated:

fl user subroutine for specification of nodal positions,

fl user subroutine for the direct implicit analysis,

AceFEM Finite Element Environment 127

Page 128: AceFEMManual

Solution

<< AceGen`

SMSInitialize @" ExamplesCTD2N1L1Pen ", " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " LX", " SMSNoDimensions " → 2, " SMSNoNodes" → 3,

" SMSSymmetricTangent " → True, " SMSDOFGlobal" → 82, 2, 2 <, " SMSSegments" → 88<<,

" SMSAdditionalNodes " → " 8Null,Null <&", " SMSNodeID" → 8" D", " D −D", " D −D" <,

" SMSCharSwitch " → 8" CTD2N1", " CTD2L1", " ContactElement " <D;

SMSStandardModule @" Nodal information " D;

Xi £ Array @SMSReal@nd$$@1, " X", 1 DD &, 1 D;

Yi £ Array @SMSReal@nd$$@1, " X", 2 DD &, 1 D;

ui £ Array @SMSReal@nd$$@1, " at ", 1 DD &, 1 D;

vi £ Array @SMSReal@nd$$@1, " at ", 2 DD &, 1 D;

uiP £ Array @SMSReal@nd$$@1, " ap", 1 DD &, 1 D;

viP £ Array @SMSReal@nd$$@1, " ap", 2 DD &, 1 D;

x £ 8Xi + ui , Yi + vi <;

xP £ 8Xi + uiP , Yi + viP <;

SMSExport @8Flatten @8x, xP<D<, d$$D;

SMSStandardModule @" Tangent and residual " D;

8Xs, X1, X2< £ Array @SMSReal@nd$$@1, " X", 2DD &, 8SMSNoNodes, SMSNoDimensions <D;

8us , u1, u2< £ Array @SMSReal@nd$$@1, " at ", 2DD &, 8SMSNoNodes, SMSNoDimensions <D;

u £ Flatten @8us , u1, u2<D;

SMSGroupDataNames = 8" ρ −penalty parameter " <;

SMSDefaultData = 81000<;

8ρ< £ Array @SMSReal@es$$ @" Data ", 1DD &, 1 D;

H∗ check if contact is not detected by the global search ∗LSMSIf @SMSInteger @ns$$ @2, " id ", " Dummy" DD == 1D;

SMSReturn @D;

SMSElse@D;

xs = Xs + us ; x1 = X1 + u1; x2 = X2 + u2;

l £ SMSSqrt @Hx2 − x1L. Hx2 − x1LD;

t £ x2 − x1 ;

eT £t

t . t;

eN£ H80, 0, 1 <%8eTP1T, eTP2T, 0 <LP81, 2 <T;

ξ £Hxs − x1L. eT

l;

xξ £ x1 + Hx2 − x1L ξ;

r £ −xs + xξ;

gN£ r . eN;

SMSIf @gN > 0D;

SMSReturn @D;

SMSEndIf @D;

Π £1

2ρ gN2 ;

SMSDo@i , 1, 6 D;

Ri £ SMSD@Π, u, i D;

SMSExport @SMSResidualSign Ri , p$$@i DD;

SMSDo@j , i , 6 D;

Kij = SMSD@Ri , u, j D;

SMSExport @Kij , s$$ @i , j DD;

128 AceFEM Finite Element Environment

Page 129: AceFEMManual

SMSEndDo@D;

SMSEndDo@D;

SMSEndIf @D;

SMSWrite @D;

Postprocessing of the integration point

quantities is suspended for the element.

See also: SMSReferenceNodes

Default integration code is set to

21 . See also: SMSDefaultIntegrationCode

Method : PAN3 formulae, 60 sub −expressions

Method : SKR63 formulae, 894 sub −expressions

@3D File created : ExamplesCTD2N1L1Pen . c Size : 6671

2D indentation problem

Description

Use the contact element from Problem 1:2D slave node →line master segment element and hyper-solid element from Problem 2 to analyse the simple 2D indentation problem: small elastic box pressed down intolarge elastic box.

AceFEM Finite Element Environment 129

Page 130: AceFEMManual

Solution

<< AceFEM`;

SMTInputData @D;

SMTAddDomain@8" Solid1 ", " ExamplesHypersolid2D ", 8" E ∗" −> 70 000, " ν ∗" −> 0.3 <<,

8" Solid2 ", " ExamplesHypersolid2D ", 8" E ∗" −> 210 000, " ν ∗" −> 0.3 <<,

8" Contact ", " ExamplesCTD2N1L1Pen ", 8" ρ ∗" −> 200 000 <<D;

SMTMesh@" Solid1 ",

" Q1", 813, 7 <, 888−1 ê 2, 0.1 <, 81 ê 2, 0.1 <<, 88−1 ê 2, 0.6 <, 81 ê 2, 0.6 <<<,

" BodyID " → " B1", " BoundaryDomainID " −> " Contact " D;

SMTMesh@" Solid2 ",

" Q1", 810, 10 <, 888−1, −1<, 81, −1<<, 88−1, 0 <, 81, 0 <<<,

" BodyID " → " B2", " BoundaryDomainID " −> " Contact " D;

SMTAddEssentialBoundary @8" Y" == −1 &, 1 −> 0, 2 −> 0<, 8" Y" == 0.6 &, 1 −> 0, 2 −> −1<D;

SMTAnalysis @" Output " −> " tmp1.out " D;

SMTRData@" ContactSearchTolerance ", 0.01 D;

SMTNextStep @0, 0.1 D;

While @While @step = SMTConvergence @10^ −8, 10, 8" Adaptive ", 7, 0.0001, 0.2, 0.35 <D,

SMTNewtonIteration @D; D;

If @step P4T === " MinBound ", SMTStatusReport @" ∆λ < ∆λmin " D; D;

step @@3DD,

If @step @@1DD, SMTStepBack @D, SMTShowMesh@" DeformedMesh " → True, " Marks " → False, " Domains " → 8" Solid1 ", " Solid2 " <,

" Show" → " Window", " Field " −> " Syy ", " Contour " → True D; D;

SMTNextStep @1, step @@2DDDD;

SMTShowMesh@" DeformedMesh " → True, " Field " −> " Syy ", " Contour " → True D

AceFEM-0.522e5Min.0.2316e4Max.

Syy

-0.28e5-0.24e5-0.19e5-0.15e5-0.11e5-0.67e4-0.24e4

130 AceFEM Finite Element Environment

Page 131: AceFEMManual

2D slave node, smooth master segment element

Description

Generate the node-to-segment smooth element for analysis of the 2-D contact problems (Coulomb friction, augmentedLagrange multipliers method). The element has the following characteristics:

fl 8 node element: one slave node + two dummy slave nodes (referential area) + four master nodes (3rd orderBezier curve) + lagrange multipliers node,

fl global unknowns are displacements of the nodes + lagrange multipliers,

fl the element should allow arbitrary large displacements,

fl the impenetrability condition is regularized with augmented lagrange multipliers method and formulated asenergy potential (for each node on slave contact surface):

P=PN +PT

where:

PN = :1

2 rI gN + lN >-

2 -lN2 M for

0 for

gN § 0

gN > 0

and

PT = :1

2 rI gT + lT >-

2 -lT2 M for

0 for

gT § 0

gT > 0

and

x>- =: x for

0 for

x§ 0

x> 0

and r is regularisation parameter, gN is normal gap (at the point of orthogonal projection of slave point on

master boundary), gT is tangential slip.

lN and lT are lagrange multipliers and have a meaning of normal and tangential nominal pressurerespectively.

The following user subroutines have to be generated:

fl user subroutine for specification of nodal positions,

fl user subroutine for the direct implicit analysis,

AceFEM Finite Element Environment 131

Page 132: AceFEMManual

Solution

<< AceGen` ;

driver = 2;

SMSInitialize @" ExamplesCTD2N1DN2L1DN1AL",

" Environment " → " AceFEM", " VectorLength " → 5000D;

SMSTemplate @" SMSTopology " → " LX",

" SMSNoDimensions " → 2,

" SMSNoNodes" → 8,

" SMSDOFGlobal" → 82, 2, 2, 2, 2, 2, 2, 2 <,

" SMSSegments" → 88<<,

" SMSAdditionalNodes " → " 8Null,Null,Null,Null,Null,Null, 1<&",

" SMSNodeID" → 8" D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " Lagr −AL −S" <,

" SMSCharSwitch " → 8" CTD2N1DN2", " CTD2L1DN1", " ContactElement " <,

" SMSNoTimeStorage " → 2 H2 + idata$$ @" NoSensParameters " DL,

" SMSSymmetricTangent " → False,

" SMSDefaultIntegrationCode " → 0 D;

H∗ ============================================================== ∗LSMSStandardModule @" Nodal information " D;

x £ Array @ SMSReal@nd$$@1, " X", DD &, 2 D + Array @ SMSReal@nd$$@1, " at ", DD &, 2 D;

xP £ Array @ SMSReal@nd$$@1, " X", DD &, 2 D + Array @ SMSReal@nd$$@1, " ap", DD &, 2 D;

SMSExport @8Flatten @8x, xP<D< , d$$D;

H∗ ============================================================== ∗LSMSStandardModule @" Tangent and residual " D;

H∗Element data ∗LSMSGroupDataNames =

8" µ −friction coefficient ", " ρ −regularization parameter ", " t −thickness " <;

SMSDefaultData = 80, 1, 1 <;

8µ, ρ, thick < £ Array @SMSReal@es$$ @" Data ", DD &, 3 D;

H∗Read and set element values ∗LXiaug £ Array @SMSReal@nd$$@ , " X", 1 DD &, 8 D;

Yiaug £ Array @SMSReal@nd$$@ , " X", 2 DD &, 8 D;

uiaug £ Array @SMSReal@nd$$@ , " at ", 1 DD &, 8 D;

viaug £ Array @SMSReal@nd$$@ , " at ", 2 DD &, 8 D;

uiaugP £ Array @SMSReal@nd$$@ , " ap", 1 DD &, 8 D;

viaugP £ Array @SMSReal@nd$$@ , " ap", 2 DD &, 8 D;

8ui , vi , uiP , viP , Xi , Yi < £

Map@Join @8@@1DD<, Take @ , 84, 7 <DD &, 8uiaug , viaug , uiaugP , viaugP , Xiaug , Yiaug <D;

8λN, λT< £ 8uiaug @@8DD, viaug @@8DD<;

basicVars £ Join @H8ui , vi < êê Transpose êê Flatten L, 8λN, λT<D;

basicVarsP £ Join @H8uiP , viP < êê Transpose êê Flatten L, 80, 0 <D;

index = 81, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 <;

8slaveS1 , slaveS2 < £ 88Xiaug P2T − Xiaug P1T, Yiaug P2T − Yiaug P1T<,

8Xiaug P1T − Xiaug P3T, Yiaug P1T − Yiaug P3T<<;

Area0 £ HSMSSqrt @slaveS1 . slaveS1 D + SMSSqrt @slaveS2 . slaveS2 DL thick ê 2;

H∗ If no contact ∗LSMSIf @SMSInteger @ns$$ @4, " id ", " Dummy" DD 1D;

LagrNNC £ Area0 H−λN^2 ê H2 ρLL;

LagrTNC £ Area0 H−λT^2 ê H2 ρLL;

LagrNC £ LagrNNC + LagrTNC ;

SMSDo@i , 1, 2 D;

ii £ SMSInteger @SMSPart @index , 10 + i DD;

132 AceFEM Finite Element Environment

Page 133: AceFEMManual

RNC£ SMSD@ LagrNC , 8λN, λT<, i D;

SMSExport @SMSResidualSign RNC , p$$@ii DD;

SMSDo@j , 1, 2 D;

jj £ SMSInteger @SMSPart @index , 10 + j DD;

dRdaNC£ SMSD@ RNC, 8λN, λT<, j D;

SMSExport @dRdaNC, s$$ @ii , jj DD;

SMSEndDo@D;

SMSEndDo@D;

SMSExport @80, 0 <, Array @ed$$@" ht ", D &, 2 D D;

SMSElse@D;

8ξP, gNP< £ Array @SMSReal@ed$$@" hp", DD &, 2 D;

H∗ We have to zero the ξP because of local

convergence problems in case of contact switch ∗LξP£ SMSReal@0. D;

8xS, xM2, xM3, xM1, xM4< £ Transpose @ 8Xi + ui , Yi + vi < D;

8L, L31 , L24< £ Map@ SMSSqrt @ . D &, 8xM3− xM2, xM3− xM1, xM2− xM4< D;

8t31 , t24 < £ 8HxM3− xM1L ê L31 , HxM2− xM4L ê L24<;

8Bxi , Byi < £ Transpose @ 8xM2, xM2+ HL ê 3L t31 , xM3+ HL ê 3L t24 , xM3< D;

Clear @ξ, bD;

H∗ Normal and tangential gap ∗LlocalSearch : =

fBi = Module B 8m= 4<, Table B1

8Binomial @m− 1, i − 1D H1 + ξLi −1 H1 − ξLm−i , 8i , m< F F;

ξA £ SMSReal@−1D;

fBiA =

Module B 8m= 4<, Table B1

8Binomial @m− 1, i − 1D H1 + ξALi −1 H1 − ξALm−i , 8i , m< F F;

ξB£ SMSReal@1D;

fBiB =

Module B 8m= 4<, Table B1

8Binomial @m− 1, i − 1D H1 + ξBLi −1 H1 − ξBLm−i , 8i , m< F F;

SMSIf @ξ < −1D;

xP • Simplify @8Bxi P1T, Byi P1T< + SMSD@8Bxi , Byi <. fBiA , ξAD Hξ + 1LD;

SMSElse@D;

SMSIf @ξ > 1D;

xP1 • Simplify @8Bxi P4T, Byi P4T< + SMSD@8Bxi , Byi <. fBiB , ξBD Hξ − 1LD;

SMSElse@D;

xP1 § Simplify @8Bxi , Byi <. fBi D;

SMSEndIf @xP1D;

xP § xP1;

SMSEndIf @xPD;

t £ SMSD@xP, ξD;

n £ 8t @@2DD, − t @@1DD< ê SMSSqrt @t . t D;

H£ xP + gN n− xS;

dHdb £ SMSD@H, 8ξ, gN<D;

dHdbInv £ SMSInverse @dHdbD;

;

b • 8ξP, gNP<;

SMSDo@ iter , 1, 30, 1, b D;

8ξ, gN< £ b;

localSearch ;

∆b £ −dHdbInv . H;

AceFEM Finite Element Environment 133

Page 134: AceFEMManual

b § b + ∆b;

SMSIf @Sqrt @∆b. ∆bD < 1 ê 10^12 »» iter == 29D;

SMSBreak@D;

SMSEndIf @D;

SMSEndDo@bD;

b £ SMSReal@bD;

H∗ Remember to define "b" before using this tag ! ∗L8ξ, gN< £ b;

localSearch ;

dHda £ SMSD@H, basicVars D;

dbda £ −dHdbInv . dHda;

SMSDefineDerivative @b, basicVars , dbdaD;

H∗ Augmented multipliers and friction cone radius ∗LH∗ ∆ξ£ξ−ξP; ∗L∆ξ £ SMSSqrt @t . t D SMSD@ ξ, basicVars D. HbasicVars − basicVarsP L;

λNaug £ λN+ ρ gN;

λTaug £ λT + ρ ∆ξ;

SMSIf @SMSInteger @idata$$ @" Iteration " DD 1D;

8stateN , stateT < • Array @SMSInteger @ed$$@" hp", + 2DD &, 2 D;

SMSElse@D;

8stateN , stateT < § SMSInteger @80, 0 <D;

SMSEndIf @stateN , stateT D;

SMSIf AλNaug 10−8 »» stateN 1E;

lagrN • λNaug;

SMSExport @1, ed$$@" ht ", 3 DD;

SMSElse@D;

lagrN § 0;

SMSExport @0, ed$$@" ht ", 3 DD;

SMSEndIf @lagrN D;

kaug ¢ −µ lagrN ;

SMSIf ASMSAbs@λTaugD − kaug ≥ −10−8 »» stateT 1E;

λTaugkaug • SMSAbs@λTaugD − kaug ;

SMSExport @1, ed$$@" ht ", 4 DD;

SMSElse@D;

λTaugkaug § 0;

SMSExport @0, ed$$@" ht ", 4 DD;

SMSEndIf @λTaugkaug D;

H∗ Augmented Lagrangian of contact ∗LLagrN £ Area0 HlagrN ^2 − λN^2L ê H2 ρL;

LagrT £ Area0 HλT ∆ξ + ρ ∆ξ^2 ê 2 − HλTaugkaug ^2L ê H2 ρLL;

Lagr £ LagrN + LagrT ;

SMSDo@i , 1, 12 D;

H∗ Residual ∗LRi £ SMSD@Lagr , basicVars , i , " Constant " → kaug D;

H∗ Tangent and export ∗Lii £ SMSInteger @SMSPart @index , i DD;

SMSExport @SMSResidualSign Ri , p$$@ii DD;

SMSDo@ j , 1, 12 D;

dRidaj £ SMSD@Ri , basicVars , j D;

134 AceFEM Finite Element Environment

Page 135: AceFEMManual

jj £ SMSInteger @SMSPart @index , j DD;

SMSExport @ dRidaj , s$$ @ii , jj D D;

SMSEndDo@D;

SMSEndDo@D;

SMSExport @8ξ, gN<, Array @ed$$@" ht ", D &, 2 D D;

SMSEndIf @D;

SMSWrite @D;

Postprocessing of the integration point

quantities is suspended for the element.

See also: SMSReferenceNodes

Method : PAN1 formulae, 62 sub −expressions

Method : SKR1523 formulae, 17 807 sub −expressions

@145D File created :

ExamplesCTD2N1DN2L1DN1AL.c Size : 60 085

2D snooker simulation

à DescriptionUse the contact element from 2D slave node, smooth master segment element and hypersolid dynamic element fromSolid, Finite Strain Element for Dynamic Analysis and analyze the single snooker shoot.

AceFEM Finite Element Environment 135

Page 136: AceFEMManual

136 AceFEM Finite Element Environment

Page 137: AceFEMManual

à Analysis<< AceFEM`;

δ = 0.60; H∗ 0.5 for non −dissipative model ∗L

β =δ + 0.5

2

2

;

bx = 1;

by = 2 bx ;

bx2 = bx + 0.3 bx ;

by2 = by + 0.3 bx ;

db = 0.05 bx ;

R = 0.1 bx ;

v0x = −0.14;

v0y = 1;

Nb = 6;

TN = 5;

For @BN= 0; i = 1, i <= TN, i ++, BN= BN+ i D;

ball @X0_, Y0_, R_, Nb_, domain_, body_, boundary_D : =

SMTMeshAdomain, " Q1", 8Nb, Nb<,

Table A8X0, Y0< + R 8i , j < ë Sqrt A1 + Min @Abs@8i , j <DD2 ë Max@Abs@8i , j <DD2E, 8j , −1,

1, 2 ê 5<, 8i , −1, 1, 2 ê 5<E, " BodyID " → body , " BoundaryDomainID " → boundaryE;

SMTInputData @D;

SMTAddDomain@8" b", " ExamplesHypersolidDynNewmark ",

8" E ∗" −> 400., " ν ∗" −> 0.3, " ρ ∗" −> 2, " β ∗" −> β, " δ ∗" −> δ<<,

8" c", " ExamplesCTD2N1DN2L1DN1AL", 8" µ ∗" −> 0.1, " ρ ∗" −> 100. <<D;

Table @SMTAddDomain@" s" <> ToString @i − 1D, " ExamplesHypersolidDynNewmark ",

8" E ∗" −> 50 000., " ν ∗" −> 0.3, " ρ ∗" −> 2, " β ∗" −> β, " δ ∗" −> δ<D, 8i , BN+ 1<D;

SMTMesh@" b", " Q1", 812, 1 <,

888−bx2 , −by2 <, 8−bx2 + db, −by2 <, 8bx2 − db, −by2 <, 8bx2 , −by2 <, 8bx2 , −by2 + db<,

8bx2 , by2 − db<, 8bx2 , by2 <, 8bx2 − db, by2 <, 8−bx2 + db, by2 <, 8−bx2 , by2 <,

8−bx2 , by2 − db<, 8−bx2 , −by2 + db<, 8−bx2 , −by2 <<, 88−bx , −by<, 8−bx + db, −by<,

8bx − db, −by<, 8bx , −by<, 8bx , −by + db<, 8bx , by − db<, 8bx , by<, 8bx − db, by<,

8−bx + db, by<, 8−bx , by<, 8−bx , by − db<, 8−bx , −by + db<, 8−bx , −by<<<,

" BodyID " → " C", " BoundaryDomainID " −> " c", " InterpolationOrder " → 1D;

ball B0, −by

8, R, Nb, " s0 ", " B0", " c" F;

For Bi = 1; bnum = 0, i TN, i ++,

For Bj = 0, j < i , j ++, bnum += 1; ball B−RHi − 1L + 2 j R ,by

2+ i −

HTN+ 1L2

R 3 ,

R, Nb, " s" <> ToString @bnumD, " B" <> ToString @bnumD, " c" FFFSMTAddEssentialBoundary @Abs@" Y" D >= by »» Abs@" X" D ≥ bx &, 1 −> 0., 2 −> 0. D;

SMTAnalysis @D;

SMTRDataB" ContactSearchTolerance ", 2 R 1 − CosBπ

4 NbF F;

SMTIData @" Contact1 ", 0 D;

SMTElementData @SMTFindElements @" s0 " D, " ht ",

Table @8v0x , v0y , 0, 0, v0x , v0y , 0, 0, v0x , v0y , 0, 0, v0x , v0y , 0, 0 <,

DD

AceFEM Finite Element Environment 137

Page 138: AceFEMManual

8Length @SMTFindElements @" s0 " DD<DD;

SMTShowMesh@" Show" → " Window", " Domains " → Table @" s" <> ToString @i − 1D, 8i , BN+ 1<D,

" User " → 8Line @88bx , by<, 8bx , −by<, 8−bx , −by<, 8−bx , by<, 8bx , by<<D<D;

SMTNextStep @0.0025, 0.01 D;

While @While @step = SMTConvergence @10^ −8, 15, 8" Adaptive Time ", 8, .0000001, 0.05, 5 <,

" Alternate " → True D, SMTNewtonIteration @D; D;

If @step P4T === " MinBound ", SMTStatusReport @" ∆λ < ∆λmin " D; D;

step @@3DD, If @step @@1DD, SMTStepBack @D,

SMTShowMesh@" DeformedMesh " → True, " Show" → " Window",

" Domains " → Table @" s" <> ToString @i − 1D, 8i , BN+ 1<D,

" User " → 8Line @88bx , by<, 8bx , −by<, 8−bx , −by<, 8−bx , by<, 8bx , by<<D<D;

D;

SMTNextStep @step @@2DD, 0.01 DD;

3D slave node, triangle master segment element<< " AceGen` ";

SMSInitialize @" ExamplesCTD3V1P1 ", " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " PX", " SMSNoNodes" → 4,

" SMSSymmetricTangent " → True, " SMSDOFGlobal" → 83, 3, 3, 3 <,

" SMSSegments" → 88<<, " SMSAdditionalNodes " → " 8Null,Null,Null <&",

" SMSNodeID" → 8" D", " D −D", " D −D", " D −D" <,

" SMSCharSwitch " → 8" CTD3V1", " CTD3P1", " ContactElement " <D;

SMSStandardModule @" Nodal information " D;

x £ Array @ SMSReal@nd$$@1, " X", DD &, 3 D + Array @ SMSReal@nd$$@1, " at ", DD &, 3 D;

xP £ Array @ SMSReal@nd$$@1, " X", DD &, 3 D + Array @ SMSReal@nd$$@1, " ap", DD &, 3 D;

SMSExport @8Flatten @8x, xP<D< , d$$D;

SMSStandardModule @" Tangent and residual " D;

SMSGroupDataNames = 8" ρ −penalty parameter " <;

SMSDefaultData = 81000<;

8ρ< £ Array @SMSReal@es$$ @" Data ", DD &, 1 D;

H∗Read and set element values ∗LXi £ Array @SMSReal@nd$$@ , " X", 1 DD &, 4 D;

Yi £ Array @SMSReal@nd$$@ , " X", 2 DD &, 4 D;

Wi £ Array @SMSReal@nd$$@ , " X", 3 DD &, 4 D;

ui £ Array @SMSReal@nd$$@ , " at ", 1 DD &, 4 D;

vi £ Array @SMSReal@nd$$@ , " at ", 2 DD &, 4 D;

wi £ Array @SMSReal@nd$$@ , " at ", 3 DD &, 4 D;

basicVars £ H8ui , vi , wi < êê Transpose êê Flatten L;

8xS, x1 , x2 , x3< £ Transpose @8Xi + ui , Yi + vi , Wi + wi <D;

H∗ If contact possible ∗LSMSIf @SMSInteger @ns$$ @2, " id ", " Dummy" DD ≠ 1D;

H∗ projection point and gap distance ∗LlocalSearch : = H

xP £ 8ξ, η, 1 − ξ − η<. 8x1 , x2 , x3<;

τξ £ SMSD@xP, ξD;

τη £ SMSD@xP, ηD;

τn £ Cross @τξ, τηD;

138 AceFEM Finite Element Environment

Page 139: AceFEMManual

n £ τn ê SMSSqrt @τn. τnD;

H£ xP + gN n− xS;

dHdb £ SMSD@H, bD;

dHdbInv £ SMSInverse @dHdbDL;

b • SMSReal@80, 0, 0 <D;

SMSDo@ iter , 1, 30, 1, b D;

8ξ, η, gN< £ b;

localSearch ;

∆b £ −dHdbInv . H;

b § b + ∆b;

SMSIf @Sqrt @∆b. ∆bD < 1 ê 10^12 »» iter == 29D;

SMSBreak@D;

SMSEndIf @D;

SMSEndDo@bD;

b £ SMSReal@bD;

H∗ Remember to define "b" before using this tag ! ∗L8ξ, η, gN< £ b;

localSearch ;

dHda £ SMSD@H, basicVars D;

dbda £ −dHdbInv . dHda;

SMSDefineDerivative @b, basicVars , dbdaD;

SMSIf @gN 0D;

Π •1

2ρ gN2 ;

SMSElse@D;

Π § 0;

SMSEndIf @ΠD;

SMSDo@i , 1, 12 D;

H∗ Residual ∗LRi £ SMSD@Π, basicVars , i D;

SMSExport @SMSResidualSign Ri , p$$@i DD;

SMSDo@ j , i , 12 D;

dRidaj £ SMSD@Ri , basicVars , j D;

SMSExport @ dRidaj , s$$ @i , j D D;

SMSEndDo@D;

SMSEndDo@D;

SMSEndIf @D;

SMSWrite @D;

Postprocessing of the integration point

quantities is suspended for the element.

See also: SMSReferenceNodes

Default integration code is set to

17 . See also: SMSDefaultIntegrationCode

Method : PAN1 formulae, 92 sub −expressions

AceFEM Finite Element Environment 139

Page 140: AceFEMManual

Method : SKR265 formulae, 4568 sub −expressions

@16D File created : ExamplesCTD3V1P1 . c Size : 19 211

140 AceFEM Finite Element Environment

Page 141: AceFEMManual

3D slave node, quadrilateral master segment element<< " AceGen` ";

SMSInitialize @" ExamplesCTD3V1S1 ", " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " SX", " SMSNoNodes" → 5,

" SMSSymmetricTangent " → True, " SMSDOFGlobal" → 83, 3, 3, 3, 3 <,

" SMSSegments" → 88<<, " SMSAdditionalNodes " → " 8Null,Null,Null,Null <&",

" SMSNodeID" → 8" D", " D −D", " D −D", " D −D", " D −D" <,

" SMSCharSwitch " → 8" CTD3V1", " CTD3S1", " ContactElement " <D;

SMSStandardModule @" Nodal information " D;

x £ Array @ SMSReal@nd$$@1, " X", DD &, 3 D + Array @ SMSReal@nd$$@1, " at ", DD &, 3 D;

xP £ Array @ SMSReal@nd$$@1, " X", DD &, 3 D + Array @ SMSReal@nd$$@1, " ap", DD &, 3 D;

SMSExport @8Flatten @8x, xP<D< , d$$D;

SMSStandardModule @" Tangent and residual " D;

H∗Element data ∗LSMSGroupDataNames = 8" ρ −penalty parameter " <;

SMSDefaultData = 81000<;

8ρ< £ Array @SMSReal@es$$ @" Data ", DD &, 1 D;

H∗Read and set element values ∗LXi £ Array @SMSReal@nd$$@ , " X", 1 DD &, 5 D;

Yi £ Array @SMSReal@nd$$@ , " X", 2 DD &, 5 D;

Wi £ Array @SMSReal@nd$$@ , " X", 3 DD &, 5 D;

ui £ Array @SMSReal@nd$$@ , " at ", 1 DD &, 5 D;

vi £ Array @SMSReal@nd$$@ , " at ", 2 DD &, 5 D;

wi £ Array @SMSReal@nd$$@ , " at ", 3 DD &, 5 D;

basicVars £ H8ui , vi , wi < êê Transpose êê Flatten L;

8xS, x1 , x2 , x3 , x4< £ Transpose @8Xi + ui , Yi + vi , Wi + wi <D;

H∗ If contact possible ∗LSMSIf @SMSInteger @ns$$ @2, " id ", " Dummy" DD ≠ 1D;

H∗ projection point and gap distance ∗LlocalSearch : = H

xP £ 8ξ η, H1 − ξL η, H1 − ξL H1 − ηL, ξ H1 − ηL<. 8x1 , x2 , x3 , x4<;

τξ £ SMSD@xP, ξD;

τη £ SMSD@xP, ηD;

τn £ Cross @τξ, τηD;

n £ τn ê SMSSqrt @τn. τnD;

H£ xP + gN n− xS;

dHdb £ SMSD@H, bD;

dHdbInv £ SMSInverse @dHdbDL;

b • SMSReal@80, 0, 0 <D;

SMSDo@ iter , 1, 30, 1, b D;

8ξ, η, gN< £ b;

localSearch ;

∆b £ −dHdbInv . H;

b § b + ∆b;

SMSIf @Sqrt @∆b. ∆bD < 1 ê 10^12 »» iter == 29D;

SMSBreak@D;

AceFEM Finite Element Environment 141

Page 142: AceFEMManual

SMSEndIf @D;

SMSEndDo@bD;

b £ SMSReal@bD;

H∗ Remember to define "b" before using this tag ! ∗L8ξ, η, gN< £ b;

localSearch ;

dHda £ SMSD@H, basicVars D;

dbda £ −dHdbInv . dHda;

SMSDefineDerivative @b, basicVars , dbdaD;

SMSIf @gN 0D;

Π •1

2ρ gN2 ;

SMSElse@D;

Π § 0;

SMSEndIf @ΠD;

SMSDo@i , 1, 15 D;

H∗ Residual ∗LRi £ SMSD@Π, basicVars , i D;

SMSExport @SMSResidualSign Ri , p$$@i DD;

SMSDo@ j , i , 15 D;

dRidaj £ SMSD@Ri , basicVars , j D;

SMSExport @ dRidaj , s$$ @i , j D D;

SMSEndDo@D;

SMSEndDo@D;

SMSEndIf @D;

SMSWrite @D;

Postprocessing of the integration point

quantities is suspended for the element.

See also: SMSReferenceNodes

Default integration code is set to

3 . See also: SMSDefaultIntegrationCode

Method : PAN1 formulae, 92 sub −expressions

Method : SKR435 formulae, 7881 sub −expressions

@32D File created : ExamplesCTD3V1S1 . c Size : 29 614

3D slave node, quadrilateral master segment and 2 neighboring nodes elementNeighboring nodes are not used in the element.

<< " AceGen` ";

SMSInitialize @" ExamplesCTD3V1S1DN2", " Environment " → " AceFEM" D;

142 AceFEM Finite Element Environment

Page 143: AceFEMManual

SMSTemplate @" SMSTopology " → " SX", " SMSNoNodes" → 13,

" SMSDOFGlobal" → 83, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 <,

" SMSSegments" → 88<<, " SMSAdditionalNodes " →

" 8Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,N ull,Null <&",

" SMSNodeID" → 8" D", " D −D", " D −D", " D −D", " D −D", " D −D",

" D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D" <,

" SMSCharSwitch " → 8" CTD3V1", " CTD3S1DN2", " ContactElement " <,

" SMSSymmetricTangent " → True D;

SMSStandardModule @" Nodal information " D;

x £ Array @ SMSReal@nd$$@1, " X", DD &, 3 D + Array @ SMSReal@nd$$@1, " at ", DD &, 3 D;

xP £ Array @ SMSReal@nd$$@1, " X", DD &, 3 D + Array @ SMSReal@nd$$@1, " ap", DD &, 3 D;

SMSExport @8Flatten @8x, xP<D< , d$$D;

SMSStandardModule @" Tangent and residual " D;

SMSGroupDataNames = 8" ρ −penalty parameter " <;

SMSDefaultData = 81000<;

8ρ< £ Array @SMSReal@es$$ @" Data ", DD &, 1 D;

H∗Read and set element values ∗LXi £ Array @SMSReal@nd$$@ , " X", 1 DD &, 5 D;

Yi £ Array @SMSReal@nd$$@ , " X", 2 DD &, 5 D;

Wi £ Array @SMSReal@nd$$@ , " X", 3 DD &, 5 D;

ui £ Array @SMSReal@nd$$@ , " at ", 1 DD &, 5 D;

vi £ Array @SMSReal@nd$$@ , " at ", 2 DD &, 5 D;

wi £ Array @SMSReal@nd$$@ , " at ", 3 DD &, 5 D;

basicVars £ H8ui , vi , wi < êê Transpose êê Flatten L;

8xS, x1 , x2 , x3 , x4< £ Transpose @8Xi + ui , Yi + vi , Wi + wi <D;

H∗ If contact possible ∗LSMSIf @SMSInteger @ns$$ @2, " id ", " Dummy" DD ≠ 1D;

H∗ projection point and gap distance ∗LlocalSearch : = H

xP £ 8ξ η, H1 − ξL η, H1 − ξL H1 − ηL, ξ H1 − ηL<. 8x1 , x2 , x3 , x4<;

τξ £ SMSD@xP, ξD;

τη £ SMSD@xP, ηD;

τn £ Cross @τξ, τηD;

n £ τn ê SMSSqrt @τn. τnD;

H£ xP + gN n− xS;

dHdb £ SMSD@H, bD;

dHdbInv £ SMSInverse @dHdbDL;

b • SMSReal@80, 0, 0 <D;

SMSDo@ iter , 1, 30, 1, b D;

8ξ, η, gN< £ b;

localSearch ;

∆b £ −dHdbInv . H;

b § b + ∆b;

SMSIf @Sqrt @∆b. ∆bD < 1 ê 10^12 »» iter == 29D;

SMSBreak@D;

SMSEndIf @D;

SMSEndDo@bD;

AceFEM Finite Element Environment 143

Page 144: AceFEMManual

b £ SMSReal@bD;

H∗ Remember to define "b" before using this tag ! ∗L8ξ, η, gN< £ b;

localSearch ;

dHda £ SMSD@H, basicVars D;

dbda £ −dHdbInv . dHda;

SMSDefineDerivative @b, basicVars , dbdaD;

SMSIf @gN 0D;

Π •1

2ρ gN2 ;

SMSElse@D;

Π § 0;

SMSEndIf @ΠD;

SMSDo@i , 1, 15 D;

H∗ Residual ∗LRi £ SMSD@Π, basicVars , i D;

SMSExport @SMSResidualSign Ri , p$$@i DD;

SMSDo@ j , i , 15 D;

dRidaj £ SMSD@Ri , basicVars , j D;

SMSExport @ dRidaj , s$$ @i , j D D;

SMSEndDo@D;

SMSEndDo@D;

SMSEndIf @D;

SMSWrite @D;

Postprocessing of the integration point

quantities is suspended for the element.

See also: SMSReferenceNodes

Default integration code is set to

3 . See also: SMSDefaultIntegrationCode

Method : PAN1 formulae, 92 sub −expressions

Method : SKR435 formulae, 7881 sub −expressions

@32D File created :

ExamplesCTD3V1S1DN2.c Size : 29 861

3D slave triangle and 2 neighboring nodes, triangle master segment elementNeighboring nodes are not used in the element.

<< " AceGen` ";

SMSInitialize @" ExamplesCTD3P1DN2P1", " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " PX", " SMSNoNodes" → 18,

" SMSDOFGlobal" → 83, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 <,

144 AceFEM Finite Element Environment

Page 145: AceFEMManual

" SMSSegments" → 88<<, " SMSAdditionalNodes " →

" 8Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,N ull,Null,Null,Null,Null <&",

" SMSNodeID" → 8" D", " D", " D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D",

" D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D" <,

" SMSCharSwitch " → 8" CTD3P1DN2", " CTD3P1", " ContactElement " <,

" SMSSymmetricTangent " → True D;

SMSStandardModule @" Nodal information " D;

For @i = 1, i 3, i ++,

x £ Array @ SMSReal@nd$$@i , " X", DD &, 3 D + Array @ SMSReal@nd$$@i , " at ", DD &, 3 D;

xP £ Array @ SMSReal@nd$$@i , " X", DD &, 3 D + Array @ SMSReal@nd$$@i , " ap", DD &, 3 D;

SMSExport @Flatten @8x, xP<D , d$$@i , D &DD;

SMSStandardModule @" Tangent and residual " D;

SMSGroupDataNames = 8" ρ −penalty parameter " <;

SMSDefaultData = 81000<;

8ρ< £ Array @SMSReal@es$$ @" Data ", DD &, 1 D;

H∗Read and set element values ∗LXi £ Array @SMSReal@nd$$@ , " X", 1 DD &, SMSNoNodesD;

Yi £ Array @SMSReal@nd$$@ , " X", 2 DD &, SMSNoNodesD;

Wi £ Array @SMSReal@nd$$@ , " X", 3 DD &, SMSNoNodesD;

ui £ Array @SMSReal@nd$$@ , " at ", 1 DD &, SMSNoNodesD;

vi £ Array @SMSReal@nd$$@ , " at ", 2 DD &, SMSNoNodesD;

wi £ Array @SMSReal@nd$$@ , " at ", 3 DD &, SMSNoNodesD;

dis £ Transpose @8ui , vi , wi <D;

basicVars £ Hdis êê Flatten L;

allX £ Transpose @8Xi + ui , Yi + vi , Wi + wi <D;

index = 8Join @81, 2, 3 <, Range @28, 36 DD,

Join @84, 5, 6 <, Range @37, 45 DD, Join @87, 8, 9 <, Range @46, 54 DD<;

For Bid = 0, id 2, id ++,

8xS, x1 , x2 , x3< £ Map@allX @@DD &, 81 + id , 10 + 3 id , 11 + 3 id , 12 + 3 id <D;

localBasic £ Flatten @Map@dis @@DD &, 81 + id , 10 + 3 id , 11 + 3 id , 12 + 3 id <DD;

localIndex £ SMSInteger @index @@id + 1DDD;

H∗ If contact possible ∗LSMSIf @SMSInteger @ns$$ @10 + 3 id , " id ", " Dummy" DD ≠ 1D;

H∗ projection point and gap distance ∗LlocalSearch : =

HxP £ 8ξ, η, 1 − ξ − η<. 8x1 , x2 , x3<;

τξ £ SMSD@xP, ξD;

τη £ SMSD@xP, ηD;

τn £ Cross @τξ, τηD;

n £ τn ê SMSSqrt @τn. τnD;

H£ xP + gN n − xS;

dHdb £ SMSD@H, bD;

dHdbInv £ SMSInverse @dHdbDL;

b • SMSReal@80, 0, 0 <D;

SMSDo@ iter , 1, 30, 1, bD;

8ξ, η, gN< £ b;

localSearch ;

∆b £ −dHdbInv . H;

AceFEM Finite Element Environment 145

Page 146: AceFEMManual

b § b + ∆b;

SMSIf @Sqrt @∆b. ∆bD < 1 ê 10^12 »» iter == 29D;

SMSBreak@D;

SMSEndIf @D;

SMSEndDo@bD;

b £ SMSReal@bD;

H∗ Remember to define "b" before using this tag ! ∗L8ξ, η, gN< £ b;

localSearch ;

dHda £ SMSD@H, localBasic D;

dbda £ −dHdbInv . dHda;

SMSDefineDerivative @b, localBasic , dbdaD;

SMSIf @gN 0D;

Π •1

2ρ gN2 ;

SMSElse@D;

Π § 0;

SMSEndIf @ΠD;

SMSDo@i , 1, Length @localBasic DD;

H∗ Residual ∗LRi £ SMSD@Π, localBasic , i D;

ii £ SMSInteger @SMSPart @localIndex , i DD;

SMSExport @SMSResidualSign Ri , p$$@ii D, " AddIn " → True D;

SMSDo@ j , i , Length @localBasic DD;

dRidaj £ SMSD@Ri , localBasic , j D;

jj £ SMSInteger @SMSPart @localIndex , j DD;

SMSExport @ dRidaj , s$$ @ii , jj D , " AddIn " → True D;

SMSEndDo@D;

SMSEndDo@D;

SMSEndIf @DF;

SMSWrite @D;

Postprocessing of the integration point

quantities is suspended for the element.

See also: SMSReferenceNodes

Default integration code is set to

17 . See also: SMSDefaultIntegrationCode

Method : PAN3 formulae, 276 sub −expressions

Method : SKR827 formulae, 14 190 sub −expressions

@67D File created :

ExamplesCTD3P1DN2P1.c Size : 53 831

146 AceFEM Finite Element Environment

Page 147: AceFEMManual

3D slave triangle, triangle master segment and 2 neighboring nodes elementNeighboring nodes are not used in the element.

<< " AceGen` ";

SMSInitialize @" ExamplesCTD3P1P1DN2", " Environment " → " AceFEM" D;

SMSTemplate @" SMSTopology " → " PX", " SMSNoNodes" → 30,

" SMSDOFGlobal" → 83, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,

3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 <, " SMSSegments" → 88<<,

" SMSAdditionalNodes " →

" 8Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,N ull,Null,Null,Null,Null,Null

,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null, Null <&",

" SMSNodeID" → 8" D", " D", " D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D",

" D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D",

" D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D", " D −D" <,

" SMSCharSwitch " → 8" CTD3P1", " CTD3P1DN2", " ContactElement " <,

" SMSSymmetricTangent " → True D;

SMSStandardModule @" Nodal information " D;

For @i = 1, i 3, i ++,

x £ Array @SMSReal@nd$$@i , " X", DD &, 3 D + Array @SMSReal@nd$$@i , " at ", DD &, 3 D;

xP £ Array @SMSReal@nd$$@i , " X", DD &, 3 D + Array @SMSReal@nd$$@i , " ap", DD &, 3 D;

SMSExport @Flatten @8x, xP<D, d$$@i , D &D;

D;

SMSStandardModule @" Tangent and residual " D;

SMSGroupDataNames = 8" ρ −penalty parameter " <;

SMSDefaultData = 81000<;

8ρ< £ Array @SMSReal@es$$ @" Data ", DD &, 1 D;

H∗Read and set element values ∗LXi £ Array @SMSReal@nd$$@ , " X", 1 DD &, SMSNoNodesD;

Yi £ Array @SMSReal@nd$$@ , " X", 2 DD &, SMSNoNodesD;

Wi £ Array @SMSReal@nd$$@ , " X", 3 DD &, SMSNoNodesD;

ui £ Array @SMSReal@nd$$@ , " at ", 1 DD &, SMSNoNodesD;

vi £ Array @SMSReal@nd$$@ , " at ", 2 DD &, SMSNoNodesD;

wi £ Array @SMSReal@nd$$@ , " at ", 3 DD &, SMSNoNodesD;

dis £ Transpose @8ui , vi , wi <D;

basicVars £ Hdis êê Flatten L;

allX £ Transpose @8Xi + ui , Yi + vi , Wi + wi <D;

index = 8Join @81, 2, 3 <, Range @10, 18 DD,

Join @84, 5, 6 <, Range @37, 45 DD, Join @87, 8, 9 <, Range @64, 72 DD<;

For Bid = 0, id 2, id ++,

8xS, x1 , x2 , x3< £ Map@allX @@DD &, 81 + id , 4 + 9 id , 5 + 9 id , 6 + 9 id <D;

localBasic £ Flatten @Map@dis @@DD &, 81 + id , 4 + 9 id , 5 + 9 id , 6 + 9 id <DD;

localIndex £ SMSInteger @index @@id + 1DDD;

H∗ If contact possible ∗LSMSIf @SMSInteger @ns$$ @4 + 9 id , " id ", " Dummy" DD ≠ 1D;

H∗ projection point and gap distance ∗LlocalSearch : = H

AceFEM Finite Element Environment 147

Page 148: AceFEMManual

xP £ 8ξ, η, 1 − ξ − η<. 8x1 , x2 , x3<;

τξ £ SMSD@xP, ξD;

τη £ SMSD@xP, ηD;

τn £ Cross @τξ, τηD;

n £ τn ê SMSSqrt @τn. τnD;

H£ xP + gN n − xS;

dHdb £ SMSD@H, bD;

dHdbInv £ SMSInverse @dHdbDL;

b • SMSReal@80, 0, 0 <D;

SMSDo@ iter , 1, 30, 1, bD;

8ξ, η, gN< £ b;

localSearch ;

∆b £ −dHdbInv . H;

b § b + ∆b;

SMSIf @Sqrt @∆b. ∆bD < 1 ê 10^12 »» iter == 29D;

SMSBreak@D;

SMSEndIf @D;

SMSEndDo@bD;

b £ SMSReal@bD;

8ξ, η, gN< £ b; H∗ Remember to define "b" before using this tag ! ∗LlocalSearch ;

dHda £ SMSD@H, localBasic D;

dbda £ −dHdbInv . dHda;

SMSDefineDerivative @b, localBasic , dbdaD;

SMSIf @gN 0D;

Π •1

2ρ gN2 ;

SMSElse@D;

Π § 0;

SMSEndIf @ΠD;

SMSDo@i , 1, Length @localBasic DD;

Ri £ SMSD@Π, localBasic , i D;

H∗ Residual ∗Lii £ SMSInteger @SMSPart @localIndex , i DD;

SMSExport @SMSResidualSign Ri , p$$@ii D, " AddIn " → True D;

SMSDo@j , i , Length @localBasic DD;

dRidaj £ SMSD@Ri , localBasic , j D;

jj £ SMSInteger @SMSPart @localIndex , j DD;

SMSExport @dRidaj , s$$ @ii , jj D, " AddIn " → True D;

SMSEndDo@D;

SMSEndDo@D;

SMSEndIf @D;

F;

SMSWrite @D;

Postprocessing of the integration point

quantities is suspended for the element.

See also: SMSReferenceNodes

148 AceFEM Finite Element Environment

Page 149: AceFEMManual

Default integration code is set to

17 . See also: SMSDefaultIntegrationCode

Method : PAN3 formulae, 276 sub −expressions

Method : SKR827 formulae, 14 190 sub −expressions

@70D File created :

ExamplesCTD3P1P1DN2.c Size : 54 601

3D contact analysisThe use quadrilateral 3D contact element to analyze the 3D indentation problem: small elastic box pressed down intolarge elastic box.

Simulation

<< AceFEM`;

SMTInputData @D;

SMTAddDomain@8" Dom1", " SED3H1DFHYH1NHookeA", 8" E ∗" −> 70 000., " ν ∗" −> 0.3 <<,

8" Dom2", " SED3H1DFHYH1NHookeA", 8" E ∗" −> 70 000., " ν ∗" −> 0.3 <<,

8" c", " ExamplesCTD3V1S1DN2", 8" ρ ∗" −> 10 000 <<D;

SMTMesh@" Dom1", " H1", 86, 6, 3 <,

88880.1, 0.2, 0 <, 81.1, 0.2, 0 <<, 880.1, 1.2, 0 <, 81.1, 1.2, 0 <<<,

8880.1, 0.2, 1 <, 81.1, 0.2, 1 <<, 880.1, 1.2, 1 <, 81.1, 1.2, 1 <<<<,

" BodyID " → " B1", " BoundaryDomainID " → " c" D;

SMTMesh@" Dom2", " H1", 85, 5, 3 <,

8888−1, −1, −3<, 82, −1, −3<<, 88−1, 2, −3<, 82, 2, −3<<<,

888−1, −1, −1<, 82, −1, −1<<, 88−1, 2, −1<, 82, 2, −1<<<<,

" BodyID " → " B2", " BoundaryDomainID " → " c" D;

SMTAddEssentialBoundary @8" Z" 1 &, 1 −> 0, 2 −> 0, 3 −> −1<,

8" Z" −3 &, 1 −> 0, 2 −> 0, 3 −> 0<D;

SMTAnalysis @D;

SMTRData@" ContactSearchTolerance ", 0.1 D;

Map@HSMTNextStep @0, D; While @SMTConvergence @D, SMTNewtonIteration @D; DL &,

81, 0.1, 0.1, 0.1, 0.1 <D;

AceFEM Finite Element Environment 149

Page 150: AceFEMManual

GraphicsRow @8SMTShowMesh@D, SMTShowMesh@" DeformedMesh " → True, " Field " −> " Syy " D<D

Troubleshooting and New in version

AceFEM Troubleshooting

à General• If the use of SMSPrint does not produce any printout or the execution does not stop at the break point

(SMSSetBreak) check that:

a) the code was generated in "Debug" mode (SMSInitialize["Mode"->"Debug"]),

b) debug element has been set (SMTIData["DebugElement",element_number])

c) the file is opened for printing (SMTAnalysis["Output"->filename]).

• If the compilation is to slow then restrict compiler optimization with SMSAnalysis["OptimizeDll"->False].

• If the quadratic convergence is not achieved check that:

a) matrix is symmetric or unsymmetrical (by default all elements are assumed to have symmetric tangent matrix,

use SMSTemplate["SMSSymmetricMatrix"->False] to specify unsymmetrical matrix),

b) the tangent matrix is not singular or near singular.

• Problems with linear solver (PARDISO):

a) not enough memory fl try out-of-core solution (SMTAnalyze[...,Solver->5,11,60,2]

b) zero pivot, numerical factorization problem fl try full pivoting (SMTAnalyze[...,Solver->5,11])

• Check the information given at www.fgg.uni-lj.si/symech/FAQ/.

à Crash of the CDriver module• Block parallelization (SMTInputData["Threads"->1])

• Recreate elements in Debug mode (SMSInitialize["Debug"->True]) and run the example again.

150 AceFEM Finite Element Environment

Page 151: AceFEMManual

Run CDriver module in console mode (SMTInputData["Console"->True]) and examine the output.

New in version• new boundary conditions input - ( SMTAddEssentialBoundary )

• new graphic user interface - AceFEM Graphic User Interface

• new command for generation and importing mesh - ( SMTAddMesh )

• automatic node renumbering - ( SMTAnalysis - "NodeReordering" option)

• new postprocessing command - SMTPostData

• material constants can now be specified as a list of rules - SMTAddDomain , Input Data

• parallel execution of K and R assembly ( SMTInputData - "Threads")

• complete control over PARDISO solver options (SMTSetSolver )

• user definition of contact pairs ( SMTAnalysis- "ContactPairs" option)

• PARDISO symmetric matrix type added ( SMTSetSolver , SMTAnalysis)

• new Integer Type Environment Data (idata$$) data SMTIData[""ZeroPivots"] and SMTIData["NegativePiv-

ots"] (replaces old SMTIData["DiagonalSign"] data)

• support for semi-analytical solutions ( Semi − analytical solutions )

• support for 64-bit operating systems ( SMTInputData - "Platform" option)

• support for user defined tasks (User Defined Tasks, SMTTask, Standard user subroutines)

• new boundary conditions sensitivity types (See also: SMTSensitivity, SMTAddSensitivity, Standard user

subroutines, Solid, Finite Strain Element for Direct and Sensitivity Analysis, Parameter, Shape and Load Sensitiv-

ity Analysis of Multi-Domain Example .)

• parallelization of FE simulations using Mathematica 7.0 (see Parallel AceFEM computations)

AceFEM Finite Element Environment 151

Page 152: AceFEMManual

Reference Guide

Description of Problem

SMTInputData

SMTInputData@D erase data base from the previous AceFEM sessionHif anyLinitialize input data arrays and load the numerical module

Initialize the input data phase.

The SMTInputData is the first command of every AceFEM session. See also: Standard AceFEM Procedure.

option description defaultvalue

"LoadSession" "session_name" fl the data and definitions associated withthe derivation of the element "session_name" are reloadedfrom the automatically generated file. The session name,the element source file name and the elementname has to be the same for the proper run-

time debugging. See also SMSLoadSession.

False

"Platform" "32"fl 32 bit operating systemHall operating systems Windows, Unix, MacL"64" fl 64 bit operating systemsHWindows and Mac onlyL

Automatic

"NumericalModule" specifys numerical module:"CDriver" fl C language"MDriver" fl Mathematicalanguage

"CDriver"

"Precision" starts the MDriver numerical module with thenumerical precision set ton Hit has no effect on CDriverL

$MachinePrecision

"Console" starts the CDriver module as console applicationand connect it with theMathematicathroughMathLinkprotocolHit has no effect on MDriverL

False

"Threads" sets the number of processorsthat are available for the parallel execution

All

"SeriesMethod" specifys the power series expansionmethodIsee also Semi-analytical solutionsM

"Lagrange"

"SeriesData" specifys the power series expansion parameters,the expansion point and the order of the power series expansion98x,x0,nx<,9y,y0,ny=,...=Isee also Semi-analytical solutionsM

False

Options for the SMTInputData function.

The CDriver numerical module is an executable and connected with the Mathematica through the MathLink protocol. The CDriver

152 AceFEM Finite Element Environment

Page 153: AceFEMManual

can be started in a separate window with the option "Console"->True. The option can be useful during the debugging.

SMTAddDomain

SMTAddDomain@dID, etype,8dcode1->d1,dcode2->d2,…<, optD

add domain data to the list of domains witharbitrary number of input data given as a list of rules

The domain is identified by the unique string dID used within the session, the element code etype and the input datavalues that are common for all elements within the domain 8d1, d2, …. The input data values are defined by theSMSGroupDataNames constant (see e.g. SMSTemplate ) and are specific for each element used. Input data values

is given as a vector or a list of rules ( dcodei Ø diL. The codes of the data can be abreviated (e.g. "Factor" can be givenas "F*"). Only those values the are not equal to the default values (see SMSDefaultData) have to be given.

opt description default

"Source" specification of thelocation of element' s source code

Automatic

"IntegrationCode" numerical integration codeintcodeINumerical IntegrationM

SMSDefaultIntegrationCodeIsee SMSTemplateM

"AdditionalData" additional data commonfor all the elements within aparticular domainHe.g. flow curveL

8<

Options for domain input data.

Several data sets can be added at the same time as well. For example:

SMTAddDomain["A", "solid", "E *"->21000,"r *"->2700]

See also: Input Data

AceFEM Finite Element Environment 153

Page 154: AceFEMManual

SMTAddMesh

SMTAddMeshAdID,88n1,X1,Y1,Z1<,8n2,X2,Y2,Z2<,…<,99n1

1,n21,…=,9n1

2,n22,…= …=

E

add nodes defined by the list of node coordinates88n1,X1,Y1,Z1<,8n1,X2,Y2,Z2<,…< and elements definedby the connectivity table99n1

1,n21,…=,9n1

2,n22,…= …=

and domain identificationdID to the existing meshand return a list of global node and element numbersHni is the local node number andnl

e is a localnode number of thel-th node of thee-th elementL

SMTAddMesh@"GID",mfileD import mesh from GID mesh file .msh,add nodes and elements to the existingmesh and return a list of element numbers

option description defaultvalue

"BodyID" body identification string None

"BoundaryDomainID" domain identificationHone or moreLfor the elements additionally generated on theouter surface of elements with the same BodyID

8<

Options for SMTAddMesh.

The SMTAddMesh function can be used to import a mesh generated by various existing mesh generators into Ace-FEM.

See also: Input Data

SMTAddElement

SMTAddElement@dID,8node1, node2, ...<D appends new element to the list of elementsHelement is defined by the list of nodesnode1,node2,... and domain identificationdID wherenodei canbeeither global node number or coordinates of the node8Xi ,Y

option description defaultvalue

"BodyID" body identification string "None"

"BoundaryDomainID" domain identificationHone or moreLfor the elements additionally generated on theouter surface of elements with the same BodyID

8<

Options for SMTAddElement.

The function returns the element index or the range of indexes of new elements.

See also: Element Data , Input Data

Several data sets can be added at the same time as well. For example: SMTAddElement["A",1,2,"A",2,3]adds 2 elements.

154 AceFEM Finite Element Environment

Page 155: AceFEMManual

Example: Standard benchmark test for distorted elements

<< AceFEM`;

SMTInputData @D;

SMTAddDomainA" A", " SEPSQ1DFLEQ1IsoHooke",

9" E ∗" −> 11. 10 7 , " ν ∗" −> 0.3, " t ∗" −> 0.1 =E;

[email protected], −0.2 <, 81.1, −0.2 <, 81.9, −0.2 <, 83.1, −0.2 <, 83.9, −0.2 <,

85.1, −0.2 <, 86.0, −0.2 <, 80.0, 0 <, 80.9, 0 <, 82.1, 0 <,

82.9, 0 <, 84.1, 0 <, 84.9, 0 <, 86.0, 0 <<D;

SMTAddElement @88" A", 81, 2, 9, 8 <<, 8" A", 82, 3, 10, 9 <<, 8" A", 83, 4, 11, 10 <<,

8" A", 84, 5, 12, 11 <<, 8" A", 85, 6, 13, 12 <<, 8" A", 86, 7, 14, 13 <<<D;

SMTAddNaturalBoundary @" X" 6 & , 2 −> −0.5 D;

SMTAddEssentialBoundary @" X" 0 &, 1 −> 0, 2 −> 0D;

SMTAnalysis @D;

SMTNextStep @1, 1 D;

While @SMTConvergence @10^ −12, 10 D, SMTNewtonIteration @DD;

SMTNodeData@" X" 6 &, " at " DSMTShowMesh@" BoundaryConditions " −> True, " DeformedMesh " −> True, " Scale " −> 1000 D

99−5.77117 × 10−6 , −0.000264499 =, 95.15829 × 10−6 , −0.000264364 ==

SMTAddNode

SMTAddNode@X i , Yi , ZiDSMTAddNode@X i ,YiDSMTAddNode@X iD

appends new node to the list of nodes

See also: Node Data , Input Data ,

Several data sets can be added at the same time as well. For example: SMTAddNode[1,1,2,2] adds 2 nodes.

The function returns the node index or the range of indexes of new nodes.

AceFEM Finite Element Environment 155

Page 156: AceFEMManual

SMTAddEssentialBoundary

SMTAddEssentialBoundaryAnodeselector,dof1->dB1, dof2->dB2,…E

increment or set reference value of essentialHDirichletLboundary conditionIdBi is the reference value ofthe essential boundary conditionHsupportL for thedofi-th unknown in all nodes that matchnodeselectorM

SMTAddNaturalBoundaryAnodeselector,dof1->dB1, dof2->dB2,…E

increment or set reference value of naturalHNeumannLboundary conditionIdBi is the reference value ofthe natural boundary conditionHforceL for thedofi-th unknown in all nodes that matchnodeselectorM

SMTAddInitialBoundaryAnodeselector,dof1->Bi1,dof2->dB2,…E

increment or set initial boundary conditionIBii is the initial boundary conditionHessential or naturalL forthedofi-th unknown in all nodes that matchnodeselectorM

option description defaultvalue

"Set" override the previous defined boundary conditions for thechosen degrees of freedom with the newly defined values

False

Options for the boundary conditions functions.

The value of boundary condition is by default incremented by the given value or set to the given value if the boundarycondition is prescribed for the chosen degree of freedom for the first time. With the "Set"->True option the new valueoverrides all the previous definitions. With the dofiØNull input all the previously defined boundary conditions are

deleted for the dofi degree of freedom.

The current value of the boundary condition HBtL is defined as Bt=Bp+ Dl dB, where Dl is the boundary conditions

multiplier increment (see Iterative solution procedure ).

The nodeselector parameter is defined in Selecting Nodes.

Examples:

SMTAddEssentialBoundary["X"==5 && "Z"==2 && "ID"=="D" &, 3 Ø 1.5 ]

The third degree of freedom in all the nodes with the coordinates X=5 and Z=2 and node identification "D" is eitherincremented by 1.5 or set to 1.5 if the boundary condition is prescribed for the chosen degree of freedom for the firsttime.

SMTAddEssentialBoundary["X"==5 && "Z"==2 && "ID"=="D" &, 3 Ø 1.5,"Set"->True]

All the nodes with the coordinates X=5 and Z=2 and node identification "D" get a prescribed value 1.5 for the thirddegree of freedom.

SMTAddEssentialBoundary["X"==5 && "Z"==2 && "ID"=="D" &, 3 Ø Null]

Remove the prescribed essential boundary condition for the third degree of freedom for all the nodes with the coordi-nates X=5 and Z=2 and node identification "D".

See also: Selecting Nodes, Input Data , Node Data

156 AceFEM Finite Element Environment

Page 157: AceFEMManual

Example: Boundary conditions

<< AceFEM`;

SMTInputData @D;

L = 100; H = 20;

q1 = 2; q2 = 1; q3 = 1;

nx = 40; ny = 10;

SMTAddDomain@" A", " OL:SEPSQ1ESHYQ1E4NHookeA",

8" E ∗" −> 1000., " ν ∗" −> .49, " t ∗" −> 1. <D;

SMTMesh@" A", " Q1", 840, 10 <, 8880, 0 <, 8L, 0 <<, 880, H<, 8L, H<<<D;

SMTAddEssentialBoundary @" X" 0 &, 1 −> 0D;

SMTAddEssentialBoundary @" Y" 0 && " X" <= L ê 2 &, 2 −> 0D;

SMTAddNaturalBoundary @" Y" == H &, 2 −> −q1 L ê nxD;

SMTAddNaturalBoundary @" Y" == H && "X" > L ê 2 &, 2 −> −q2 L ê nxD;

SMTAddNaturalBoundary @" Y" == H && "X" > 3 L ê 4 &, 2 −> −q2 L ê nxD;

SMTAnalysis @D;

AceFEM Finite Element Environment 157

Page 158: AceFEMManual

SMTNextStep @1, 0.1 D;

While @While @step = SMTConvergence @10^ −7, 15, 8" Adaptive ", 8, .01, 0.5, 1 <D ,

SMTNewtonIteration @DD;

SMTStatusReport @D;

If @step P4T === " MinBound ", Print @" Error: ∆λ < ∆λmin " DD;

If @Not @step P1TD, SMTShowMesh@" DeformedMesh " → True,

" Field " → " Sxy ", " Mesh" → False, " Contour " → 20, " Show" −> " Window" DD;

step P3T ,

If @step P1T, SMTStepBack @DD;

SMTNextStep @1, step P2TDD

Tê∆T=1. ê1. λê∆λ=0.1 ê0.1 ˛∆a˛ê˛Ψ˛=3.82762 × 10−9

ê2.67879 × 10−12 Iter êTotal =5ê5 Status =0ê8Convergence <

Tê∆T=2. ê1. λê∆λ=0.281633 ê0.181633 ˛∆a˛ê˛Ψ˛=2.39847 × 10−12

ê2.55645 × 10−12 Iter êTotal =6ê11 Status =0ê8Convergence <

Tê∆T=3. ê1. λê∆λ=0.585589 ê0.303957 ˛∆a˛ê˛Ψ˛=1.30189 × 10−8

ê2.49878 × 10−12 Iter êTotal =6ê17 Status =0ê8Convergence <

Tê∆T=4. ê1. λê∆λ=1. ê0.414411 ˛∆a˛ê˛Ψ˛=2.38272 × 10−12

ê2.7838 × 10−12 Iter êTotal =7ê24 Status =0ê8Convergence <

Column@8SMTShowMesh@" Show" → False, " BoundaryConditions " → True D,

SMTShowMesh@" DeformedMesh " → True, " Mesh" → False,

" Field " → " Sxy ", " Contour " → 20, " Show" → False, " Legend " → False D<D

SMTAddNaturalBoundary

See also: SMTAddEssentialBoundary

158 AceFEM Finite Element Environment

Page 159: AceFEMManual

SMTAddInitialBoundary

See also: SMTAddEssentialBoundary

SMTMesh

SMTMesh@dID,topology,division,mastermeshD construct structured mesh ofelements with the domain identificationdID,and append it to the previously defined nodesHSMTNodesL and elementsHSMTElementsL

The function adds new nodes and elements to the SMTNodes and SMTElements input data arrays (seeMesh Input Data ). The topology parameter defines the type of the elements according to the types defined in section

Template Constants.

The function returns the range of indexes of new nodes and elements .

The mastermesh parameter is a regular two or three dimensional array of arbitrary number of points that outlines theboundary of the problem domain.The mastermesh argument defines nodes of a master mesh that is used to create actualmesh. The coordinates of nodes of actual mesh are obtained as multidimensional interpolation of master mesh nodes.The order of master mesh interpolation is defined by the "InterpolationOrder" option.

The parameter division is a number of elements of actual mesh in each direction (e.g. 8nxµnyµnz<).

IMPORTANT: The mastermesh points have to be given in a order that defines a counter-clockwise local coordinatesystem of the master mesh.

IMPORTANT : The "InterpolationOrder" is NOT related to the interpolation order of the elements used, the interpola-tion order of the elements is defined by the elements topology.

option description default value

"InterpolationOrder" The degree of master mesh interpolation is specified bythe option "InterpolationOrder". By default the third-orderHor less if the number of points inone direction is less than 4L polynomialinterpolations of coordinates X,Y,Z is used.

3

"BodyID" body identification string None

"BoundaryDomainID" domain identificationHone or moreL forthe elements additionally generated on the outersurface of elements generated bySMTMesh

8<

Options for SMTMesh.

AceFEM Finite Element Environment 159

Page 160: AceFEMManual

160 AceFEM Finite Element Environment

Page 161: AceFEMManual

Generic example

<< AceFEM`;

L = 10.;

mastermesh = 8Table @ 8x, Sin @4 x ê LD<, 8x, 0, L, 2 <D,

Table @ 8x, Sin @4 x ê LD + 2<, 8x, 0, L, 2 <D,

Table @ 8x, Sin @2 x ê LD + 4<, 8x, 0, L, 2 <D<;

SMTInputData @D;

SMTAddDomain@" A", " SEPSQ1DFHYQ1NHookeA", 8" E ∗" −> 1000., " ν ∗" −> .49 <D;

SMTMesh@" A", " Q1", 820, 4 <, mastermesh , " BodyID " −> " a" D;

SMTAnalysis @D;

AceFEM Finite Element Environment 161

Page 162: AceFEMManual

1,11,31,2

3,...

1,...

...,...2,2

2,1

x

yMaster mesh points have to be given in correct order.

Master mesh

Actual mesh 20*4

162 AceFEM Finite Element Environment

Page 163: AceFEMManual

Actual mesh+ master mesh

1D mesh topology

L1,C1

1

2

1

2

3

L2,C2

1

2

1

2

34

5

AceFEM Finite Element Environment 163

Page 164: AceFEMManual

2D mesh topology

T1,P1,T1-1,P1-1

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

9

T1-2,P1-2

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

9

T1-3,P1-3

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

9

T1-4,P1-4

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

9

T2,P2,T2-1,P2-1

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

T2-2,P2-2

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

T2-3,P2-3

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

T2-4,P2-4

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

Q1»S1

1

2

3

4

1

2

3

4

5

6

7

8

9

Q2,S2

1

2

3

4

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

164 AceFEM Finite Element Environment

Page 165: AceFEMManual

3D mesh topology

O1div=83,2,2<

SMTMesh@"Solid", "O1", 83,

88880, 0, 0 <, 83, 0, 0 <<,

880, 2, 0 <, 83, 2, 0 <<<,

8880, 0, 2 <, 83, 0, 2 <<,

880, 2, 2 <, 83, 2, 2 <<<<D

H1div=83,2,2<

SMTMesh@"Solid", "H1", 83,

88880, 0, 0 <, 83, 0, 0 <<,

880, 2, 0 <, 83, 2, 0 <<<,

8880, 0, 2 <, 83, 0, 2 <<,

880, 2, 2 <, 83, 2, 2 <<<<D

O2div=83,2,2<

SMTMesh@"Solid", "O2", 83,

88880, 0, 0 <, 83, 0, 0 <<,

880, 2, 0 <, 83, 2, 0 <<<,

8880, 0, 2 <, 83, 0, 2 <<,

880, 2, 2 <, 83, 2, 2 <<<<D

H2div=84,3,2<

SMTMesh@"Solid", "H2", 84,

88880, 0, 0 <, 84, 0, 0 <<,

880, 3, 0 <, 84, 3, 0 <<<,

8880, 0, 2 <, 84, 0, 2 <<,

880, 3, 2 <, 84, 3, 2 <<<<D

AceFEM Finite Element Environment 165

Page 166: AceFEMManual

2D mesh topology with mesh refinement

Q1-rf

1 2 3 4

5 6 7 8

9

10

11

12

13 14

15

16

17

18 19

20

21

22

23 24

SMTMesh@"2D", "Q1 −rf", 83, 2 <8880, 0 <, 83, 0 <<, 880, 2 <, 8

S1-rf

SMTMesh@"Shell", "S1 −rf",

84, 3 <, 8880, 0, 0 <, 84, 0 ,

880, 3, 0 <, 84, 3, 0 <<<D

Q2-rf

1 2 3 4 5 6

7 8 9

10 11 12 13 14 15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

SMTMesh@"2D", "Q2 −rf", 83, 2 <8880, 0 <, 83, 0 <<, 880, 2 <, 8

S2-rf

SMTMesh@"Shell", "S2 −rf",

83, 2 <, 8880, 0, 0 <, 83, 0 ,

880, 2, 0 <, 83, 2, 0 <<<D

166 AceFEM Finite Element Environment

Page 167: AceFEMManual

3D mesh topology with mesh refinement

H1-rf

SMTMesh@"Solid", "H1 −rf",

84, 3, 2 <, 88880, 0, 0 <, 84,

880, 3, 0 <, 84, 3, 0 <<<,

8880, 0, 2 <, 84, 0, 2 <<,

880, 3, 2 <, 84, 3, 2 <<<<D

H2-rf

SMTMesh@"Solid", "H2 −rf",

83, 2, 1 <, 88880, 0, 0 <, 83,

880, 2, 0 <, 83, 2, 0 <<<,

8880, 0, 1 <, 83, 0, 1 <<,

880, 2, 1 <, 83, 2, 1 <<<<D

SMTAddSensitivity

SMTAddSensitivity@sID,current_value,dID1->8SensType,SensTypeIndex<, dID2->…D

add sensitivity parameter to the list of sensitivityparametersHsID represents the sensitivity parameter identified by itscurrentvaluevalueand a set of rules that identifies SensType andSensTypeIndex of the parameter for selected domains,all remaining domains by default dependon parameter only implicitlyL

AceFEM Finite Element Environment 167

Page 168: AceFEMManual

SensType code Description SensTypeIndex parameter

1 parameter sensitivity an index of the current material parameter asspecified in the description of the material modelsHthe value in general depends on an element typeL

2 shape sensitivity an index of the current shape parameterHthe value must be the same for all domains, the shape velocityfield has to be additionaly defined after the SMSAnalysisL

3 implicit sensitivity parameter has no meaning

4 essential boundarycondition sensitivity

an index of the current boundary conditionsensitivity parameterHessential or naturalLHthe value must be the same for all domains, the BC velocityfield has to be additionaly defined after the SMSAnalysisL

5 natural boundarycondition sensitivity

an index of the current boundary conditionsensitivity parameterHessential or naturalLHthe value must be the same for all domains, the BC velocityfield has to be additionaly defined after the SMSAnalysisL

Codes for the "SensType" and "SensTypeIndex" switches.

See also: SMTSensitivity, SMTAddSensitivity, Standard user subroutines, Solid, Finite Strain Element for Direct andSensitivity Analysis, Parameter, Shape and Load Sensitivity Analysis of Multi-Domain Example .

One of the input data in the case of shape sensitivity analysis is also the derivation of the nodal coordinates with respectto the shape parameters (shape velocity field) and derivation of the boundary conditions with respect to the boundaryconditions parameters (BC velocity field). The shape velocity field is by default stored in a nodal data field sX(nd$$[i,"sX",j,k]) and should be initialized by the user. The BC velocity field is by default stored in a nodal data fieldsBt and is calculated as sBt = sBp + Dl sdB,where sBp is the BC velocity field at the end of previous step and the sdBis the reference value of the BC velocity field. The sBp (nd$$[i,"sBp",j,k]) and the sdB (nd$$[i,"sdB",j,k]) fields haveto be initialized by the user after the SMSAnalysis command.

168 AceFEM Finite Element Environment

Page 169: AceFEMManual

Example

<< AceFEM`;

SMTInputData @D;

L = 10; Q= 500; v = 1;

SMTAddDomain@8" Ω1", " ExamplesHypersolid2D ", 8" E ∗" −> 1000, " ν ∗" −> 0.3 <<,

8" Ω2", " ExamplesHypersolid2D ", 8" E ∗" −> 5000, " ν ∗" −> 0.2 <<D;

SMTAddEssentialBoundary @ " X" 0 &, 1 −> 0, 2 → 0D;

SMTAddNaturalBoundary @ " Y" L ê 2 &, 2 → Qê 40D;

SMTAddEssentialBoundary @ " X" L && "Y" 0 &, 2 → −vD;

SMTMesh@" Ω1", " Q1", 820, 20 <, 8880, 0 <, 8L ê 2, 0 <<, 880, L ê 2<, 8L ê 2, L ê 2<<<D;

SMTMesh@" Ω2", " Q1", 820, 20 <, 888L ê 2, 0 <, 8L, 0 <<, 88L ê 2, L ê 2<, 8L, L ê 2<<<D;

SMTAddSensitivity @8H∗ E is the first material parameter on " Ω1" domain ∗L8" E", 1000, " Ω1" → 81, 1 <<,

H∗ ν is the second material parameter on " Ω2" domain ∗L8" ν", 0.2, " Ω2" → 81, 2 <<,

H∗ L is first shape parameter for all domains ∗L8" L", L, _ → 82, 1 <<,

H∗ Q is the first boundary condition parameter − prescribed force ∗L8" Q", 1, _ → 85, 1 <<,

H∗ v is the second boundary condition parameter − prescibded displacement ∗L8" v", 1, _ → 84, 2 <<

<D;

SMTAnalysis @D;

This sets an initial sensitivity of node coordinates (shape velocity field) with respect to L for shape sensitivity analysis.

SMTNodeData@" sX", Map @8P2T ê L, 0 < &, SMTNodesDD;

This sets an initial sensitivity of prescribed force (BC velocity field) with respect to the intensity of the distrubuted force Q.

SMTNodeData@ " Y" L ê 2 &, " sdB", 80, 1 ê 40., 0, 0 <D;

This sets an initial sensitivity of prescribed displacement (BC velocity field) with respect to prescribed displacement v.

SMTNodeData@" X" L && "Y" 0 &, " sdB", 80, 0, 0, −1<D;

AceFEM Finite Element Environment 169

Page 170: AceFEMManual

Analysis

SMTAnalysis

SMTAnalysis@optionsD checktheinput data, createdatastructuresandstarttheanalysis

The SMTAnalysis also compiles the element source files and creates dynamic link library files (dll file) with the usersubroutines (see also SMTMakeDll) or in the case of MDriver numerical module reads all the element source files intoMathematica.

170 AceFEM Finite Element Environment

Page 171: AceFEMManual

option description defaultvalue

"Output" output file nameHfor comments, debugging, etc.L FalseHno output fileL

"PostOutput" post-processing data file nameIsee also SMTPutM False

"PostInput" input data can be imported from the previously stored post-processing data fileIsee also SMTGetM

False

"Solver" 0fl appropriate linear solver is chosen automaticallysolverIDflsolver with linear solver identification numbersolverID8solverID,p1,p2,...< flsolver with linear solver identification numbersolverIDandset of parameters for initialisationIsee also SMTSetSolverM

0

"OptimizeDll" Truefl set compiler options for the fastes codeFalsefl set compiler options for debugging

Automatic

"SearchFunction" function applied on coordinates of nodesbeforethe search procedures if the coordinates are notnumbersHe.g before "Tie" , SMTFindNodes, etc.L

HÒ& L

"Precision" number of significant digits used within the searchproceduresHe.g for the "Tie" option, SMTFindNodes, etc.L

6

"Tolerance" the numbers smaller in absolute magnitude than"Tolerance"are replaced by 0 within the search procedures

10-10

"Tie" Truefl join nodes which have coordinatesand node identification with the same values8True,nodeselctor< fl join nodes which have coordinatesand node identification with the same values,except the nodes that match thenodelectorIsee also Selecting NodesMFalsefl supprese tieIthe tie is by default suppresed for all nodes that havenode identification switch-T, see Node IdentificationM

True

"Debug" Truefl prevent closing of the CDriver console on exit False

"NodeReordering" Reordering of the nodes effects the numerical efficiencyof the linear solver used as well as memory consumption,however there is no assurance that the nodereordering will actually have positive effect.Falsefl no node reordering apart from the nodes with the nodeidentification switch-E that are always positioned at the end"AdvancingFront"flSimple reordering scheme based on the element connectivitytable. Additional nodes of the element are always positionedafter the topological nodes. The nodes with the switch-

E are always positioned at the end.Automaticfl "AdvancingFront"

Automatic

"ContactPairs" specify the the pairs slave-bodyêmaster-body for which the possible contact conditionis checked99slaveBodyID1,masterBodyID1=,9slaveBodyID2,masterBodyID2=,...=

Automatic

AceFEM Finite Element Environment 171

Page 172: AceFEMManual

Options for the SMTAnalysis function.

SMTNewtonIteration

SMTNewtonIteration@D oneiterationof thegeneralNewton-Raphsoniterativeprocedure

See also: Iterative solution procedure

SMTNextStep

SMTNextStep@Dt, DlD reset environment variables to the new time incrementDt ,boundary conditions multiplier increment toDl,upadate time and multiplier,and make the solution at the end of the previous time step tobe equal to current solutionHapªat, spªst, hpªht, Bp∫BtL

SMTNextStep@Dt, lD ª SMTNextStep@Dt, l@t+DtD-l@tDDwherel is a multiplier function

See also: Iterative solution procedure

Example: Zig-zag load

This is a path following procedure with a zig-zag multiplier increment l as a function of time.

λ@t_D : = If @OddQ@Floor @Ht + 1L ê 2DD, 1, −1D H2 Floor @Ht + 1L ê 2D − tL;

Plot @λ@t D, 8t , 0, 10 <D

2 4 6 8 10

-1.0

-0.5

0.5

1.0

Do@SMTNextStep @0.1, λD;

While @SMTConvergence @10^ −8, 10 D, SMTNewtonIteration @D; D;

, 8i, 1, 100 <D

172 AceFEM Finite Element Environment

Page 173: AceFEMManual

SMTStepBack

SMTStepBack@D make the current state of the system to be the same asthe one at the end of the previous time stepHatªap, stªsp, htªhpL

See also: Iterative solution procedure

SMTConvergence

SMTConvergence@tol, n, type, optionsD check if the convergence conditionsfor the iterative procedure have been satisfied

SMTConvergence@D ª SMTConvergence@10 -7,15," Abort "DSMTConvergence@"Reset"D The SMTConvergence command continuously stores data

related to iterations and makes decisions accordingly tothe history of iterations. The SMTConvergence@"Reset"Dcommand clears the history of iterations.

type return value description

"Abort" True »»Dat»»>tol , one more iteration is required

none iterative process is aborted in the case of divergence

"Analyze" True »»Dat»»>tol , one more iteration is required

False »»Dat»»tol , convergence condition forthe iterative procedure has been satisfied

ctype divergence

8"Adaptive",m,Dlmin, Dlmax,lmax<

True »»Dat»»>tol , one more iteration is required

9False,Dl, True,»»Dat»»= convergence conditions for theiterative procedure have been satisfied

8False, 0,False, "MaxBound"<

the value of the boundary conditionsmultiplier is larger or equallmaxH l ¥lmaxL

8True, Dl,True, ctype<

divergence

8True, 0,False, "MinBound"<

the value of the boundaryconditions multiplier increment is lessthan prescribed minimumH Dl DlminL

"Adaptive" ª 8"Adaptive", 2ê3 n, 0,¶,¶<8"Adaptive Time",m,Dtmin, Dtmax, tmax<

ª adaptive time increment that is equivalentto the adaptive multiplier increment

Return values accordingly to the type.

AceFEM Finite Element Environment 173

Page 174: AceFEMManual

ctype description

"NêA" error in numerical procedures

"Divergence" »»Dat»» ض"Alternate" alternating solution

"ErrorStatus" the error status flag has been set to 2

"Unknown" the reason for the lack of convergence of iterative procedure is unknown

Divergence type accordingly to the ctype.

option description defaultvalue

"Alternate" Falsefl alternating solution is ignored"Divergence"fl alternating solution means divergenceTrueª "Divergence"

Automaticª 88Dtmaxê4,Dlmaxê4<,8Dtmaxê10,Dlmaxê10<,8¶,¶<<

88Dtl,Dll<, 8Dtg,Dlg<, 8Dtg1,Dlg1<< flif alternating solution occurs start the following procedure:first if DtDtl »»DlDll then set SMTIData@"SubIterationMode",1D;if solution still alternate andDtDtg »»DlDlg then set SMTIData@"GlobalIterationMode",1D;convergence conditions have been satisfied andDt>Dtg1 »»Dl>Dlg1 then setSMTIData@"GlobalIterationMode",0D and repeat iterations

"Divergence"

"PostIteration" enables an additional call to the SKR user subroutines afterthe convergence of the global solutionIsee SMSTemplateMAutomaticfl perform post-iteration call accordingly to the value of the templateconstant of specific elementIsee SMSTemplateMFalsefl prevent post-iteration callTruefl force post-iteration call

Automatic

Options for the SMTConvergence function.

Where tol is the tolerance, n is the maximum number of iterations, m is the desired number of iterations, Dl is theproposed multiplier (or time) increment, Dlmin is the minimum value of the boundary conditions multiplier increment(or time increment), Dlmax is the maximum value of the boundary conditions multiplier increment (or time increment),lmax is the minimum value of the boundary conditions multiplier (or time), and ctype is the character constant thatexplains the reason for the lack of convergence of the iterative procedure.

See also: Iterative solution procedure

SMTDump

SMTDump@nameD savesrestartdatato thefiles name.rst andname.rsb

SMTDump@name,symb1,symb2,…D

saves restart data to the filesname.rstandname.rsband appends definitions associated with the given symbols

174 AceFEM Finite Element Environment

Page 175: AceFEMManual

The SMTDump commands saves all the data associated with the current state of the active AceFEM session so that itcan be retrived by the SMTRestart command. The SMTDump command creates two files. The name.rst file is a text filethat contains input data and eventual definitions of specified symbols. The name.rsb file is a binary file that stores nodaland element data.

CDriver specific!

See also: SMTRestart

Example: Restarting the AceFEM session

Here we first analyze the give structure up to the load level 500.

<< AceFEM`;

AceFEM Finite Element Environment 175

Page 176: AceFEMManual

SMTInputData @D;

SMTAddDomain@" A", " SEPSQ1DFHYQ1NHookeA", 8" E ∗" −> 1000., " ν ∗" −> .49 <D;

SMTAddNaturalBoundary @Abs@" X" Sin @" X" êê ND ê 20 + 8 − " Y" D < 0.1 &, 2 −> − .01 D;

SMTAddEssentialBoundary @" X" 1 &, 1 −> 0, 2 −> 0D;

SMTAddEssentialBoundary @" X" 40 &, 1 −> 0, 2 −> 0D;

SMTMesh@" A", " Q1", 880, 5 <, Array @ 82, 2 Sin @2 êê ND ê 20 + 4 1 < &, 82, 40 <DD;

SMTAnalysis @D;

SMTNextStep @1, 100 D;

While @While @step = SMTConvergence @10^ −7, 15, 8" Adaptive ", 8, .01, 300, 500 <D ,

SMTNewtonIteration @DD;

SMTStatusReport @D;

If @step P4T === " MinBound ", SMTStatusReport @" ∆λ < ∆λmin " DD;

If @Not @step P1TD, SMTShowMesh@" DeformedMesh " → True,

" Field " → " Sxy ", " Mesh" → False, " Contour " → 20, " Show" −> " Window" DD;

step P3T ,

If @step P1T, SMTStepBack @DD;

SMTNextStep @1, step P2TDD;

Show@SMTShowMesh@" Show" → False, " BoundaryConditions " → True D,

SMTShowMesh@" DeformedMesh " → True, " Mesh" → False, " Field " → " Sxy ",

" Contour " → 20, " Show" → False, " Legend " → False D, PlotRange → All D

Tê∆T=1. ê1. λê∆λ=100. ê100. ˛∆a˛ê˛Ψ˛=8.69452 × 10−9

ê9.20677 × 10−13 Iter êTotal =8ê8 Status =0ê8Convergence <

Tê∆T=2. ê1. λê∆λ=226.531 ê126.531 ˛∆a˛ê˛Ψ˛=4.28437 × 10−11

ê9.39798 × 10−13 Iter êTotal =7ê15 Status =0ê8Convergence <

Tê∆T=3. ê1. λê∆λ=415.035 ê188.505 ˛∆a˛ê˛Ψ˛=6.93678 × 10−8

ê9.82326 × 10−13 Iter êTotal =6ê21 Status =0ê8Convergence <

Tê∆T=4. ê1. λê∆λ=500. ê84.9646 ˛∆a˛ê˛Ψ˛=4.55315 × 10−8

ê9.71718 × 10−13 Iter êTotal =5ê26 Status =0ê8Convergence <

The state of the analysis at the load level 500 is then stored in "dump1" restart files.

SMTDump@" dump1" D;

Old restart files dump1

are replaced by new. See also: SMTDump

176 AceFEM Finite Element Environment

Page 177: AceFEMManual

Here tha data associated with the state of the AceFEM session at the load level 500 is restored from the "dump1" restart files and the analysis then continues up to the load level 1000.

<< AceFEM`;

SMTRestart @" dump1" D;

While @While @step = SMTConvergence @10^ −7, 15, 8" Adaptive ", 8, .01, 300, 1000 <D ,

SMTNewtonIteration @DD;

SMTStatusReport @D;

If @step P4T === " MinBound ", SMTStatusReport @" ∆λ < ∆λmin " DD;

If @Not @step P1TD, SMTShowMesh@" DeformedMesh " → True,

" Field " → " Sxy ", " Mesh" → False, " Contour " → 20, " Show" −> " Window" DD;

step P3T ,

If @step P1T, SMTStepBack @DD;

SMTNextStep @1, step P2TDD;

Show@SMTShowMesh@" Show" → False, " BoundaryConditions " → True D,

SMTShowMesh@" DeformedMesh " → True, " Mesh" → False, " Field " → " Sxy ",

" Contour " → 20, " Show" → False, " Legend " → False D, PlotRange → All D

Tê∆T=4. ê1. λê∆λ=500. ê84.9646 ˛∆a˛ê˛Ψ˛=4.55315 × 10−8

ê9.71718 × 10−13 Iter êTotal =6ê27 Status =0ê8Convergence <

Tê∆T=5. ê1. λê∆λ=642.186 ê142.186 ˛∆a˛ê˛Ψ˛=3.19802 × 10−13

ê1.05292 × 10−12 Iter êTotal =6ê33 Status =0ê8Convergence <

Tê∆T=6. ê1. λê∆λ=880.129 ê237.943 ˛∆a˛ê˛Ψ˛=2.19265 × 10−12

ê1.16237 × 10−12 Iter êTotal =6ê39 Status =0ê8Convergence <

Tê∆T=7. ê1. λê∆λ=1000. ê119.871 ˛∆a˛ê˛Ψ˛=1.38806 × 10−9

ê1.22704 × 10−12 Iter êTotal =5ê44 Status =0ê8Convergence <

AceFEM Finite Element Environment 177

Page 178: AceFEMManual

SMTRestart

SMTRestart@nameD reads the restart data from thename.rstandname.rsbfiles and continues theAceFEM session from the point of the corresponding SMTDump command

CDriver specific!

See also: SMTDump

SMTSensitivity

SMTSensitivity@D solve the sensitivity problem for all sensitivity parameters

The following steps are performed for all sensitivity parameters:

fl user subroutine "Sensitivity pseudo-load" is called for each element,

fl sensitivity pseudo-load vector is added to the global pseudo-load vector Y,

fl set of linear equations is solved K ∑a

∑fi=Y that yields sensitivity of global (nodal) variables

fl user subroutine "Dependent sensitivity" is called for each element to resolve sensitivity of local (element)variables

See also: SMTSensitivity, SMTAddSensitivity, Standard user subroutines, Solid, Finite Strain Element for Direct andSensitivity Analysis, Parameter, Shape and Load Sensitivity Analysis of Multi-Domain Example .

SMTTask

SMTTask@taskIDD executetaskthatcorrespondsto thetaskidentificationtaskID

option description defaultvalue

"IntegerInput"->8i1,i2,…<

vector of integer valuesThe length of the vector is specified by theTasksData$$@2D constant in the user subroutine"Tasks"Isee Standard user subroutinesM.

8<

"RealInput"->8r1,r2,…<

vector of real valuesThe length of the vector is specified by theTasksData$$@3D constant in the user subroutine "Tasks".

8<

"Elements"->elementselector

the user subroutine "Tasks"is called only for the selected elements

All

"Point"->8x,y,z< the user subroutine "Tasks" is called only for the patchof elements that surrounds the given spatial point andthe results are then extrapolated into the given pointH only valid for the task types 2 and 3, see alsoL

False

Options for the SMTTask function.

178 AceFEM Finite Element Environment

Page 179: AceFEMManual

The type of the task is defined at the code generation phase (seeStandard user subroutines ) and cannot bechanged later. The return value of the SMSTask command depends on the type of the task as well as on the number ofoutput parameters. The complete list of the possible output parameters is IntegerOutput, RealOutput, VectorGlobal,MatrixGlobal, however the output parameters that are not actually used are not returned as the results of the SMSTaskscommand. If the number of IntegerOutput or RealOutput values is one then a scalar is returned rather than a vector.

The actual execution of the tasks type 2 and 3 depends on the value of the "Point" option. If the spatial point is notgiven then the user subroutine is called for all elements, the resulting continuous field is smoothed and evaluated for allnodes of the mesh and the value of the field for all nodes is then returned as the result of the task. In the case that spatialpoint is specified then the user subroutine is called only for the patch of the elements that surrounds the given spatialpoint, the resulting continuous field is the extrapolated to the given spatial point and the value of the field in the givenpoint is then returned as the result of the task.

tasktype

task description return values

1 the user subroutine is called for all or selected elements,resulting integer and real output vectors aresummarized and returned as the results of the task

8IntegerOutput,RealOutput<

2 see above continuous field evaluated inall nodes or in a given spatial point

3 see above continuous field evaluated inall nodes or in a given spatial point

4 the user subroutine is called for all elementsand assembled global vector is returnedtogether with the integer and real output vectors

8IntegerOutput,RealOutput,VectorGlobal<

5 the user subroutine is called for all elementsand assembled global matrix is returnedtogether with the integer and real output vectors

8IntegerOutput,RealOutput,MatrixGlobal<

6 the user subroutine is called for all elements andassembled global vector and global matrix are returnedtogether with the integer and real output vectors

8IntegerOutput,RealOutput,VectorGlobal,MatrixGlobal<

Return values accordingly to the type of the task.

See also: User Defined Tasks, SMSStandardModule, Standard user subroutines

SMTStatusReport

SMTStatusReport@D print out thereportof thecurrentstatusof thesystem

SMTSolutionReport@exprD print out the report of the current status ofthe system tagged by the arbitrary expressionexpr

This prints out the report of the current status of the system and the current values of all degrees of freedom in node 5.

SMTStatusReport @SMTNodeData@5, "at" DD

AceFEM Finite Element Environment 179

Page 180: AceFEMManual

SMTSessionTime

SMTSessionTime@D gives the total number of seconds of real time thathave elapsed since the beginning of your AceFEM session

SMTErrorCheck

SMTErrorCheck@console, file, report, notebookD

check for error events and print error messages on:console∫0 fl console driver windowHif openedLfile∫0 fl output fileHif openedLreport∫0 fl report windownotebook∫0 fl current notebook

SMTErrorCheck@D ª SMTErrorCheck@1,1,1,0D

There are two types of environment variables identifying various error events. The environment variable idata$$["Er-rorStatus"] (see table below) identifies the general error status.

Errorstatus

Description

0 no special events were detected during the session

1 warnings were detected during the session,Hevaluation is still performed in a regular way, time step cutting is recommendedL

2 fatal errors were detected during the sessionHtime step cutting is necessaryL3 fatal errorHterminate the processL

Codes for the error status switch.

Additional environment variables "MissingSubroutine", "SubDivergence", "ElementState", "ElementShape" and

"MaterialState" (see Environment Data ) then give more information about the error. Error event variables are set in a

user subroutine. They should be increased by 1 whenever the error condition that sepcifies specific event appears. TheSMTErrorCheck function is used to processs the error events. In the case of error event the error message is producedand all monitored variables are set back to zero value.

Here is the part of the symbolic input where the error event is reported if the Jacobean of the nonlinear coordinate mapping (J)becomes negative.

SMSIf AJ ≤ 10−9E;

SMSExport @1, idata$$ @"ErrorStatus" DD;

SMSExport @SMSInteger @idata$$ @"ElementShape" DD + 1, idata$$ @"ElementShape" DD;

SMSEndIf @D;

180 AceFEM Finite Element Environment

Page 181: AceFEMManual

SMTSimulationReport

SMTSimulationReport@D produce report identifying the percentageof time spent in specific tasks during the analysis

SMTSimulationReport@idata_names, rdata_names, commentD

print out additional information stored in userdefined integer and real type environment variablesand arbitrary commentsIfor details see Code ProfilingM

option description defaultvalue

"Output" a list of output devices:"Console"fl current notebook"File" fl current output fileHif definedL

8"Console","File"<

Options for the SMTSimulationReport function.

AceFEM Finite Element Environment 181

Page 182: AceFEMManual

Postprocessing

SMTShowMesh

SMTShowMesh@optionsD display two- or three-dimensional graphics using options specified and return graphics object

182 AceFEM Finite Element Environment

Page 183: AceFEMManual

option description defaultvalue

"Show" specifies output device TrueFalse

"Label" an expression or the list ofexpressions to be printed as a label for the plot

None

"Mesh" display mesh as wire frame accordingly to the mesh typePossible mesh types include True, False, Automatic,RGBColor@red,green,blueD , GreyLevel@levelD.

True

"Marks" display nodal and element numbers False

"BoundaryConditions"

mark nodes with the non-zero boundary conditions False

"Domains" list of the domain identificationsHonly the domains with the domainidentification included in the list are plottedL

All

"Elements" fill in the element surfaces with theelement surface color or with the contour lines

True

"Field" the vector of nodal values that defines scalar fieldused to calculate element surface color or contour lines

False

"Contour" display contour lines of thescalar fieldp defined by the "Field" option

False

"Legend" include legend specifying thecolors and the range of the "Field" values

True

"DeformedMesh" display deformed mesh by adding the vector field u multiplied

by the "Scale" option to the nodal coordinatesX IX :=X+u MFalse

"Scale" scaling factor for deformed mesh 1.

"Opacity" graphics directive which specifies that graphicalobjects which follow are to be displayed,if possible,with given opacityHnumber between 0 and 1LHNew in Mathematica6L

False

"User" user supplied graphic primitivesHe.g.8Circle@80,0<,1D<L. Thecoordinate system for the user graphics is thesame as the coordinate system of the structure!

8<

"Combine" apply arbitrary function on the results of theSMTShowMesh command and return the results

HÒ& L

"TimeFrequency" the SMTShowMesh command is not executedif the absolute difference in time for two successiveSMTShowMesh calls is less than "TimeFrequency"HNew in Mathematica6L

0

"MultiplierFrequency"

the SMTShowMesh command is not executed ifthe absolute difference in multiplier for two successiveSMTShowMesh calls is less than "MultiplierFrequency"HNew in Mathematica6L

0

"StepFrequency" the SMTShowMesh command is not executed iftheabsolute difference in step number for two successiveSMTShowMesh calls is less than "StepFrequency"HNew in Mathematica6L

0

AceFEM Finite Element Environment 183

Page 184: AceFEMManual

Main options for the SMTShowMesh function.

The nodes with the non-zero essential boundary condition are marked with color points. The nodes with the non-zeronatural boundary condition are marked with arrow for the nodes with two unknowns and with color point otherwise.Before the analysis the Bp and dB boundary values (see also Input Data) are displayed separately, and during theanalysis only Bt is displayed.

"Show" option description

"Show"ØTrue displays graphics as a new notebook cell

"Show"ØFalse the graphics object is returned, but no display is generated

"Show"Ø"Window" displays graphics in a separate post-processing notebook

"Show"Ø8"Export",file, format, options< ª Export@ file,produced graphics, format, optionsDexport data to a file,converting it to a specified formatHsee also Export commadL

"Show"Ø8"Animation", keyword, options< creates subdirectory with the namekeywordandexports current graphics as GIF file with the nameframe_number.gifHframe numbers are counted automaticallyandoptionsare the same as for command ExportL

"Show"Ø"Window" False show options can be combinedH e.g. "Window" False displays graphics into post-

processing notebook and retuns graphics objectLMethods for output device.

"Contour" option description

"Contour"->True display 10 contour lines

"Contour"Øn displayn contour lines

"Contour"Ø8min,max,n< displayn contour lines taken from the range8min,max<Methods for setting up contour lines.

"Legend" option description

"Legend"->True display legend with default number of divisions

"Legend"Øndiv display legend withndiv divisions

"Legend"Ø"MinMax" display only minimum and maximum values

"Legend"ØFalse no legend

Methods for setting up contour lines.

"Label" option description

"Label"->Automatic display min. and max. nodal value

"Label"ØNone no label

"Label"Øexpression give an overall label for the plot

Methods for setting up plot label.

184 AceFEM Finite Element Environment

Page 185: AceFEMManual

"DeformedMesh"option

description

"DeformedMesh"ØTrue

Original finite element mesh is deformed as followsXnew=X +uX

Ynew=Y +uY

Znew=Z+uZ

where the displacement vectorsuX , uY,uZ are by default obtained using theSMTPostIsee SMTPostMcommand. If the "DeformedMeshX", "DeformedMeshY" and"DeformedMeshZ" postprocessing codes are specified by theuser thenuX =SMTPost@"DeformedMeshX"D,uY =SMTPost@"DeformedMeshY"D,uZ=SMTPost@"DeformedMeshZ"D,elseuX =SMTPost@1D,uY =SMTPost@2D,uZ=SMTPost@3D.

" DeformedMesh"Ø8uX , uY, uZ<

user defined displacement vectorsuX , uY, uZ

Methods for setting up deformed mesh.

"Marks" option description

"Marks"->True display nodal and element numbersª "Marks"->8"NodeNumber","ElementNumber"<

"Marks"ØFalse no numbers

"Marks"Ø"ElementNumber" display element numbers

"Marks"Ø"NodeNumber" display node numbers

Methods for setting up contour lines.

AceFEM Finite Element Environment 185

Page 186: AceFEMManual

option description defaultvalue

"TextStyle" specifies the default style and fontoptions with which text should be rendered

8FontSizeØ9,FontFamilyØ"Arial" <

"NodeMarks" mark all the nodes with the circle False

"NodeTagOffset" position of the node number relative to thenode 8.01,.01,.01<"NodeID" list of the node identificationsHonly the nodes with

the node identification included in the list are plottedLAutomatic

"ColorFunction" a function to apply to the values of scalarfield p defined by the "Field" option to determinethe color to use for a particular contour region

Automatic

"ZoomNodes" the parameter is used to select nodesIit has one of the forms described in section Selecting Nodes,only the elements with all nodes selected are depictedM

False

"ZoomElements" the parameter is used to select elementsIit has one of the forms described in section Selecting Elements,only the selected elements are depictedM

False

"NodeMarksField" the vector of nodal values that are usedto calculate color for each nodal point mark

False

"RawOutput" insteade of the graphics return raw data as follows:8vertex coordinates,vertex field values,vertex collors that correspond to vertex values,legend graphics object,complete graphics object<HNew in Mathematica6L

False

"ShowFor" specify a list of rules that transforms symbolic expressionsHe.g. for nodal coordinatesL into numerical valuesIoption isMDriver specific, see also Semi-analytical solutionsM

Automatic

Additional options for the SMTShowMesh function.

The SMTShowMesh function is the main postprocessing function for displaying the element mesh, the boundary condi-tions and arbitrary postprocessing quantities. The vectors of nodal values p, n, uX , uY, uZ are arbitrary vectors ofNoNodes numbers (see also SMTPost ). Several examples are presented in sections Solution convergencetest , Standard AceFEM Procedure.

examples

SMTShowMesh@D

186 AceFEM Finite Element Environment

Page 187: AceFEMManual

SMTShowMesh@"Elements"ØWhite,LightingØ88"Ambient",White<<D

SMTShowMesh@"Elements"ØRed,LightingØ88"Ambient",White<<D

SMTShowMesh@"Opacity"Ø0.7D

SMTShowMesh@"Elements"ØFalse,"Mesh"ØBlueD

SMTShowMesh@"Marks"Ø"NodeNumber"D

AceFEM Finite Element Environment 187

Page 188: AceFEMManual

SMTShowMesh@"Field"Ø"Sxx"D

SMTShowMesh@"Field"Ø"Sxx","Contour"ØTrueD

SMTShowMesh@"Field"Ø"Szz","NodeMarks"Ø6,"Legend"ØFalseD

SMTShowMesh@"Field"Ø"Szz","Mesh"ØFalse,"Legend"ØFalseD

SMTShowMesh@Epilog->Inset@Plot@Sin@xD,8x,-5,5<D,8Right,Bottom<,8Right,Bottom<D D

-4 -2 2 4

-1.0-0.5

0.51.0

SMTShowMesh@"Combine"ØHRow@8Ò,Plot@Sin@xD,8x,-5,5<D<D& LD

-4 -2 2 4-0.5

0.5

1.0

188 AceFEM Finite Element Environment

Page 189: AceFEMManual

SMTMakeAnimation

SMTMakeAnimation@keywordD generates a notebook animation from frames stored bythe SMTShowMesh command under givenkeywordHnew in Matematica 6L

SMTMakeAnimation@keyword,"Flash"D generates a Shockwave Flash animationfrom frames stored by the SMTShowMeshcommand under givenkeywordHnew in Matematica 6L

SMTMakeAnimation@keyword,"GIF"D generates an animated GIF animationfrom frames stored by the SMTShowMeshcommand under givenkeyword

Animation frames are stored into the keyword subdirectory of the current directory. The existing keyword subdirectoryis automatically deleted.

The corresponding SMSShowMesh option is "Show"Ø"Animation", keyword. The actual size of the frame can varyduring the animation resulting in non-smooth animation. To prevent this the size of the frames has to be explicitlyprescribed by an additional option "Show"Ø"Animation", keyword, ImageSize-> wspec, hspec . The width and theheight of the animation are specified in printer's points. See also SMSShowMesh and Export.

SMTResidual

SMTResidual@nodeselectorD evaluate residualHreactionL in nodes defined bynodeselectorIsee Selecting NodesM as a sum of residualvectors of all elements that contribute to the node

SMTResidual@nodeselector,elementselectorD

evaluate residualHreactionL in nodesdefined bynodeselectorIsee Selecting NodesMas a sum of residual vectors of allelements defined byelementselectorIsee Selecting ElementsM that contribute to the node

SMTPostData

SMTPostData@pcode,ptD get a value of post-processing quantitie defined by post-

processing keywordpcodein point pt

SMTPostDataA9pcode1,pcode2,…=,ptE ª get the values of post-processing quantities9pcode1,pcode1,…= in point pt

SMTPostDataApcode,9pt1,pt2,…=E ª get the values of post-processing quantitiepcodein points9pt1,pt2,…=

The SMTPostData function can only be used if the element user subroutine for data post-processing has been defined( s e eStandard user subroutines ). The post-processing code pcode can corresponds either to the integration point or to thenodal point post-processing quantity.

AceFEM Finite Element Environment 189

Page 190: AceFEMManual

nodal point post-processing quantity.

The given point can lie outside the mesh. The value is obtained in that case by extrapolation of the field from theelement that lies closes to the given point.

See also: SMTPost , SMTPointValues, Solution Convergence Test .

SMTData

SMTData@gcode_StringD getdataaccordinglyto thecodegcode

SMTData@ie, ecode _StringD get element data for the elementwith the indexie accordingly to the codeecode

SMTData@...,"File"->TrueD append the result of theSMTDatafunction to the output file

The SMTData function returns data according to the code gcode or ecode and element number ie.The data returned canbe used for postprocessing and debugging. An advanced user can use the Data Base Manipulations to access andchange all the analysis data base structures during the analysis.

gcode Description

"Time" real time

"Multiplier" natural and essential boundary conditions multiplier Hload levelL"Step" total number of completed solution steps

Various analysis data directly accessible from Mathematica.

gcode Description

"MatrixGlobal" global matrix according to the lastcompleted actionHcommand yields aSparseArray L

"VectorGlobal" global vector according to the last completed action

"MatrixLocal" contents of the local matrix received from the user subroutine in thelast completed actionHe.g. last evaluated element tangent matrixL

"VectorLocal" contents of the local vector received from the user subroutine in thelast completed actionHe.g. last evaluated element residual vectorL

"TangentMatrix" global tangent matrixHmatrix is obtained by executing one Newton-Raphson iterationHSMTNewtonIterationL without solving the linear system of equationsL,Hcommand yields aSparseArray L

"Residual" global residual vectorHincludes contributionfrom the elements and the natural boundary conditionsL

"DOFNode" for all unknown parameters theindex of the node where the parameter appears

"DOFNodeID" for all unknown parameters theidentification of the node where the parameter appears

"DOFElements" for all unknown parameters the list of elements where the parameter appears

Various global data directly accessible from Mathematica.

190 AceFEM Finite Element Environment

Page 191: AceFEMManual

ecode Action Returnvalues

"All" collect all the data associated with the element String

"SKR" call to the "SKR" usersubroutineIsee SMSStandardModuleM

tangent matrix and residual for elementie

"SSE" call to the "SSE" usersubroutineIsee SMSStandardModuleM

sensitivity pseudo-load vector for elementie

"SHI" call to the "SHI" user subroutine True

"SRE" call to the "SKR" user subroutine residual for elementie

"SPP" call to the "SPP" user subroutine get arrays of integration pointand nodal point postprocessingquontities for elementie

"Usern" call to the user defined"Usern" user subroutine where n=1,2,…,9

True

Various element data directly accessible from Mathematica.

SMTPut

SMTPut@pkey,uservector,optionsD

save all post-processing data together with the additional vector of arbitraryreal numbersuservectorto the file specified by the SMTAnalysisoptionPostOutputIsee SMTAnalysisM using the keywordpkey

SMTPut@pkeyD ª SMTPut@pkey,8<DSMTPut@D ª SMTPut@SMTIData@"Step"DD

option description defaultvalue

"TimeFrequency" the data is not saved if the absolute difference in time fortwo successive SMTPut calls is less than "TimeFrequency"

0

"MultiplierFrequency"

the data is not saved if the absolute difference in multiplier fortwo successive SMTPut calls is less than "MultiplierFrequency"

0

"StepFrequency" the data is not saved if the absolute difference in step number fortwo successive SMTPut calls is less than "StepFrequency"

0

Options for the SMTPut function.

The keyword pkey can be arbitrary integer or real number and it has to be unique for each SMTPut call. It is used laterby the SMTGet command to locate the position of post-processing data. The SMTPut command creates two files. The.idx file is text file that contains all the input data, all keys and also eventual definitions of symbols stored by theSMTSave command. The .hdf file is a binary file that stores actual post-processing data. Post-processing data stored iscomposed from all scalar field defined by post-processing subroutines of all elements.

CDriver specific!

See also: Subroutine: "Postprocessing" , post-processing .

AceFEM Finite Element Environment 191

Page 192: AceFEMManual

Example

Here is an example of the analysis of a rectangular structure (L×L). Structure is clamped at X=0 and it has prescribed vertical displacement at X=L. Session can be divided into analysis and post-processing session.

Analysis session

<< AceFEM`;

SMTInputData @D;

Emodul = 1000; L = 5;

SMTAddDomain@" Ω1", " SEPET2DFHYT2NHookeA", 8" E ∗" −> Emodul , " ν ∗" −> 0.3 <D;

SMTAddEssentialBoundary @8 " X" 0 &, 1 −> 0, 2 −> 0<, 8 " X" L &, 2 −> 1<D;

SMTMesh@" Ω1", " T2", 85, 5 <, 8880, 0 <, 85, 0 <<, 880, 5 <, 85, 5 <<<D;

Here the input data structures are saved into the file post.hdf.

SMTAnalysis @" PostOutput " −> " post ", " Output " −> " tmp.txt " D;

Here are saved some general parameters of the problem .

SMTSave@Emodul , LD;

192 AceFEM Finite Element Environment

Page 193: AceFEMManual

During the analysis all the post-processing data is stored for each converged step. Additionally the total force is also stored into binary file post.hdf. The current step number (SMTIData["Step"]) is used as the keyword under which the data is stored.

SMTNextStep @1, 0.1 D;

While @While @step = SMTConvergence @10^ −8, 15, 8" Adaptive ", 8, .0001, 0.1, 1 <D,

SMTNewtonIteration @D; D;

If @Not @step @@1DDD, force = Plus @@ SMTResidual @" X" L &D;

SMTPut@SMTData@" Step " D, force D;

SMTShowMesh@" DeformedMesh " → True,

" Field " → " Sxx ", " Contour " → 10, " Show" → " Window" D;

D;

If @step @@4DD === " MinBound ", SMTStatusReport @" Error: ∆λ < ∆λmin " D; Abort @D; D;

step @@3DD, If @step @@1DD, SMTStepBack @D; D;

SMTNextStep @1, step P2TDD;

Post-processing session

Here the new, independent session starts by reading input data from the previously stored post-processing data base file.

<< AceFEM`;

SMTInputData @D;

SMTAnalysis @" PostInput " −> " post " D;

All the symbols stored by the SMTSave command are available at this point.

Emodul

1000

The SMTGet[] command returns all the keywords and the names of the stored post-processing quantities.

8allkeywords , allpostnames < = SMTGet@D;

allpostnames

allkeywords

8DeformedMeshX, DeformedMeshY, Exx, Exy, Eyx, Eyy, Ezz, Sxx , Sxy, Syx, Syy, Szz, u, v <

81, 2, 3, 4, 5, 6, 7, 8, 9, 10 <

The SMTGet[3] command reads the data stored under keyword 3 (step 3 for this example) back to AceFEM and returns the userdefined vector of real numbers for step 3 (total force for this example).

force = SMTGet@3D

9−3.38142 × 10−13 , 46.2459 =

Here the post-processing quantitie "Sxx" for the current step is evaluated at the centre of the rectangle

SMTPostData @" Sxx ", 8L ê 2, L ê 2<D

0.284164

AceFEM Finite Element Environment 193

Page 194: AceFEMManual

SMTGet

SMTGet@pkeyD getall post-processingdatastoredunderthekeyword pkey

CDriver specific!

See also SMTPut, Subroutine: "Postprocessing" , post-processing .

SMTSave

SMTSave@symbolD appends definitions associated with the specified symbolto a file specified by the SMTAnalysis' s optionPostOutput

CDriver specific!

See also SMTPut, SMTGet, Subroutine: "Postprocessing" , post-processing .

Data Base Manipulations

SMTIData

SMTIData@ "code"D get the value of the integer typeenvironment variable with the codecode

SMTIData@ "code", valueD set the value of the integer type environmentvariable with the codecodeto be equalvalue

SMTIData@"All" D get all names and values of integer type environment variables

SMTRData@"code"D get the value of the real typeenvironment variable with the codecode

SMTRData@"code", valueD set the value of the real type environmentvariable with the codecodeto be equalvalue

SMTRData@"All" D get all names and values of integer type environment variables

Get or set the real or integer type environment variable.

The values of the code parameter are specified in Integer Type Environment Data and Real Type Environment Data.

This returns the number of nodes.

SMTIData @"NoNodes" D

SMTRData

See also: SMTIData

194 AceFEM Finite Element Environment

Page 195: AceFEMManual

SMTNodeData

SMTNodeData@nodeselector, "code" D getthedatawith thecodecodefor nodesselectedby nodeselector

SMTNodeData@nodeselector, "code", valueD

set the data with the codecodefornodes selected bynodeselectorto be equalvalue

SMTNodeData@"code"D get the data with the codecodefor all nodes

SMTNodeData@ "code",8v1,v2,…,vNoNodes<D set the data with the codecodefor all nodes to be equal given values

Get or set the general nodal data.

The values of the code parameter are specified in Node Data . The nodeselector can be a node number, a list of nodenumbers or a logical expression (see also Selecting Nodes ).

IMPORTANT: The structure of the global tangent matrix has to be updated with the SMTSetSolver command in thecase that the change of element or nodal data has effect on the structure of the global tangent matrix (e.g. if essentialboundary conditions are added or removed during the analysis).

Interpreted nodal data

SMTNodeData@ " Unknowns" D geta vectorof currentvaluesof all unknownsof theproblem

SMTNodeDataA" Unknowns",9a1,a2,…,aNoEquations=E

set the current value of all unknowns of the problem

Get an additional information related to the node that is not a part of the nodal data structure.

The vector of unknowns is composed of all nodal degrees of freedom that are not constrained. The ordering of thecomponents is done accordingly to the current ordering of equations as defined by SMTNodeData["DOF"];

SMTNodeData@nodeselector, " NodeID" D getthenodespecificationNodeID for nodesselectedby nodeselector

SMTNodeData@" NodeID" D get the node specificationNodeIDfor all nodes

SMTNodeData@nodeselector,"All" D get all names and values of the data for nodes selected bynodeselector

SMTNodeData@"All" D get all names and values of the data for all nodes

Get an additional information related to the node that is not a part of the nodal data structure.

This returns the current values of all unknowns in node 5.

SMTNodeData@5, "at" D

This adds 1 to unknowns in first 10 nodes.

SMTNodeData@Range@10D, "at", 1 + SMTNodeData@Range@10D, "at" D D

This sets all unknowns to zero in all nodes.

SMTNodeData@"at", 0 ∗ SMTNodeData@"at" D D

This sets the shape velocity field in node 5 to 1,0.

SMTNodeData@5, "sX", 81, 0 < D

AceFEM Finite Element Environment 195

Page 196: AceFEMManual

This sets the BC velocity field in node 5 to 1,0

SMTNodeData@5, "sdB", 81, 0 < D

SMTNodeSpecData

SMTNodeSpecData@ "code"D get the data with the codecodefor all node specifications

SMTNodeSpecData@ NodeID, "code"D get the data with the codecodefor the node specificationNodeID

SMTNodeSpecData@ NodeID,"All" D get all names and values of thedata for the node specificationNodeID

Get node specification data.

The values of the code parameter are specified in Node Specification Data. Node specification data can not be changed.

SMTElementData

SMTElementData@elementselector,codeD getthedatawith thecodecodefor elementsselectedby elementselector

SMTElementData@elementselector,code,valueD

set the data with the codecodeforelements selected byelementselectorto be equalvalue

SMTElementData@"code"D get the data with the codecodefor all elements

Get or set the element data.

SMTElementData@" Domain" DSMTElementData@elementselector, "Domain" D

get the domain identificationdIDfor all elements or for the selection of elements

SMTElementData@" Body" DSMTElementData@elementselector, "Body" D

get the body identificationb ID forall elements or for the selection of elements

SMTElementData@" Code" DSMTElementData@elementselector, "Code" D

get the element typeetypefor all elements or for the selection ofelements

SMTElementData@"All" DSMTElementData@elementselector,"All" D get all names and values of for all elements or for the selection of elements

Get an additional information related to the element that is not a part of the element's data structure.

The values of the code parameter are specified in Element Data . The elementselector can be an element number, a listof element numbers or a logical expression (see also Selecting Elements ).

This returns a list of nodes for 35-th element.

SMTElementData @35, "Nodes" D

196 AceFEM Finite Element Environment

Page 197: AceFEMManual

SMTDomainData

SMTDomainData@dID, "code" D getthedatawith thecodecodefor domaindID

SMTDomainData@dID, "code", valueD set the data with the codecodefor domaindID to be equalvalue

SMTDomainData@"code"D get the data with the code code for all domains

SMTDomainData@ dID,"All" D get all names and values of the data for domaindID

SMTDomainData@"DomainID"D get domain identificationsdID for all domains

SMTDomainData@i_Integer, "code"D get the data with the codecodefor i -th domain

SMTDomainData@i_Integer, "code", valueD set the data with the codecodefor i-th domain to be equalvalue

Get or set the element specification data.

The values of the code parameter are specified in Domain Specification Data.

This returns material data specified for the domain "solid".

SMTDomainData@"solid", "Data" D

This sets material data specified for the domain "solid" to new values.

SMTDomainDataA"solid", "Data", 9E, ν, σy , …=E

SMTFindNodes

SMTFindNodes@nodeselectorD The parameternodeselectoris used to select nodes. It hasone of the forms described in section Selecting Nodes.

SMTFindElements

SMTFindElements@elementselectorD The parameterelementselectoris used to select elements. It hasone of the forms described in section Selecting Elements.

SMTSetSolver

SMTSetSolver@solverIDD update all structures related to theglobal tangent matrix and number of equationsaccordingly to the value of parametersolverID

SMTSetSolver@solverID,p1,p2,...D initialize solver with solver identification numbersolverIDand a set of parameters depending on the solver type

SMTSetSolver@D reset solver structures

AceFEM Finite Element Environment 197

Page 198: AceFEMManual

solverID Description

0 appropriate solver is chosen automatically

1 standard LU profile unsymmetric solverHno user parameters definedL

2 standard LDL profile symmetric solverHno user parameters definedL

3 NOT A PART OF THE STANDARD DISTRIBUTION !!!

SuperLU unsymmetric solverSMTSetSolver@4,8ordering, work_allocation<,8pivot_tresh, fill<D

4 NOT A PART OF THE STANDARD DISTRIBUTION !!!

UMFPACK solver

5 PARDISO solver from INTEL MKL H manual is available athttp:êêwww.intel.comêsoftwareêproductsêmklêdocsêmanuals.htmL

Linear solver sets the number of negative pivots (or - 1 if data is not available) to Integer Type Environment variable"NegativePivots" and the number of near-zero pivots to variable "ZeroPivots". The data can be accessed through theSMTIData["NegativePivots"] and SMTIData[""ZeroPivots"] commands. The the number of negative pivots ( SMTI-Data["NegativePivots"]) is only available for the standard LU and LDL solvers and for the PARDISO mtype=-2solver!!.

Intel MKL Solver - PARDISO initialization

SMTSetSolverA5,mtype,99pi1,pv1=,9pi2,pv2=,...==E

initialize PARDISO solvermtype-type of matrixpii - index of thei-th parameter in theiparm vector accordingly to the PARDISOmanualpvi - value of thei -th parameter

Some of the more common parameters are given below. For a complete list of the parameters refer to the manualavailable at http : // www.intel.com/software/products/mkl/docs/manuals.htm.

mtype - Type of matrix

type of matrix

1 - real and structurally symmetric matrix (partial pivoting)

2 - real and symmetric positive defini matrix

-2 - real and symmetric indefinite matrix ( SMTIData["NegativePivots"] available)

3 - complex and structurally symmetr matrix

4 - complex and Hermitian positive definite matrix

-4 - complex and Hermitian indefinite matrix

6 - complex and symmetric matrix

11 - real and unsymmetric matrix (full pivoting)

13 - complex and unsymmetric matrix

Complex matrices are not yet supported!

198 AceFEM Finite Element Environment

Page 199: AceFEMManual

Complex matrices are not yet supported!

The default matrix type depends on the element specification SMSSymmetricTangent and node identifications (NodeIdentification) -L and -AL.

60, pv - Out-of-core

Parameter 60 controls what version of PARDISO - out-of-core version (pv=2) or in-core version (pv=0) - is used. Thecurrent OOC version does not use threading.

8,nstep -Max number of iterative refinment steps

Maximum number of iterative refinement steps that the solver will perform. Iterative refinement will stop if a satisfac-tory level of accuracy of the solution in terms of backward error has been achieved. The solver will not perform morethan the absolute value of nstep steps of iterative refinement and will stop the process if a satisfactory level of accuracyof the solution in terms of backward error has been achieved. The default value for nstep is 2.

10,pv -Small pivot treshold

On entry, pv instructs PARDISO how to handle small pivots or zero pivots for unsymmetric matrices . The magnitudeof the potential pivot is tested against a constant threshold of: ε = 10−pv Small pivots are therefore perturbed with

ε = 10−pv The default value of pv is 13 and therefore ε = 10−13 .

References

Intel® Math Kernel Library : Reference Manual

Shared Finite Element Libraries

SMTSetLibrary

SMTSetLibrary@pathD sets the path to the users library and initializes the library

Initialize the library.

option description Default

"Code" two letter code that uniquely identifies the library "UL"

"Title" the short name that describes the contentsof the libraryHe.g. "large strain plasticity models"L

"User Library"

"URL" the internet address where the library will be posted "xxx"

"Keywords" the list of keywords used to create the elements codeIsee Unified Element CodeM

the keywords usedby the default built-in library

" Contents " the description of the contents of the library "xxx"

"Contact" the contact address of the corresponding author or institution "xxx"

Options for SMTSetLibrary command.

See also:AceShare, Simple AceShare library

AceFEM Finite Element Environment 199

Page 200: AceFEMManual

SMTAddToLibrary

SMTAddToLibraryA9key2,key2,…=E adds the element with the unifiedelement codeIkey1>key2>... M composedfrom the given keywords to the current library

Add elements to the library.

The keywords used to compose the element code must be the same as defined by the SMTSetLibraryIsee Unified Element Code M command.

The AceGen session name used to create the element must be the same as the element code.

option description Default

"Author" 8"name","address"< 8"","" <"Source" the name of the notebook with the

AceGen source used to create the elementHthe source notebook can be also automatically createdby the SMSRecreateNotebook@D commandL

""

"Documentation" the name of the notebook with the documentation ""

"Examples" the name of the notebook with the practical examples ""

"DeleteOriginal" delete the original "Source", "Documentation" and"Examples" notebooks after they are copied to the library

False

"DescriptionTable" 2 D array included into home pageHhome page itemL 88<<"Main" arbitrary data stored

Hdata can be retrived by "Main"ê.SMTGetData@"element code"D LÑ

"Data" list of rules where arbitrarydata can be strored under the keywords8data_key1->data_contents1,...<Hdata can be retrived by data_keyê.SMTGetData@"element code"D L

8<

"Benchmark" list of rulesHhome page itemL 8key1->"HTML source code printed into home page verbatim 1",...<

8<

"Figure" a list of HTML form hyperlinks to thefigures that appears as a part of the home page8"figure hyperlink 1",...<

8<

"Links" a list of HTML form hyperlinksthat are included into the home page88 "link description 1", "hyperlink 1"<,...<

8<

Options for SMTAddToLibrary command.

See also:AceShare, Simple AceShare library, SMTSetLibrary

200 AceFEM Finite Element Environment

Page 201: AceFEMManual

SMTLibraryContents

SMTLibraryContents@D prepares the contents of the libraryin a way that can be posted on internetH it should be called once before postingL

See also: Simple AceShare library

Utilities

SMTScanedDiagramToTable

SMTScanedDiagramToTable@scaned_points, s0, s1,v0,v1D

transforms a table of points picked withMathematicafrom the bitmap picture into thetable of points in the actual coordinate system,wheres0ands1are two points picked from thepicture with the known coordinatesv0 andv1

Example

<< AceFEM`;

AceFEM Finite Element Environment 201

Page 202: AceFEMManual

pt = 8820, 20 <, 8100, 100 <<; task = " s0 ";

ColumnB:Row@8" Input: ", RadioButtonBar @Dynamic @task D, 8" Set s0 ", " Set s1 ", " Input points " <D,

Button @" Clear ", pt = Take@pt , 2 DD<, " " D,

ClickPane B

ShowB ,

Graphics @Dynamic @8Red, Point @Drop @pt , 2 DD, Blue, Locator @pt @@1DDD, Green, Locator @pt @@2DDD<DDF

, Switch @task , " Set s0 ", pt = 8 , + 100<, " Set s1 ",

pt @@2DD = , " Input points ", AppendTo @pt , DD &F

>F

202 AceFEM Finite Element Environment

Page 203: AceFEMManual

graph = SMTScanedDiagramToTable @Drop @pt , 2 D, pt @@1DD, pt @@2DD, 8100., 0 <, 81000., 1000. <D

ListLinePlot @graph , PlotMarkers → Automatic D88260.058, 19.0114 <, 8462.099, 95.057 <,

8711.37, 361.217 <, 8850.437, 604.563 <, 8955.394, 855.513 <<

æ

æ

æ

æ

æ

400 500 600 700 800 900

200

400

600

800

AceFEM Finite Element Environment 203

Page 204: AceFEMManual

SMTPost

SMTPost@pcode _StringD get a vector composed of the nodal values according to element post-processing codepcodeHCDriver specificL

SMTPost@i_Integer, ncode_StringD

get a vector composed of thei-th componenet of thenodal quantitiencodeH"at","ap","da","st","sp"L from all nodes

SMTPost@i_IntegerD ª SMTPost@i , "at"D

The SMTPost function returns the vector of NoNodes numbers that can be used for postprocessing by the SMT-ShowMesh function or directly in Mathematica.

The first form of the function can only be used if the element user subroutine for data post-processing has been defined( s e e Subroutine: "Postprocessing" ) The post-processing code pcode can corresponds either to the integrationpoint or to the nodal point post-processing quantity.

If the pcode code corresponds to the integration point quantity then the integration point values are first mapped tonodes accordingly to the type of extrapolation as follows:

Type 0: Least square extrapolation from integration points to nodal points is used. The nodal value is additionallymultiplied by the user defined nodal weight factor that is stored in element specification data structure for each node(es$$["PostNodeWeights",nodenumber]. Default value of the nodal weight factor is 1.

Type 1: The integration point value is multiplied by the shape function value fNi =wNi ⁄j=1NoIntPointswij fGj i=1,2,…,NoN

odes where fGj are an integration point values, wij are an integration point weight factors, wNi are the nodal wight

factors andfNi are the values mapped to nodes. Integration point weight factor can be e.g the value of the shape func-

tions at the integration point and have to be supplied by the user. By default the last NoNodes integration point quanti-ties are taken for the weight factors.

By default the least square extrapolation is used. The smoothing over the patch of elements is then performed in order toget nodal values.

There are three postprocessing codes with the predetermined function: "DeformedMeshX","DeformedMeshY" and"DeformedMeshZ". If the "DeformedMeshX", "DeformedMeshY" and "DeformedMeshZ" postprocessing codes arespecified by the user then SMTShowMesh use the corresponding data to produce deformed version of the original finiteelement mesh.

Several examples are presented in sections Solution convergence test , Standard AceFEM Procedure.

See also: SMTPostData , SMTPointValues .

SMTPointValues

SMTPointValues@p, nvD evaluate scalar field defined bythe vector of nodal valuesnv at pointp

SMTPointValues@8p1, p2,…<,8nv1, nv2, …, nvN<D

evaluateN -dimensional vector fielddefined by the vectors of nodal valuesnvi at pointspi

The vectors of nodal values nvi are arbitrary vectors of NoNodes numbers (see also SMTPost). The SMTPointValues

function returns scalar fields evaluated at the specific points of the problem domain. Several examples are presented in

204 AceFEM Finite Element Environment

Page 205: AceFEMManual

function returns scalar fields evaluated at the specific points of the problem domain. Several examples are presented in

sections Solution Convergence Test, Round- off Error Test .

See also: SMTPostData , SMTPost .

SMTMakeDll

SMTMakeDll@sourcefile, TrueD createdll file H optimisedby thecompilerLSMTMakeDll@source file, FalseD create dll fileHwithout additional compiler optimisationL

SMTMakeDll@D create dll file from the last generatedAceGencodeHif possibleL

The dll file is created automatically by the SMTMakeDll function if the command line Visual studio C compiler andlinker MinGW C compiler and linker are available. How to set necessary paths is described in the Install.txt file. Forother C compilers, the user should write his own SMTMakeDll function that creates .dll file on a basis of the elementsource file, the sms.h header file and the SMSUtility.c file. Files can be found at the Mathematica directory$BaseDirectory/Applications/AceFEM/Include/CDriver/ ).

AceFEM Finite Element Environment 205