CompDam_DGD-master
C++ 

所属分类:其他
开发工具:IAR
文件大小:273KB
下载次数:0
上传日期:2021-04-07 18:32:22
上 传 者nickoj
说明:  ,jbkjbjnbmnbnmb mnm,,n,mnhvhvjhvjhvbvnb

文件列表:
LICENSE.txt (14179, 2020-02-22)
contributing-checklist.md (551, 2020-02-22)
etc (0, 2020-02-22)
etc\git_version.py (593, 2020-02-22)
etc\hook.sample (86, 2020-02-22)
examples (0, 2020-02-22)
examples\CompDam.parameters (5300, 2020-02-22)
examples\abaqus_v6.env (2448, 2020-02-22)
examples\example_runner.py (1863, 2020-02-22)
examples\test_DCB_fatigue.inp (11092, 2020-02-22)
examples\test_DCB_fatigue_expected.py (638, 2020-02-22)
for (0, 2020-02-22)
for\CompDam_DGD.for (20677, 2020-02-22)
for\DGD.for (72583, 2020-02-22)
for\UMAT.for (3272, 2020-02-22)
for\cohesive.for (15450, 2020-02-22)
for\fiberDamage.for (7741, 2020-02-22)
for\forlog.for (9792, 2020-02-22)
for\friction.for (4521, 2020-02-22)
for\matProp.for (59916, 2020-02-22)
for\matrixUtil.for (13406, 2020-02-22)
for\parameters.for (26499, 2020-02-22)
for\plasticity.for (7731, 2020-02-22)
for\schaefer.for (12966, 2020-02-22)
for\schapery.for (1714, 2020-02-22)
for\stateVar.for (18736, 2020-02-22)
for\strain.for (1923, 2020-02-22)
for\stress.for (7329, 2020-02-22)
for\version.for.nogit (163, 2020-02-22)
for\vexternaldb.for (12798, 2020-02-22)
for\vucharlength.for (8184, 2020-02-22)
for\vumatArgs.for (1677, 2020-02-22)
for\vumatWrapper.for (12000, 2020-02-22)
pyextmod (0, 2020-02-22)
pyextmod\IM7-8552.props (23, 2020-02-22)
pyextmod\Makefile (4496, 2020-02-22)
pyextmod\helpers.py (1734, 2020-02-22)
... ...

# CompDam - Deformation Gradient Decomposition (DGD) This code is a continuum damage mechanics (CDM) material model intended for use with the Abaqus finite element code. This is a research code which aims to provide an accurate representation of mesoscale damage modes in fiber-reinforced polymer composite materials in finite element models in which each ply is discretely represented. The CDM material model is implemented as an Abaqus/Explicit user subroutine (VUMAT) for the simulation of matrix cracks formed under tensile, compressive, and shear loading conditions and fiber fracture under tensile and compressive loading. Within CompDam, the emphasis of many recent developments has been on accurately representing the kinematics of composite damage. The kinematics of matrix cracks are represented by treating them as cohesive surfaces embedded in a deformable bulk material in accordance with the Deformation Gradient Decomposition (DGD) approach. Fiber tensile damage is modeled using conventional CDM strain-softening. This software may be used, reproduced, and provided to others only as permitted under the terms of the agreement under which it was acquired from the U.S. Government. Neither title to, nor ownership of, the software is hereby transferred. This notice shall remain on all copies of the software. Copyright 2016 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. No copyright is claimed in the United States under Title 17, U.S. Code. All Other Rights Reserved. Publications that describe the theories used in this code: - Andrew C. Bergan, ["A Three-Dimensional Mesoscale Model for In-Plane and Out-of-Plane Fiber Kinking"](https://doi.org/10.2514/6.2019-1548) *AIAA SciTech Forum*, San Diego, California, 7-11 January 2019. - Carlos Davila, ["From S-N to the Paris Law with a New Mixed-Mode Cohesive Fatigue Model"](https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20180004395.pdf) NASA/TP-2018-21***38, June 2018. - Andrew C. Bergan, et al., ["Development of a Mesoscale Finite Element Constitutive Model for Fiber Kinking"](https://doi.org/10.2514/6.2018-1221) *AIAA SciTech Forum*, Kissimmee, Florida, 8-12 January 2018. - Frank A. Leone Jr. ["Deformation gradient tensor decomposition for representing matrix cracks in fiber-reinforced materials"](https://dx.doi.org/10.1016/j.compositesa.2015.06.014) *Composites Part A* (2015) **76**:334-341. - Frank A. Leone Jr. ["Representing matrix cracks through decomposition of the deformation gradient tensor in continuum damage mechanics methods"](https://iccm20.org/fullpapers/file?f=Abk7n4gkWV) *Proceedings of the 20th International Conference on Composite Materials*, Copenhagen, Denmark, 19-24 July 2015. - Cheryl A. Rose, et al. ["Analysis Methods for Progressive Damage of Composite Structures"](https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20140001002.pdf) NASA/TM-2013-218024, July 2013. Examples of this code being applied can be found in the following publications: - Andrew C. Bergan and Wade C. Jackson, ["Validation of a Mesoscale Fiber Kinking Model through Test and Analysis of Double Edge Notch Compression Specimens"](https://doi.org/10.12783/asc33/26003) *33rd American Society for Composites (ASC) Annual Technical Conference*, Seattle, Washington, 24-27 September 2018. - Imran Hyder, et al., ["Implementation of a Matrix Crack Spacing Parameter in a Continuum Damage Mechanics Finite Element Model"](https://doi.org/10.12783/asc33/26052) *33rd American Society for Composites (ASC) Annual Technical Conference*, Seattle, Washington, 24-27 September 2018. - Frank Leone, et al., ["Benchmarking Mixed Mode Matrix Failure in Progressive Damage and Failure Analysis Methods"](https://doi.org/10.12783/asc33/26030) *33rd American Society for Composites (ASC) Annual Technical Conference*, Seattle, Washington, 24-27 September 2018. - Brian Justusson, et al., et al., ["Quantification of Error Associated with Using Misaligned Meshes in Continuum Damage Mechanics Material Models for Matrix Crack Growth Predictions in Composites"](https://doi.org/10.12783/asc33/26097) *33rd American Society for Composites (ASC) Annual Technical Conference*, Seattle, Washington, 24-27 September 2018. - Kyongchan Song, et al. ["Continuum Damage Mechanics Models for the Analysis of Progressive Damage in Cross-Ply and Quasi-Isotropic Panels Subjected to Static Indentation"](https://doi.org/10.2514/6.2018-1466) *AIAA SciTech Forum*, Kissimmee, Florida, 8-12 January 2018. - Imran Hyder, et al. ["Assessment of Intralaminar Progressive Damage and Failure Analysis Using an Efficient Evaluation Framework"](https://doi.org/10.12783/asc2017/15405) *32nd American Society for Composites (ASC) Annual Technical Conference*, West Lafayette, Indiana, 22-25 October 2017. - Frank A. Leone, et al. ["Fracture-Based Mesh Size Requirements for Matrix Cracks in Continuum Damage Mechanics Models"](https://doi.org/10.2514/6.2017-01***) *AIAA SciTech Forum*, Grapevine, Texas, 9-13 January 2017. - Mark McElroy, et al. ["Simulation of delamination-migration and core crushing in a CFRP sandwich structure"](https://doi.org/10.1016/j.compositesa.2015.08.026) *Composites Part A* (2015) **79**:192-202. For any questions, please contact the developers: - Frank Leone | [frank.a.leone@nasa.gov](mailto:frank.a.leone@nasa.gov) | (W) 757-8***-3050 - Andrew Bergan | [andrew.c.bergan@nasa.gov](mailto:andrew.c.bergan@nasa.gov) | (W) 757-8***-3744 - Carlos Davila | [carlos.g.davila@nasa.gov](mailto:carlos.g.davila@nasa.gov) | (W) 757-8***-9130 ## Table of contents - [Getting started](#getting-started) - [Model features](#model-features) - [Elements](#elements) - [Material properties](#material-properties) - [State variables](#state-variables) - [Fatigue analyses](#fatigue-analyses) - [Implicit solver compatibility](#implicit-solver-compatibility) - [Example problems](#example-problems) - [Advanced debugging](#advanced-debugging) - [Python extension module](#python-extension-module) - [Summary of tests classes](#summary-of-tests-classes) - [Contributing](#contributing) - [Citing CompDam](#citing-compdam) ## Getting started ### Source code The user subroutine source code is located in the `for` directory. The main entry point is `CompDam_DGD.for`. ### Prerequisites [Intel Fortran Compiler](https://software.intel.com/en-us/fortran-compilers) version 11.1 or newer is required to compile the code ([more information about compiler versions](usersubroutine-prerequisites.md)). MPI must be installed and configured properly so that the MPI libraries can be linked by CompDam. It is recommended that Abaqus 2016 or newer is used with this code. Current developments and testing are conducted with Abaqus 2019. Python supporting files require Python 2.7. ### Initial setup After cloning the CompDam_DGD git repository, it is necessary to run the setup script file `setup.py` located in the repository root directory: ``` $ python setup.py ``` The main purpose of the setup.py script is to 1) set the `for/version.for` file and 2) add git-hooks that automatically update the `for/version.for`. In the event that you do not have access to python, rename `for/version.for.nogit` to `for/version.for` manually. The additional configuration done by `setup.py` is not strictly required. ### Abaqus environment file settings The `abaqus_v6.env` file must have [`/fpp`](https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-fpp), [`/Qmkl:sequential`](https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-mkl-qmkl), and [`/free`](https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-free) in the `ifort` command where the format for Windows is used. The corresponding Linux format is: `-fpp`, `-free`, and `-mkl=sequential`. The `/fpp` option enables the Fortran preprocessor, which is required for the code to compile correctly. The `/free` option sets the compiler to free-formatting for the source code files. The `/Qmkl:sequential` enables the [Intel Math Kernel Library (MKL)](https://software.intel.com/en-us/mkl), which provides optimized and verified functions for many mathematical operations. The MKL is used in this code for calculating eigenvalues and eigenvectors. A sample environment file is provided in the `tests` directory for Windows and Linux systems. ### Submitting a job This code is an Abaqus/Explicit VUMAT. Please refer to the Abaqus documentation for the general instructions on how to submit finite element analyses using user subroutines. Please see the [example input file statements](#example-input-file-statements) for details on how to interface with this particular VUMAT subroutine. Analyses with this code **must** be run in double precision. Some of the code has double precision statements and variables hard-coded, so if Abaqus/Explicit is run in single precision, compile-time errors will arise. When submitting an Abaqus/Explicit job from the command line, double precision is specified by including the command line argument `double=both`. For example, run the test model `test_C3D8R_elastic_fiberTension` in the `tests` directory with the following command: ``` $ abaqus job=test_C3D8R_elastic_fiberTension user=../for/CompDam_DGD.for double=both ``` ### Example input file statements Example 1, using an [external material properties file](#defining-the-material-properties-in-a-props-file): *Section controls, name=control_name, distortion control=YES ** *Material, name=IM7-8552 *Density 1.57e-09, *Depvar, delete=11 ** the above delete statement is optional 19, 1, CDM_d2 2, CDM_Fb1 3, CDM_Fb2 4, CDM_Fb3 5, CDM_B 6, CDM_Lc1 7, CDM_Lc2 8, CDM_Lc3 9, CDM_FIm 10, CDM_alpha 11, CDM_STATUS 12, CDM_Plas12 13, CDM_Inel12 14, CDM_FIfT 15, CDM_slide1 16, CDM_slide2 17, CDM_FIfC 18, CDM_d1T 19, CDM_d1C *Characteristic Length, definition=USER, components=3 *User material, constants=3 ** 1 2 3 ** feature flags, , thickness 100001, , 0.1 ** *Initial Conditions, type=SOLUTION elset_name, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, -999, 1, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0 ** In each step, NLGEOM=YES must be used. This is the default setting. Example 2, using an [input deck command](#defining-the-material-properties-in-the-input-deck): *Section controls, name=control_name, distortion control=YES ** *Material, name=IM7-8552 *Density 1.57e-09, *Depvar, delete=11 ** the above delete statement is optional 19, 1, CDM_d2 2, CDM_Fb1 3, CDM_Fb2 4, CDM_Fb3 5, CDM_B 6, CDM_Lc1 7, CDM_Lc2 8, CDM_Lc3 9, CDM_FIm 10, CDM_alpha 11, CDM_STATUS 12, CDM_Plas12 13, CDM_Inel12 14, CDM_FIfT 15, CDM_slide1 16, CDM_slide2 17, CDM_FIfC 18, CDM_d1T 19, CDM_d1C *Characteristic Length, definition=USER, components=3 *User material, constants=40 ** 1 2 3 4 5 6 7 8 ** feature flags, , thickness, 4, 5, 6, 7, 8 100001, , 0.1, , , , , , ** ** 9 10 11 12 13 14 15 16 ** E1, E2, G12, nu12, nu23, YT, SL GYT, 171420.0, 9080.0, 5290.0, 0.32, 0.52, 62.3, 92.30, 0.277, ** ** 17 18 19 20 21 22 23 24 ** GSL, eta_BK, YC, alpha0 E3, G13, G23, nu13, 0.788, 1.634, 199.8, 0.925, , , , , ** ** 25 26 27 28 29 30 31 32 ** alpha11, alpha22, alpha_PL, n_PL, XT, fXT, GXT, fGXT, -5.5d-6, 2.58d-5, , , 2326.2, 0.2, 133.3, 0.5, ** ** 33 34 35 36 37 38 39 40 ** XC, fXC, GXC, fGXC, cl, w_kb, None, mu 1200.1, , , , , 0.1, , 0.3 ** For spacing below a6=schaefer_a6, b2=schaefer_b2, n=schaefer_n and A=schaefer_A ** 41 42 43 44 ** a6, b2, n, A ** *Initial Conditions, type=SOLUTION elset_name, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, -999, 1, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0, 0.d0 ** In each step, NLGEOM=YES must be used. This is the default setting. ### Running tests Test cases are available in the `tests` directory. The tests are useful for demonstrating the capabilities of the VUMAT as well as to verify that the code performs as intended. Try running some of the test cases to see how the code works. The test cases can be submitted as a typical Abaqus job using the Abaqus command line arguments. ### Building a shared library CompDam_DGD can be built into a shared library file. Follow these steps: 1. Place a copy of the Abaqus environment file (with the compiler flags specified) in the `for` directory 2. In Linux, and when using Abaqus versions prior to 2017, rename `CompDam_DGD.for` to `CompDam_DGD.f` 3. From the `for` directory, run: ``` $ abaqus make library=CompDam_DGD ``` This command will create shared libraries for the operating system it is executed on (`.dll` for Windows and `.so` for Linux). When using a pre-compiled shared library, it is only necessary to specify the location of the shared library files in the environment file (the compiler options are not required). To run an analysis using a shared library, add `usub_lib_dir = ` to the Abaqus environment file in the Abaqus working directory. ## Model features The CompDam_DGD material model implements a variety of features that can be enabled or disabled by the user. An overview of these features is provided in this section. The material properties required for each feature are listed. References are provided to more detailed discussions of the theoretical framework for each feature. ### Fully orthotropic elasticity The composite materials modeled with CompDam_DGD can be defined assuming either [transverse isotropy](https://www.efunda.com/formulae/solid_mechanics/mat_mechanics/hooke_iso_transverse.cfm) or [orthotropy](https://www.efunda.com/formulae/solid_mechanics/mat_mechanics/hooke_orthotropic.cfm). For a transversely isotropic material definition, the following properties must be defined: E1, E2, G12, v12, and v23. For an orthotropic material definition, the following additional properties must be defined: E2, G13, G23, and nu13. ### Matrix damage Tensile and compressive matrix damage is modeled by embedding cohesive laws to represent cracks in the material according to the deformation gradient decomposition method of [Leone (2015)](https://doi.org/10.1016/j.compositesa.2015.06.014). The matrix crack normals can have any orientation in the 2-3 plane, defined by the angle `CDM_alpha`. The mixed-mode behavior of matrix damage initiation and evolution is defined according to the Benzeggagh-Kenane law. The initiation of compressive matrix cracks accounts for friction on the potential crack surface according to the LaRC04 failure criteria. In the notation of the [paper](https://doi.org/10.1016/j.compositesa.2015.06.014), `Q` defines the material direction that is severed by the crack. In this implementation `Q=2` except when `CDM_alpha = 90`. The following material properties are required for the prediction of matrix damage: YT, SL, GYT, GSL, eta_BK, YC, and alpha0. The state variables related to matrix damage are `CDM_d2`, `CDM_FIm`, `CDM_B`, `CDM_alpha`, `CDM_Fb1`, `CDM_Fb2`, and `CDM_Fb3`. ### Thermal strains The thermal strains are calculated by multiplying the 1-, 2-, and 3-direction coefficients of thermal expansion by the current ΔT, as provided by the Abaqus solver. The thermal strains are subtracted from the current total strain. The required material properties are the coefficients of thermal expansion in the 1 and 2 directions. It is assumed that the 2- and 3-direction coefficients of thermal expansion are equal. Hygroscopic strains are not accounted for. If the effects of hygroscopic expansion are to be modeled, it is recommended to smear the hygroscopic and thermal expansion coefficients to approximate the response using the solver-provided ΔT. ### Shear nonlinearity Three approaches to modeling the matrix nonlinearity are available: Ramberg-Osgood plasticity, Schapery theory, and Schaefer plasticity. These three methods are mutually exclusive and optional. #### Ramberg-Osgood plasticity Shear nonlinearity in the 1-2 and/or the 1-3 plane can be modeled using the [Ramberg-Osgood equation](https://en.wikipedia.org/wiki/Ramberg%E2%80%93Osgood_relationship), with its parameters selected to fit experimental data. As applied herein, the Ramberg-Ogsood equation is written in the following form for the 1-2 plane: *γ*12 = [*τ*12 + *α*PLsign(*τ*12)|*τ*12|*n*PL]/*G*12 where *γ*12 is the shear strain and *τ*12 is the shear stress. Likewise, the expression for the 1-3 plane is *γ*13 = [*τ*13 + *α*PLsign(*τ*13)|*τ*13|*n*PL]/*G*13 Prior to the initiation of matrix damage (i.e., `CDM_d2 = 0`), the nonlinear shear response due to the above equation is plastic, and the unloading/reloading slope is unchanged. No pre-peak nonlinearity is applied to the matrix tensile or compressive responses (i.e., *σ22*). The required material inputs are the two parameters in the above equation: *α*PL and *n*PL. Note that the same constants are used for the 1-2 and 1-3 planes under the assumption of transverse isotropy (see [Seon et al. (2017)](https://doi.org/10.12783/asc2017/15267)). For the 1-2 plane, the state variables `CDM_Plas12` and `CDM_Inel12` are used to track the current plastic shear strain and the total amount of inelastic plastic shear strain that has occurred through the local deformation history, respectively. For cases of monotonic loading, `CDM_Plas12` and `CDM_Inel12` should have the same magnitude. Likewise, the state variables `CDM_Plas13` and `CDM_Inel13` are utilized for the 1-3 plane. The [feature flags](#controlling-which-features-are-enabled) can be used to enable this Ramberg-Osgood model in the 1-2 plane, 1-3 plane, or both planes. #### Schapery micro-damage Matrix nonlinearity in the 1-2 plane can also be modeled using Schapery theory, in which all pre-peak matrix nonlinearity is attributed to the initiation and development of micro-scale matrix damage. With this approach, the local stress/strain curves will unload to the origin, and not develop plastic strain. A simplified version of the approach of [Pineda and Waas](https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20120000914.pdf) is here applied. The micro-damage functions *es* and *gs* are limited to third degree polynomials for ease of implementation. As such, four fitting parameters are required for each of *es* and *gs* to define the softening of the matrix normal and shear responses to micro-damage develop ... ...

近期下载者

相关文件


收藏者