<< correction for a very stupid mistake. replacing stress P with the absolute value of stress abs(P) during convergence check. it should work upon deep-drawing.
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.
- dipole dislocations with evolution
crystallite.f90:
- collect state uses subdt and subTstar0_v
- in nonlocal modus: set all crystallites to broken if one is not on track anymore after either stress integration or state update
- constitutive_microstructure is now called inside state update and not in integrate_stress anymore
material.config:
- new parameter for nonlocal constitution
CPFEM.f90:
- age Tstar after increment was finished
IO.f90 >>> adding "inRad" instead of using inRad from math.f90 module, since math.f90 module is now below IO.f90.
numerics.f90 >>> now can read the parameter "fixed_seed" from numerics.config. this parameter is used to set a pseudo-random number generator/fixed seeding. default value is 0 (zero), which will give fully random number.
math.f90 >> adding a possibility to fix the seeding (i.e., pseudo random number)
numerics.config >>> add a new parameter: "fixed_seed"
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.
- 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
formerly, if the number of orientations requested was (far) less than the number of nonzero bins in the texture representation, you only got a subset of low phi1 values..! (that is the top corner in Euler space -- Hi Bing ;-) )
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
# 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
The different blocks required for the twinning model are now implemented (I guess correctly...)
Keywords in the material.config are changed. Since the flow rule for twin systems remains under investigation, this part is susceptible to further changes.