# Automatic differentiation for solid mechanics, example scripts

## Description

This is a static collection of the scripts needed to reproduce the examples of the paper: Vigliotti A., Auricchio F., "Automatic differentiation for solid mechanics", Archives of Computational Methods in Engineering, 2020, In the press DOI 10.1007/s11831-019-09396-y The same data are also availble from the following github repository: https://github.com/avigliotti/AD4SM.jl the above repository includes the AD4SM.jl package files and will be updated with new versions, new examples, bug corrections, etc. The scripts included in this data set are written in the Julia programming language and will need a working installation in order to run properly. Julia is an open-source, high-level, high-performance, dynamic programming language. Refer to the Julia language website for more information and downloads at https://julialang.org/ Following the content of the individual files: - adiff.jl : main module implementing the dual number algebra needed for the forward differentiation - materials.jl : module implementing the strain energy density functions for the different material models - elements.jl : module implementing the element integration rules, the functions for evaluating the deformation energy of the entire model, together with the Lagrange multipliers, and the solvers - example_01_non_linear_truss.jl : julia file for the first example 1 of the paper, this file produce as output the openscad model of the deformed truss for producing preety images - example_01_non_linear_truss.ipynb : jupyther notebook file for example 1 - example_02_Euler_beams.ipynb : julia file for the first example 2 of the paper - example_02_Euler_beams.jl : jupyther notebook file for example 2 - example_03_plane_stress.ipynb : jupyther notebook file for the first example 3 of the paper - example_03_plane_stress.jl : julia file for example 3 - example_04_AxSymDomain.ipynb : notebook file for example 4 - example_04_AxSymDomain.jl : julia file for example 4 - example_05_3DSpring.jl : julia file for example 5, this files produces output files readable with paraview - Pattern2D03FinerMesh02j.inp : input file for example 3 - AxSymDomainj.inp : input file for example 4 - 3DSpringHexaj.inp : input file for example 5 - polyhedron_hedges.scad : helper file to produce the openscad files for the deformed lattices of example 1 - description.txt : this file - step_to_reproduce.txt : the file with the steps to reproduce te ecamples

## Files

## Steps to reproduce

1) install the Julia programming language, see https://Julialang.org/ 2) make sure that the following required packages are installed (refer to the Julia language docuemntation for directions about how to add packages, at https://docs.Julialang.org/en/v1/): - IJulia - BenchmarkTools - Statistics - PyPlot - PyCall - MAT - SparseArrays - PyCall - ProgressMeter - Dates - StatsBase - AbaqusReader - JLD - WriteVTK 3) download all the files of the data set in the same folder 4) start Julia in the folder where the files have been downloaded 5) from the Julia prompt launch the examples as: include("example_01_non_linear_truss.jl") include("example_02_Euler_beams.jl") 6) alternatively start a Jupyter notebook running the Julia kernel and open and execute the files with extension .ipynb