Commit Graph

35 Commits

Author SHA1 Message Date
Franz Roters c1b8391110 changed enconding of all source files to UTF-8 without BOM (signature) Codepage 65001 2011-04-07 07:20:28 +00:00
Franz Roters fcdb805225 added copyright text to all f90 (free) format files 2011-04-04 14:09:54 +00:00
Christoph Kords 3d51dd36fa * Introduced preprocessor directives in order to suppress compilation of most write statements when using openmp. This tremendously improves efficiency of parallelization.
* Also added some more openmp directives to increase percentage of parallelized code.

* "implicit none" was missing in two subroutines of homogenization and constitutive.
2011-03-29 07:27:19 +00:00
Christoph Kords 11138e3ee2 debugging output is now controlled by the "verbosity" parameter in the debug.config ranging from 0 (=almost no output) to 8 (=very detailed output)
0 : only version infos and all from "hypela2"/"umat"
1 : basic outputs from "CPFEM.f90", basic output from initialization routines, debug_info
2 : extensive outputs from "CPFEM.f90", extensive output from initialization routines
3 : basic outputs from "homogenization.f90"
4 : extensive outputs from "homogenization.f90"
5 : basic outputs from "crystallite.f90"
6 : extensive outputs from "crystallite.f90"
7 : basic outputs from the constitutive files 
8 : extensive outputs from the constitutive files

If verbosity is equal to zero, all counters in debug are not set during calculation (e.g. debug_StressLoopDistribution or debug_cumDotStateTicks). This might speed up parallel calculation, because all these need critical statements which extremely slow down parallel computation.
2011-03-21 10:31:17 +00:00
Christoph Kords 235266b169 openmp parallelization working again (at least for j2 and nonlocal constitutive model).
In order to keep it like that, please follow these simple rules:

DON'T use implicit array subscripts:
example:    real, dimension(3,3) :: A,B
                  A(:,2) = B(:,1)               <--- DON'T USE
                  A(1:3,2) = B(1:3,1)       <--- BETTER USE
In many cases the use of explicit array subscripts is inevitable for parallelization. Additionally, it is an easy means to  prevent memory leaks.

Enclose all write statements with the following:
!$OMP CRITICAL (write2out)
<your write statement>
!$OMP END CRITICAL (write2out)

Whenever you change something in the code and are not sure if it affects parallelization and leads to nonconforming behavior, please ask me and/or Franz to check this.
2011-03-17 10:46:17 +00:00
Christoph Kords 405d5529e7 * checked and corrected parallelization of code. compiles now successfully, but simply aborts computation with first parallel directive without any comment :-(((
* also put a call to constitutive_microstructure at the start of each crystallite_integration subroutine like it was before. need that for nonlocal model in case of crystallite cutback
2010-11-03 17:22:48 +00:00
Christoph Kords fce7590c17 * now able to choose method for state integration (integrator and integratorStiffness in numerics.config); standard is "Fixed Point Iteration", which is basically the same as before; others available are "Explicit Euler", "AdaptiveEuler", "Classical Runge-Kutta" and "Runge-Kutta Cash-Karp"
* now remembering stiffness similar to how we do it for Lp etc.; avoids undefined stiffness values for nonconverged stiffness calculation

* non-local stuff:
   * changed non-local kinetics (Gilman2002)
   * enforce zero shearrate for overall carrrier density below relevant density
   * enforce zero density for those states that become negative and were below relevant density before
   * dislocation velocity is not limited by V^(1/3) / dt anymore
2010-10-01 12:18:49 +00:00
Alankar Alankar 7548858ffa Some useful changes in damper for quicker convergence. 2010-09-22 08:54:36 +00:00
Philip Eisenlohr c19524f264 1) fixed terminallyIll bug occurring with Ngrains=1 homogenization
2) brushed up the output to be more easily readable/understandable
2010-09-01 21:04:02 +00:00
Denny Tjahjanto 40b1478dac the latest RGC model + corrections for "element homogeneous" feature 2010-03-24 13:20:12 +00:00
Christoph Kords f4e5d32cde added flag verboseDebugger to debug in order to have more control about debugging statements
set this to true if you want extended debugging info in the output file
2010-03-19 14:14:08 +00:00
Philip Eisenlohr 8c8ed34356 reworked crystallite part to allow for flexible user output
--> new "crystallite" part in config file
--> new "crystallite" option for microstructures
--> new output file "...job.outputCrystallite" to be used in conjunction with marc_addUserOutput for meaningful naming of User Defined Vars.
2010-02-25 17:39:11 +00:00
Claudio Zambaldi 7526a24a1b now with functionality to output a "JOB.outputHomogenization". This contains size descriptions of all requested output variables to be parsed by a further script to generate meaningful names for user defined vars... (watch out!) 2010-02-19 18:03:16 +00:00
Christoph Kords 97db70cf23 constitutive_nonlocal:
- reworked contribution of immobile dislocation density for rate equations
- flux is now calculated on the basis of interpolated velocities and densities at the interface; both incoming and outgoing fluxes are considered, so every material point only changes his own dotState
- dislocation velocity is now globally defined and calculated by subroutine constitutive_nonlocal_kinetics; the subroutine is called inside _LpAndItsTangent as well as _microstructure; therefore, microstructure now needs Tstar_v as additional input; in the future one should perhaps create a subroutine constitutive_kinetics that calls constitutive_nonlocal_kinetics separately, to clearly distinguish between microstructural and kinetic variables 
- better use flux density vector as output variable instead of scalar flux values for each interface
- added output variables internal and external resolved stress

crystallite:
- added flag to force local stiffness calculation in case of nonlocal model
- misorientation angle is explicitly set to zero when no neighbor can be found

debug:
- added flag "selectiveDebugger" that is used when debugging statements should only affect a specific element, ip and grain; these are specified with the new variables debug_e, debug_i and debug_g
- debugger can now be used in its original sense
2010-02-17 13:21:36 +00:00
Christoph Kords 1f7aebfa4d new subroutine crystallite_orientations: calculates the orientation matrix and the euler angles and - in case of single grain ips - the misorientation for each neighboring ip.
The calculation of the misorientation is now done once in crystallite init and at the end of every FE increment. This saves a lot of time compared to doing it in dotState for every crystallite subinc.
2009-12-18 15:46:33 +00:00
Denny Tjahjanto 6702cb3baa Introduction of a numerical viscosity into the RGC scheme to improve the convergent behavior and the numerical stability of the scheme (see: homogenization_RGC.f90). These changes have been incorporated in all related subroutines (homogenization.f90, IO.f90, numerics.config and numerics.f90). 2009-11-17 13:42:38 +00:00
Denny Tjahjanto cb88019aa6 introduced a flexibility in cut-backing scheme in homogenization.f90 and in crystallite.f90:
(1) subStepSizeHomog and subStepSizeCryst := size of substep when cut-back is applied (initially was hard-coded).
(2) stepIncreaseHomog and stepIncreaseCryst := step increase when calculation for substep converge (was also hardcoded).

introduced a possibility to choose different finite difference scheme, i.e., forward-, backward- and central-difference, for computing grain numerical tangent. note that central-difference scheme will slow down the computation significantly. please use it only if necessary.

parameters to set these new features have been included in numerics.f90 and numerics.config, whereas corresponding error messages have been introduced in the IO.f90
2009-11-10 13:36:27 +00:00
Christoph Kords 1e5a0318f3 don't do any cutbacks in homogenization when my materialpoint consists of only one grain. 2009-10-27 08:31:45 +00:00
Christoph Kords c766ba2e3a minimum substepping size in homogenization and crystallite is now controlled by two independent parameters subStepMinHomog and subStepMinCryst respectively.
deleted flush statements where they are not needed, since they seriously slow down computation.
2009-10-26 16:43:43 +00:00
Denny Tjahjanto f50d3291f9 sorry, back to the previous version. grain deformation output is part of crystallite.f90, no longer done by homogenization. material.config reflects the changes. 2009-10-22 16:59:24 +00:00
Denny Tjahjanto d344aaf3a0 added possibility to output individual grain deformation gradient in homogenization_RGC.f90 and the homogenization.f90 has been modified accordingly. see material.config for the key-words to output the individual grain deformation gradient in the homogenization block. 2009-10-22 09:24:05 +00:00
Christoph Kords c1ee34d235 constitutive_nonlocal:
- read in activation energy for dislocation glide from material.config
- changed naming of dDipMin/Max to dLower/dUpper
- added new outputs: rho_dot, rho_dot_dip, rho_dot_gen, rho_dot_sgl2dip, rho_dot_dip2sgl, rho_dot_ann_ath, rho_dot_ann_the, rho_dot_flux, d_upper_edge, d_upper_screw, d_upper_dot_edge, d_upper_dot_screw
- poisson's ratio is now calculated from elastic constants
- microstrucutre has state as first argument, since this is our output variable
- periodic boundary conditions are taken into account for fluxes and internal stresses. for the moment, flag has to be set in constitutive_nonlocal. 
- corrected calculation for dipole formation by glide
- added terms for dipole formation/annihilation by stress decrease/increase 

constitutive:
- passing of arguments is adapted for constitutive_nonlocal model

crystallite:
- in stiffness calculation: call to collect_dotState used wrong arguments
- crystallite_postResults uses own Tstar_v and temperature, no need for passing them from materialpoint_postResults

homogenization:
- crystallite_postResults uses own Tstar_v and temperature, no need for passing them from materialpoint_postResults

IO:
- changed error message 229

material.config:
- changed example for nonlocal constitution according to constitutive_nonlocal

all:
- added some flush statements
2009-10-20 14:36:03 +00:00
Philip Eisenlohr ba27947142 material point now cuts back by 1/8
crystallite does not accelerate anymore, since, typically, longer step immediately fails and uses resources in vain. (future: remember number of successful steps to increase step size after x of those...)
2009-10-19 12:50:59 +00:00
Philip Eisenlohr 0a34da292e # no need for materialpoint_results in hypela2
# homogenization updated to be compatible with abaqus interface
2009-10-12 17:01:42 +00:00
Franz Roters 2029b23f98 added version information to all files
do NOT edit text like this:
$Id: constitutive_phenopowerlaw.f90 406 2009-08-31 14:13:10Z MPIE\f.roters $
2009-08-31 15:09:15 +00:00
Franz Roters 4357e29e07 yet another missing "then" in homogenization 2009-08-28 15:26:18 +00:00
Denny Tjahjanto 3ea17dd2fd CPFEM.f90 >>> A very small, not important thing.
homogenization.f90 and crystallite.f90 >>> Correction in the algorithm to count the iteration distribution (for better statistics).

material.config and numerics.config >>> more collection of parameters.
2009-08-28 15:05:14 +00:00
Denny Tjahjanto b25396374a homogenization_RGC.f90 >>> adding some lines, mostly for debugging purpose. no critical change.
constitutive_phenopowerlaw.f90 >>> adding new parameter: constitutive_phenopowerlaw_w0_slip, i.e., the hardening rate exponent.
homogenization.f90 >>> most important change is to add an if-else statement (line 379-380) to switch crystallite_requeted = .false. for already converged material point iteration (el/ip). the rest of the changes are cosmetics and debugging stuffs.
crystallite.f90 >>> similar to homogenization.f90, the most important change is to add additional if-else statement (line 574) in the jacobian (perturbation) loop. now the jacobian calculation will only be performed when crystallite_requested = .true.. the rest is only cosmetic.
2009-08-27 12:10:06 +00:00
Christoph Kords 1dbd0865db constitutive_nonlocal.f90
- completed postResults output function
- connecting vector of neighboring material points is mapped to intermediate configuration of my neighbor

crystallite.f90
- zero out dotState only when crystallite is non-finished
- set nonfinished flag to false if crystallite is not on Track after state update
- in updateState: set onTrack flag to false if encounter NaN
- removed some old debugging outputs and added others

homogenization.f90
- in debugging mode now telling when a cutback happens
2009-08-24 08:16:01 +00:00
Christoph Kords 8ed3ddc03b now with first draft of nonlocal constitutive law
debugging memory leak closed
debugging counters corrected

center of gravity stored in mesh

state updated is now split into a collecting loop and an execution

updateState and updateTemperature fill sequentially separate logicals and evaluate afterwards to converged

added 3x3 transposition function, norm for 3x1 matrix and 33x3 matrix multiplication in math

non-converged crystallite triggers materialpoint cutback (used to respond elastically)

non-converged materialpoint raises terminal illness which in turn renders whole FE increment useless by means of odd stress/stiffness and thus waits for FE cutback
2009-08-11 16:31:57 +00:00
Denny Tjahjanto 360fb069ba List of changes/modifications:
* IO.f90 :: Adding error messages for RGC homogenization
* crystallite.f90 :: Modifying convergent criteria in crystalline_updateState and crystalline_updateTemperature
* material.f90 :: Adding IO_lc in homogenization_type(Name)
* debug.f90 :: Adding debbugging statement and counter for material point loop
* homogenization.f90 :: Adding homogenization_RGC blocks
* homogenization_isostrain.f90 :: Modifying argument of homogenization_isostrain_stateInit
* mpie_cpfem_marc.f90 :: Adding homogenization_RGC include
* numerics.f90 :: Adding numerical parameters for RGC scheme
* math.f90 :: Changing function name: math_permut to math_civita
2009-07-31 12:02:20 +00:00
Philip Eisenlohr f337847f35 quite some changes:
# non-greedy memory allocation
# generation of outputConstitutive to allow for script-based T16 extraction
# exchange of phenomenological by more general phenopowerlaw
# lattice is based on slip and twin families which can be treated as individual entities (switched on/off, separate hardening, etc.)
# nicer debugging output
# changed some error/warning codes
# plus potentially some minor additional brushes here and there
2009-07-22 16:07:19 +00:00
Luc Hantcherli 4aed2ade80 Major Update: all modules are now correctly submitted 2009-07-01 10:55:31 +00:00
Luc Hantcherli a16b8a619d Major update: corrected treatment of temperature 2009-07-01 10:29:35 +00:00
Franz Roters a6ccfe2e44 restructured the repository: renamed trunk into code, moved documentation one directory up, therefore you can now checkout either code or documentation only if you like 2009-06-25 07:17:59 +00:00