Skip to content

Commit

Permalink
Initial release of FEPX v1.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
jcappola committed Jul 30, 2020
0 parents commit 0f9a3b8
Show file tree
Hide file tree
Showing 127 changed files with 85,961 additions and 0 deletions.
33 changes: 33 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
*.o
*.a
*.mod
*.x
*~
*.x.dSYM
*.cp*
*.fn*
*.ky*
*.pg*
*.tp*
*.vr*
*.mv*
*.dvi
*.info

/lib/libf95/modules
/lib/libparallel/modules_serial
/lib/libparallel/modules_parallel
/src/build/

# Ignore AppleDouble files and Mac .DS_Store files
._*
.DS_Store

# Ignore LaTeX auxilliary files
*.aux
*.log
*.out
*.synctex.gz
*.toc

fepx.pdf
700 changes: 700 additions & 0 deletions COPYING

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# FEPX - Finite Element Polycrystal Plasticity

## Overview

FEPX is a parallel finite element-based elasto-viscoplastic framework for use in modeling large deformations of polycrystalline aggregates. Its primary features are:

* Nonlinear kinematics capable of resolving large strains and large rotations
* Anisotropic elasticity based on crystal symmetry
* Anisotropic plasticity based on rate-dependent slip restricted to dominant slip systems
* State variable evolution for crystal lattice orientation and slip system strengths

## Installation

Installation instructions for FEPX are provided in the PDF documentation included in the distribution.
2 changes: 2 additions & 0 deletions VERSIONS
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
New in 1.0.0 (30 Jul 2020):
- First public release.
21 changes: 21 additions & 0 deletions doc/texinfo/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# This file is part of the FEPX software package.
# Copyright (C) 1996-2020 ACME Lab
# See the COPYING file in the top-level directory.

pdf:
texi2pdf fepx.texi
cp fepx.pdf ..

info:
makeinfo fepx.texi
cp fepx.info ..

html:
makeinfo --html fepx.texi

clean:
rm -f *.cp* *.fn* *.ky* *.pg* *.tp* *.vr* *.mv*\
*.log *.toc *.aux *.dvi *~ *.pdf *.info
install:
su -c "mkdir -p /usr/local /usr/local/info;\
cp -f fepx.info /usr/local/info/"
49 changes: 49 additions & 0 deletions doc/texinfo/copying.texi
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
@c This file is part of the FEPX software package.
@c Copyright (C) 1996-2020, DPLab, ACME Lab.
@c See the COPYING file in the top-level directory.

@node Conditions of Use
@unnumbered Conditions of Use

@section Copying Conditions

FEPX is ``free software''; this means that everyone is free to use it and
to redistribute it on a free basis. FEPX is not in the public domain; it is
copyrighted and there are restrictions on its distribution, but these
restrictions are designed to permit everything that a good cooperating
citizen would want to do. What is not allowed is to try to prevent others
from further sharing any version of FEPX that they might get from you.

Specifically, we want to make sure that you have the right to give away
copies of FEPX, that you receive source code or else can get it if you want
it, that you can change FEPX or use pieces of FEPX in new free programs,
and that you know you can do these things.

To make sure that everyone has such rights, we have to forbid you to deprive
anyone else of these rights. For example, if you distribute copies of
FEPX, you must give the recipients all the rights that you have. You must
make sure that they, too, receive or can get the source code. And you must
tell them their rights.

Also, for our own protection, we must make certain that everyone finds out
that there is no warranty for FEPX. If FEPX is modified by someone else
and passed on, we want their recipients to know that what they have is not
what we distributed, so that any problems introduced by others will not
reflect on our reputation.

The precise conditions of the license for FEPX are found in the General
Public License that accompanies the source code (@pxref{GNU General
Public License}). Further
information about this license is available from the GNU Project webpage
@uref{http://www.gnu.org/copyleft/gpl-faq.html}.

@section User Guidelines

If you use FEPX for your own work, please, mention it explicity in your reports
and cite the following publication:
@c
@itemize
@item @cite{P.R. Dawson, D.E. Boyce. FEPX Finite Element Polycrystals:
Theory, Finite Element Formulation, Numerical Implementation and Illustrative
Examples. arXiv:1504.03296}
@end itemize
114 changes: 114 additions & 0 deletions doc/texinfo/develhistory.texi
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
@c This file is part of the FEPX software package.
@c Copyright (C) 1996-2020 ACME Lab
@c See the COPYING file in the top-level directory.

@node Development History
@appendix Development History

@emph{Milestones in the development of FEpX:}

Development of present code began in the late 1990's.
The impetus was to incorporate elasticity in the existing viscoplastic constitutive framework.
A number of attributes of the mechanical response can be addressed only if elasticity is part of
the total constitutive description, and several of these were important to the research goals at that time.
The inclusion of elasticity, however, fundamentally alters the computational approach because elasticity
is based on changes in configuration of differential volumes, whereas plasticity requires knowledge only of current configurations.
Further, the stiff mathematical character of the resulting system of equations necessitates greater care be exercised in integrating the equations over time and motivates the use of implicit schemes.
While introducing added complexity in this regard, the inclusion of elasticity removes the constraint of
incompressibility, which is particularly difficult to enforce within a robust framework and limits
options available for the computational methodologies.
Given these factors, the intent of the effort was to develop a code to support research investigations with the following defining specifications:
@itemize
@item incorporates anisotropic elasto-viscoplastic behaviors, especially in materials with low rate sensitivity of yielding such as metals at low homologous temperature;
@item embodies nonlinear kinematics, which are necessary for handling the large strains and large rotations inherent in plastic flow;
@item utilizes state-based representation of properties, with attention to verifiable state descriptions at microscale as motivated by the inclusion of crystallographic texture (for yield surfaces) and evolution of texture (for strain induced anisotropy);
@item exercises robust numerical methodologies, including implicit integration for stress, element types capable of large strain deformations, and general boundary conditions;
@item features a data parallel implementation with good scaling characteristics; and,
@item is an expansible code framework to facilitate testing of alternative plasticity models and numerical methodologies.
@end itemize
Incorporation of a code with elasticity and nonlinear kinematics (which are tightly coupled) was carried out principally by E. Marin [@value{mar_daw_98a}, @value{mar_daw_98b}].
The starting point for this effort was a code that utilized a viscoplastic model implemented in parallel
with a hybrid finite element formulation developed by A. Beaudoin [@value{bea_daw_mat_koc_95}] (the hybrid formulation was an effective approach for dealing with the incompressibility constraint in the presence of plastic anisotropy).
This code had been migrated to a version using Fortran and MPI and
had 10-node tetrahedral elements available for robust simulations of large plastic strains [@value{mik_daw_99}].
The approach taken by Marin followed a methodology developed for isotropic elasto-viscoplastic behavior developed about a decade earlier by Eggert [@value{egg_daw_88}].
Refinements were added later by N. Barton [@value{bar_daw_mil_99}] for anisotropic elasticity.

@sp 1

@emph{Earlier development leading to the present version:}

The use of finite elements with crystal plasticity models can be organized into two broad categories that are defined by the relative sizes of grains and elements [@value{daw_mar_98p}]. One category is labeled, 'large scale', and is defined by the grains being much smaller than elements; the other is labeled, 'small scale', and is defined by the elements some part of a grain. In large scale applications, an ensemble of grains underlies spatial points at the continuum scale and defines the properties of the continuum at that point. In small scale applications, the volume within a finite element is entirely of one grain and the material exhibits properties of a single crystal.
The code development leading eventually to FEpX began with a large scale implementation in which crystal plasticity was embedded in an Eulerian, viscoplastic formulation was devised by K. Mathur [@value{mat_daw_89}] to model steady-state metal forming applications.
The potential capabilities of a code that incorporated crystal plasticity was pursued because it permitted computing the evolving anisotropy associated with plastic yielding directly derived from crystallographic texture.
Subsequent application of the approach for metal forming and geologic flow demonstrated that polycrystal models were viable for flow fields that could be idealized as steady and two-dimensional [@value{mat_daw_90}, @value{kum_daw_95}, @value{daw_wen_00}].

The desire to model transient processes, such as sheet forming, motivated the major effort to develop a data parallel code. The code developed in this effort employed a proprietary version of Fortran [@value{mathur_numiform95}] that managed interprocessor communications, and enabled the simulation of fully three-dimensional forming processes [@value{bea_mat_daw_joh_93}, @value{bea_daw_mat_koc_kor_94}].
An interest in applying the approach to small scale as well as large scale problems subsequently led to development of the hybrid finite element formulation for polycrystals [@value{bea_daw_mat_koc_95}].
This milestone solidified the role of the finite element approach for investigating the role of grain interactions in polycrystal deformations and opened the door to investigating the strengths and limitations of various mean field assumptions (e.g. Taylor, Sachs, Relaxed Constraints, and Constrained Hybrid).
Concurrently, the parallel computing landscape was rapidly evolving, and to take advantage of the introduction of new platforms, the code architecture was re-structured to employ Message Passing Interface (MPI) routines to conduct interprocessor communications.
This Fortran/MPI version remained limited to purely viscoplastic behaviors, but was exploited to
study texture evolution in polycrystals as well as development of intragrain misorientation distributions.
@c ({\bf Matt: several articles could be cited here (as given along with others in Section 2.3 of the FEpX theory document), but if this is about developments to FEpX, those may be a bit of a tangent here.})
This code was the starting point for development of FEpX and a re-focusing of the simulation
priorities on small scale applications.

@sp 1

@emph{Application-driven expansion of capabilities:}

FEpX development in the decade following the launch of the first version of the present code was
centered on support of investigations related to mechanical behaviors of polycrystals.
Improvements were made in numerical procedures to improve robustness (namely, the nonlinear solver, quadrature rules, and integration of state variables).
Modifications were implemented to provide options in the loading histories that
enabled better replication of experimental loading protocols.
In particular, options to invoke more complex sequences of loading, unloading and reloading
used in @emph{in situ} loading, x-ray and neutron diffraction experiments were implemented.
Capabilities for cyclic and multiaxial loading were added.

The extraction of data related to the orientation of the crystallographic lattice from the simulation
was of paramount importance.
Routines were implemented to identify elements of the mesh whose lattice orientations lie near crystallographic fibers, a process referred to as 'light-up' in analogy to diffraction measurements.
The output of FEpX was coordinated with a number of
ancillary capabilities for manipulation of orientation-dependent variables (ODFPF),
representation of anisotropic yield surfaces, and execution of a virtual diffractometer.

Definition of the virtual polycrystals simulated with FEpX was initially limited to regular tessellations comprised of dodecahedral grains.
Every grain was discretized with tetrahedral elements, typically numbering from 48 for a coarse representation to 1536 for more finely resolved grains.
The use of other regular tessellations (cubic and truncated octahedral, in particular) were also explored [@value{rit_daw_09}].
The coupling of FEpX with Neper greatly improved the representation of virtual polycrystals by allowing for irregular Voronoi or Laguerre tesselations and
facilitating re-meshing in simulations taken to large plastic strains [@value{que_daw_bar_11}].

Individuals contributing to these improvements include: R. Carson, D. Boyce, T. Han, M. Kasemer, T. Marin, A. Poshadel, R.Quey, and S.-L. Wong.

@sp 1

@emph{Source sharing and documentation:}

By 2010 the use of FEpX over a decade in a variety of research projects motivated a push for
standardization, version control, and sharing best done within a collaborative platform.
A repository was established in 2012 together with documentation (users manual compiled by A. Mitch) for the needed input and possible outputs for FEpX.
In concert with the establishing the code repository, numerous improvements were made in the organization of input and output data.
A full description of the underlying theory and finite element implementation was
posted on arXiv in 2015 [@value{daw_boy_15a}].
@c {\bf New sentence (others?): }
Individuals contributing to this effort include A. Poshadel and M. Kasemer.

@sp 1

@emph{Extensions of FEpX:}

One of the specifications of FEpX was to provide an expansible code framework to facilitate testing of alternative plasticity models and numerical methodologies.
Such efforts typically require substantial alterations to the code and are not intended to result in permanent changes to the baseline code.
Examples of investigations of this nature include: a kinematic model with slip gradients [@value{ger_daw_08b}]; a continuous intragrain lattice representation [@value{car_daw_jmps_2019}], and a kinematic framework for twinning [@value{kas_daw_cmame_2020}].
@c %error estimation~\cite{} (carson/chatterjee).

@sp 1

Dr. Paul R. Dawson
@sp -0.1
Joseph C. Ford Professor of Engineering Emeritus
@sp -0.1
Sibley School of Mechanical and Aerospace Engineering
@sp -0.1
Cornell University
Loading

0 comments on commit 0f9a3b8

Please sign in to comment.