Pratheek Shanthraj
fd94c786f0
moved stiffness tensor calculation to lattice
...
introduced 'isotropic' and 'orthorhombic' lattice types to use corresponding symmetries in stiffness tensor. intended to be used with non-crystal plasticity models (j2, constitutive_none with isotropic, cubic or orthotropic elasticity).
2013-01-21 21:57:26 +00:00
Martin Diehl
093cf92338
remove omp statements during initialization, "line" for reading in from material.config now has a default (empty) value to prevent conditional jump depend on this value
2013-01-08 22:11:59 +00:00
Christoph Kords
f14fd45ce1
new material parameter "egdejog": fraction of annihilated screw dipoles that forms edge jogs
2012-12-23 12:56:15 +00:00
Christoph Kords
03a88d4798
fixed timesyncing for special case of ip that synchronizes its time step, but does not have a neighbor
2012-12-11 13:38:36 +00:00
Christoph Kords
37028455e9
always use the current state for leaving flux calculation when no neighbor is present
2012-12-09 12:24:32 +00:00
Christoph Kords
149c747688
use non-corrected densities for rate check in dotState
2012-12-06 17:14:35 +00:00
Christoph Kords
1f5a30d6f0
corrected typo in random multiplication term
2012-12-06 14:04:18 +00:00
Christoph Kords
20f7053ad3
correction of interaction coefficients due to line tension effect only applies to coefficients 3, 4 and 5
2012-12-04 18:23:46 +00:00
Christoph Kords
9eb89b0050
made random multiplication switchable via material.config
2012-12-03 12:59:38 +00:00
Christoph Kords
62ddbf26df
slightly changed the multiplication term in the nonlocal model for the starvation case
2012-11-29 18:50:25 +00:00
Christoph Kords
f92d34dd22
removed some unused variables
2012-11-29 18:44:00 +00:00
Christoph Kords
29618df550
annihilate only part of the screw dipoles (specified by minimumDipoleHeight), not all; moved annihilation of screws from deltaState back to dotState
2012-11-28 12:09:48 +00:00
Christoph Kords
e10000a338
Introduced an alternative cutback scheme for the nonlocal model, that allows to keep the results of most of the ips that immediately converged, and only do cutbacks in regions where some ips are in big trouble. Only works for nonlocal model and state integrator 2.
2012-11-27 18:36:55 +00:00
Christoph Kords
4195d53d11
message of last commit was incomplete: moved annihilation of screw dipoles from dotstate to deltaState, since it is not a rate
2012-11-17 13:54:22 +00:00
Christoph Kords
467c186f0f
annihilation of screws
2012-11-17 13:50:20 +00:00
Philip Eisenlohr
d9a98417ca
switched element library to geomType based.
...
saves to copy same geometry description for different elements that are essentially similar regarding the IP number but differ in total node count.
introduced quadratic tetrahedron (Marc element 127 -- element 157 might also work, but did not perform well in fully elastic calc so far)
2012-11-15 22:45:20 +00:00
Christoph Kords
5b6baa7c0d
introduced distinction between ip coordinates and cell center coordinates; the former can be globally calculated by subroutine mesh_build_ipCoordinates, the latter locally by the function mesh_cellCenterCoordinates; renamed mesh_ipCenterOfGravity to mesh_ipCordinates
2012-11-06 14:37:13 +00:00
Christoph Kords
55dc286be2
corrected limit for upper stable dipole distance; fixed a bug in the postResults where division by zero might happen
2012-10-29 13:02:01 +00:00
Christoph Kords
f666f8dcf3
added possibility to scale the plastic shearrate by the ratio of mobile to total density; keyword in material.config is "deadZone"
2012-10-29 12:49:28 +00:00
Christoph Kords
0980920b66
In crystallite: for state integrators 2 and 3 the deltaState always has to be done at the beginning of the integration, not at the end; otherwise the stiffness calculation can be completely wrong, when the state is changed after the stress integration for the central solution.
...
Also changed some debugging levels in crystallite and mainly in constitutive_nonlocal
2012-10-22 07:59:35 +00:00
Christoph Kords
3ecaa9e371
modified multiplication term in order to mimic a discrete distribution of dislocation sources; namely, at high resolution, when there is (on average) less than one source per integration point, a random generator decides whether there is a source in the finite volume or not; if there is one, then the multiplication turns independent of the density and depends only on the velocity/volume times a scalar factor; recovers density*velocity/lambda for large finite volumes
2012-10-19 11:40:17 +00:00
Christoph Kords
e4054c116d
fixed problem with gnu compiler: allocation of variables in constitutive_nonlocal_stateInit was not safe when not using any nonlocal constitution
...
put header of debugging output in constitutive_init at the start of the function in order to make debugging easier
2012-10-09 12:34:57 +00:00
Christoph Kords
a84e0529c3
make correction of hardening coefficients thread safe
2012-10-05 16:05:51 +00:00
Christoph Kords
40a2e652e7
introduced material parameter "linetension", which indicates how strong the effect of the line tension on the hardening coefficients is
2012-10-05 14:42:41 +00:00
Christoph Kords
7cc6108a04
hardening coefficients for fcc are density dependent (line tension effect, Devincre, Kubin, Hoc; 2006; Physical analyses of crystal plasticity by DD simulations)
...
fixed bug with thermal annihilation producing negative density in case of very small dipole density and high climb velocity
2012-10-04 18:08:40 +00:00
Christoph Kords
bce8012c89
random distribution of initial dislocation density now really independent of meshsize
2012-10-02 15:26:58 +00:00
Christoph Kords
91b7883c2a
random distribution of initial dislocation density now independent of mesh size
2012-10-02 13:35:34 +00:00
Christoph Kords
1502a71f0c
added possibility to start with an initial random distribution of dislocation segments with specific overall density
2012-10-02 12:57:24 +00:00
Christoph Kords
29023cea3c
minor correction of debugging output
2012-09-05 11:19:46 +00:00
Christoph Kords
f153866030
introduced factor to control edge contribution to multiplication;
...
dislocation density below a single dislocation per IP considered not significant
2012-09-04 16:56:37 +00:00
Christoph Kords
d80b45c1d9
added relativistic correction of velocity (maximum velocity given by parameter in material.config); probability of thermal activation in velocity law not allowed to be greater than one.
...
output of creation rate for edge jogs now for own system, not collinear.
check for negative densities in dotState now uses absoluteToleranceRho instead of significantRho.
2012-08-30 07:33:13 +00:00
Christoph Kords
f3e7b3cec8
added separate output of dipole formation rate for edge and screw
2012-08-27 15:57:31 +00:00
Christoph Kords
9214da4465
added missing labels to list of available outputs
2012-08-27 12:41:57 +00:00
Christoph Kords
3cd5fa90e8
corrected dislocation multiplication term for special case of zero density
2012-08-24 11:36:46 +00:00
Christoph Kords
4f67d04c69
new parameter "significantRho" for nonlocal constitutive law ; density below this value will hardly contribute to dislocation glide or any dislocation reaction ; old parameter "absoluteToleranceRho" is now used only for its initial purpose, namely the absolute tolerance in the state integration
2012-08-23 05:48:21 +00:00
Christoph Kords
222aed9f60
derivative of velocity with respect to resolved stress was flawed; now much better convergence of stress integration for nonlocal constitutive law
2012-08-21 14:40:01 +00:00
Christoph Kords
b2aacf9ca4
rates in constitutive_results are taken directly from last converged step and not calculated again; added output of rates for annihilation of screws and deposition of edge jogs on collinear system
2012-08-16 11:03:22 +00:00
Christoph Kords
bd754dbefd
corrected debug output of evolution rates; added possibility to change the safety factor for the CFL flux condition via the material.config file; updated the example material.config due to recent changes in nonlocal constitutive
2012-08-16 09:13:38 +00:00
Christoph Kords
f5e7d576f1
introduced annihilation of screw dipoles; so far no thermal activation, but immediate annihilation; each annihilated screw dipole leaves behind an edge jog of same length as the dipole height on the collinear system
2012-08-14 12:26:20 +00:00
Christoph Kords
a48d180f8c
allow prefactor for self-diffusion to be equal to zero
2012-08-06 09:03:33 +00:00
Christoph Kords
e8df3678aa
added possibility to assign the transmissivity of grain boundaries a fixed value by use of the keyword "grainboundaryTransmissivity" in the material.config; grain boundaries are identified as interfaces between areas of different material_texture
2012-08-03 14:32:49 +00:00
Christoph Kords
15c5131874
corrected formulation of maximum height of screw dislocation dipoles
2012-07-24 14:50:11 +00:00
Christoph Kords
c4c00f04f4
no dipole formation by stress decrease;
...
dipole dissociation rate proportional to "deltaDipoleLimit / oldDipoleLimit", not "deltaDipoleLimit / newDipoleLimit"
2012-07-24 06:57:37 +00:00
Philip Eisenlohr
7c6fc121fd
condensed error reporting for constitutive_XYZ_init
...
removed erroneous check for structure>3
2012-07-17 17:36:24 +00:00
Philip Eisenlohr
4d09ef0648
changed variable name "debug_what" to "debug_level"
2012-07-05 09:54:50 +00:00
Christoph Kords
145d971d7e
added some debug output
2012-05-30 08:05:36 +00:00
Christoph Kords
5cc73a15a9
small correction in debug output
2012-05-30 07:41:22 +00:00
Christoph Kords
20f203f799
allow minimum stable dipole height equal to zero; ensure that maximum stable dipole height is not smaller than the minimum value
2012-05-20 13:57:35 +00:00
Christoph Kords
5b02d4e8eb
dipole dissociation and formation by change in stress as new mechanism in deltaState; had to add dipole height to state variables, which is however updated by deltaState instead of microstructure; alternatively microstructure had to know the current stress state
2012-05-18 14:35:52 +00:00
Christoph Kords
4da6907648
moved remobilization of dead dislocations from dotState to deltaState
2012-05-18 13:35:44 +00:00
Christoph Kords
a5c1624648
check for invalid mesh type once in constitutive_init and not every time constitutive_nonlocal_dotState is called
2012-05-18 13:15:23 +00:00
Christoph Kords
f6d5efeed3
removed arguments Fe and Fp from collectDeltaState function call
2012-05-17 11:04:22 +00:00
Christoph Kords
a54439e3b5
dotState does not have to be reset to zero. this is a remnant from older versions when the dotState for the nonlocal model used to be updated by the neighboring integration point
2012-05-16 15:35:14 +00:00
Christoph Kords
84d4652a07
all constitutive modules now contain a new function "deltaState", which in the future allows to have an instantaneous and incremental change of the state (additional to the rate based evolution with dotState).
2012-05-16 14:43:26 +00:00
Franz Roters
eb8265b914
fixed potential division by zero error discovered by our American friends
2012-05-08 07:16:00 +00:00
Christoph Kords
5263366615
adding switch in material.config for short range stress correction
2012-03-15 14:58:12 +00:00
Christoph Kords
7330031579
corrected special treatment of periodic images in calculation of stress correction
2012-03-15 10:08:08 +00:00
Franz Roters
70a44fbbdd
constitutive models need to skip new keyword elasticity when reading their arameters
2012-03-15 09:22:24 +00:00
Christoph Kords
9cbbb7cab5
Dead dislocations are treated the same as mobile dislocations for the flux part though they do not contribute to slip. By that the pileup of dead dislocations is able to diminish with time (kinetics are the same as for the glide part; this is not correct but gives valuable results). Also remobilization of dead dislocations at neighbor is taken into account for flux.
2012-03-14 15:32:50 +00:00
Christoph Kords
6bca2150f2
local stress correction of gradient in dead dislocations and neighboring excess density is additive
2012-03-14 15:24:19 +00:00
Christoph Kords
06c93435f2
viscosity term in kinetics law proportional to resolvedstress minus forest term
2012-03-14 15:18:36 +00:00
Christoph Kords
d2652cae47
multiplication only controlled by screws
2012-03-13 14:19:36 +00:00
Franz Roters
c9ed989dad
replaced keyword constitution with plasticity in preparation of upcomming generalized elasticity
2012-03-12 14:09:37 +00:00
Martin Diehl
bd9667bd4b
added new, flexible debugging scheme.
...
now all modules have their own debug specification.
compiles and runs, I hope nothing is broken
did a lot of polishing
2012-03-08 20:25:28 +00:00
Martin Diehl
478a6d110c
mixed things up, did not want to commit constitutive_nonlocal.f90 but rather DAMASK_spectral.f90!!!!
...
did a lot of polishing on constitutive_nonlocal.f90 (mostly checked in at last commit), for changes on DAMASK_spectral.f90 see previous message
2012-02-23 17:20:57 +00:00
Martin Diehl
a98832100f
introduced itmin parameter for spectral code for defining minimum number of cycles
...
removed simplified_algorthim flag because the basic scheme using the polarization field will not be implemented
introduced divergence_correction flag for making divergence criterion resolution-independent (still experimental and not set by default)
corrected output and restart frequency (now modulo on incs of current load case)
2012-02-23 16:43:17 +00:00
Christoph Kords
9bf5b9dc86
dotState=NaN enforces cutback, if evolution rates lead to negative densities
2012-02-22 16:08:22 +00:00
Christoph Kords
97b2240fe9
take absolute dislocation velocities when testing Courant-Friedrichs-Lewy condition
2012-02-21 13:11:47 +00:00
Nan Jia
db06c797cd
store number of outputs for each instance of the constitution in constitutive_[j2/titanmod/...]_Nouput and use this value to loop over all valid outputs when determining the size of the outputs array
2012-02-14 15:19:59 +00:00
Christoph Kords
30c55c3142
added check for unknown keywords again (in agreement with Philip ;-)
...
indeed 'constitution' and '/nonlocal/' are the only keywords which have to be ignored, since they are parsed elsewhere
2012-02-14 09:22:37 +00:00
Philip Eisenlohr
9b73cb3c65
removed parameter check complaining about unknown keyword as default case. there are just too many keywords that do not trigger a variable assignment to cope with them (e.g. /nonlocal/, constitution, etc.)
...
I suggest to kill similar logic from other files if present somewhere...
2012-02-13 23:30:59 +00:00
Christoph Kords
c786336af3
reordered (and partly redistributed) error message identifiers, deleted those which are not in use anymore.
...
all constitutive as well numerics now raises an error, if an unknown keyword is found in the respective config file
2012-02-13 17:41:27 +00:00
Martin Diehl
156ec4582a
polishing, adding _pInt etc. where applicable
...
post_results now handels zero increment different (like FEM, it is always there even if it is not counted)
2012-02-13 14:18:07 +00:00
Christoph Kords
26b4f886ba
whoops, accidentally removed _pInt in the IO_error calls which where previously added by Martin
2012-02-10 07:58:33 +00:00
Christoph Kords
ff53b9754b
somewhat better readable format without as much linebreaks
2012-02-10 07:50:29 +00:00
Martin Diehl
7a23833a39
removed line>132 characters, added _pInt when calling IO_error
2012-02-09 17:28:55 +00:00
Christoph Kords
d62eddc0cd
corrected kinetics law and changed parameters. For solid solution hardening there are 3 parameters: the activation energy, the concentration of obstacles that determines the activation length and meanfreepath, and the obstacle size that determines the activation volume. For the Peierls mechanism there is: the width of doublekinks that determines the activation volume and the Peierls stress for edge and screw.
...
Still testing needed to check whether the current formulation makes sense or not.
2012-02-03 12:50:54 +00:00
Martin Diehl
c5128e94eb
some f2008 standard related correction i didn't check in last time
2012-02-01 20:20:05 +00:00
Martin Diehl
800e291240
made code standard conform to Fortran 2008 (ignoring warning concerning comments beyond character 132). Basically, changing "x" format specifier to "Nx" ("1x") plus removing $ format specifier
...
added compiler switches for gfortran and ifort to check for standard conformity
old gnu compilers <4.4 are not longer supported because they don't provide the c binding for fftw
2012-01-31 19:18:55 +00:00
Martin Diehl
80583fefb5
added compilation_info.f90, to store compilation date,time and compiler info in each file
...
added #include statement at each init() routine
2012-01-31 14:54:49 +00:00
Martin Diehl
eeda357710
N^2 initialization loop (former spectralPictureMode) rewritten in material.f90
...
additional output in DAMASK_spectral_interface.f90
132 character cut off in constitutive_nonlocal.f90
rounding error in math.f90 complex number initialization (1.0_pReal)*2.0_pReal*pi
new $DAMASK_NUM_THREADS warning in numerics.f90 / IO.f90
polishing in DAMASK_spectral.f90
2012-01-30 13:52:41 +00:00
Christoph Kords
1330576a01
added new math function "math_deviatoric33" which returns the deviatoric part of a 3x3 tensor
...
renamed some math functions, so that we have a universal naming scheme: for matrix multiplications use an "x" (e.g. math_mul33x3); don't use the "x" to describe the shape of the tensor that the function is applied to (e.g. math_invert33 instead of math_invert3x3)
2012-01-26 13:50:00 +00:00
Christoph Kords
df931890e0
corrected typos
2012-01-26 12:50:04 +00:00
Christoph Kords
5a658d1b82
dislocation velocity output for each dislocation type (edge+,edge-,screw+,screw-)
...
for fcc constitutive_nonlocal_kinetics is called only once and the result is used for each dislocation type, for all other lattice structures we have one call for each dislocation type
2012-01-26 07:43:36 +00:00
Christoph Kords
e5407894b5
Reworked kinetics. Now there is a universal law which can be used for both fcc and bcc (and probably even hcp). It mainly consists of an athermal forest cutting part , solid solution and peierls as thermally activated processes, and viscous glide. Therefore, lots of new parameters in the material.config. Not sure yet if the values make sense though.
...
Also renamed some of the old parameters.
Unknown constitutive output raises error.
2012-01-25 17:04:37 +00:00
Christoph Kords
8739b9522e
dislocation stress does not add to stress field anymore, but is only available as constitutive output for purposes of postprocessing. instead, we now use a backstress term (which is added to the resolved shear stress) that depends on the gradient of excess density on the same slip system.
2012-01-17 10:26:57 +00:00
Christoph Kords
860594d9a4
forgot to multiply shearrate with timestep in order to get accumulated shear
2011-11-09 10:26:00 +00:00
Christoph Kords
6dc8a4d530
check for LFC only if there is any slip activity at all; also increased safety factor from 1.2 to 1.5
2011-11-09 09:55:39 +00:00
Christoph Kords
7033e84fc7
new outputs "accumulatedshear", "velocity_edge", and "velocity_screw" (the latter two replace the output "dislocationvelocity")
2011-11-09 09:22:52 +00:00
Christoph Kords
8bc39fcd48
immobile density output keeps its sign
2011-11-07 15:46:40 +00:00
Christoph Kords
34adec74e8
corrected wrong indices into state array for velocity
2011-11-07 15:17:58 +00:00
Christoph Kords
7dfb96a3da
constitutive_nonlocal:
...
dislocation velocities are stored in the state, so we actually now have three "parts" of the state, the basic states that are updated by "constitutive_dotState" come first, then the dependent states that are calculated by "constitutive_microstructure" follow, and finally we have a last part reserved for other variables that just use the memory reserved by the state array and are updated somewhere else.
constitutive:
LpAndItsTangent does not need the full state, but only the local state, so changed that at least for the nonlocal constitutive law
2011-11-04 13:12:17 +00:00
Martin Diehl
8ac1891b3c
moved DAMASK_NaN to prec.f90 respectively prec_single.f90 as it is precision dependent
2011-10-20 16:46:11 +00:00
Christoph Kords
7be2701989
* new output variable "internalstress", which gives the internal stress tensor
...
* use "math_invert3x3" instead of "math_inv3x3" for inversion of Fe
* for dislocation stress calculation: first regular case, then special case of dead dislocations in central ip
* "dv_dtau" now given for each dislocation type, so is a (ns,4) array
* deleted unused variables in "_LpAndItsTangent"
* corrected contribution of deads in "_LpAndItsTangent"
* the NaN variables defined in math did not give a proper NaN value, so use 0.0/0.0 again
* neighbors with nonlocal constitution but local properties (i.e. /nonlocal/ flag not set) are also considered for incoming fluxes
2011-09-07 11:30:28 +00:00
Martin Diehl
380a536b45
homogenization_*, constitutive_*, DAMASK_spectral_interface: did some polishing regarding init output
...
makefile: corrected spelling mistake
2011-08-26 13:57:29 +00:00
Christoph Kords
b300cc7faa
ip volume is now based on the determinant of F. "mesh_ipVolume" represents the initial volume and is multiplied with det(F) wherever the current volume is needed. Since this works for all solver types, the "volume" output in crystallite is now also correct for spectral method and abaqus.
2011-08-19 11:18:56 +00:00
Christoph Kords
6f859e99de
* internal stress calculation now considers dead dislocations always at the interface, not at the center of the IP volume; used to merge them together with "normal" dislocations for stress calculation.
...
* dislocation flux is blocked if we encounter a sign change in the resolved shear stress from the central ip to the neighbor
* do not set density to zero if below certain threshold; this creates an artificial sink term
2011-08-02 11:17:45 +00:00
Martin Diehl
3adb7ab382
corrected makefile, now working again without giving standard values explicitly.
...
did some small modification in order to make it possible to compile with gfortran. Changed NaN=0.0/0.0 to bitwise representation (3 different ways)
2011-08-01 10:11:32 +00:00
Christoph Kords
e39445ee7a
dead dislocations now exert a backstress on their "home" MP
2011-05-26 09:35:42 +00:00
Christoph Kords
cac45cff96
ip coordinates are now updated every cycle; this is needed for the nonlocal internal stress fields
...
* Marc: node displacements are added to initial node coordinates (mesh_node0) to get current node positions (mesh_node), then ip coordinates are deduced
* Abaqus: ip coordinates are directly updated, no update of node coordinates!
* Spectral: for the moment no update of either ip or node coordinates! passing only dummy values with initial ip coordinates
2011-05-24 15:57:59 +00:00
Philip Eisenlohr
e5a2d829b0
new substructure with 'include' and 'config' directories
...
renaming of mpie_... to DAMASK for main usersubroutines
extension of element outputs from 5 to 8 digits (FFT!!!)
2011-05-11 16:38:45 +00:00
Franz Roters
7d84a0911e
removed unused variables
2011-04-13 14:16:22 +00:00
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
Christoph Kords
4d0fefd231
security factor of 1.2 for CFL condition in constitutive_nonlocal_dotState
2011-04-06 11:47:24 +00:00
Christoph Kords
4ea1fe436b
added check for CFL condition in constitutive_nonlocal_dotState
2011-04-06 09:07:36 +00:00
Franz Roters
fcdb805225
added copyright text to all f90 (free) format files
2011-04-04 14:09:54 +00:00
Christoph Kords
790dbed1e4
* removed last remnants of old debugger
...
* replaced "dble" intrinsic function by "real" with pReal kind in constitutive_nonlocal.f90
* removed useless line breaks in output of state in CPFEM.f90
2011-04-04 08:34:52 +00:00
Christoph Kords
c36968fc68
distance for periodic images in internal stress calculation was incorrect
2011-03-30 11:57:41 +00:00
Christoph Kords
314ca3fe7f
Internal stress calculation in nonlocal model: instead of integration of excess gradients (->Bayley) we now sum up contributions from adjacent superdislocations within a certain radius R. When periodicity is used, also periodic images are considered in stress evaluation.
2011-03-29 07:34:33 +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
b8b75edd7d
no changes to previous version, just wanted to add some comment to the previous commit:
...
subroutine "constitutive_nonlocal_dotState" only affects the current dotState, so no need to pass the whole array as argument
2011-03-21 15:23:36 +00:00
Christoph Kords
9b1e1e35ea
dotState
2011-03-21 15:18:09 +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
ad4706673b
* removed calculations for dipole formation/dissociation by stress change, since it is not used anyways; also removed associated constitutive outputs from material.config
...
* removed input variables in constitutive_collectDotState and constitutive_postResults that are not needed anymore (because of recent changes in constitutive_nonlocal)
2011-02-25 09:53:20 +00:00
Martin Diehl
cd5407b08b
removed all math functions only for double precision by the more flexible counterpart, e.g. "dsqrt --> sqrt", "dsin --> sin". Should not cause any harm, as long as "implicit none" is used.
...
Now it is possible to compile a single precision spectral solver/crystal plasticity by replacing mesh.f90 and prec.f90 with mesh_single.f90 and prec_single.f90.
For the spectral method, just call "make precision=single" instead of "make". Use "make clean" evertime you switch precision
2011-02-25 09:25:53 +00:00
Christoph Kords
e022810e66
fixed problem in internal stress calculation for periodic neighborhood
2011-02-25 08:10:11 +00:00
Christoph Kords
e49e5e13af
* in flux calculation: take care of special case for single element model
...
* do not overwrite "constitutive_nonlocal_rhoDotFlux" when doing a state perturbation, so we can use it for output
2011-02-24 10:01:41 +00:00
Christoph Kords
96d3682d5e
* new global integer variable "numerics_integrationMode" (1 indicating integration of central solution, 2 indicating integration of perturbed state)
...
* combined "integrator" and "integratorStiffness" in new global variable "numerics_integrator"
2011-02-23 08:29:51 +00:00
Christoph Kords
d835380bc0
* "constitutive_nonlocal_flux" is set to zero in "constitutive_nonlocal_dotState", not in "constitutive_nonlocal_microstructure"
...
* dislocation flux and internal stress calculation now consistent with new definition of slip system lattice according to paper (polarity of screws inverted)
2011-02-23 08:08:06 +00:00
Christoph Kords
b21c153761
restructured constitutive_nonlocal_compatibility and incorporated the "surfaceTransmissivity" in the compatibility calculation
2011-02-16 16:38:18 +00:00
Christoph Kords
24d33bf2ff
* added a new material parameter "surfaceTransmissivity" (default value 1.0) which allows to change the transmissivity of the material surface between 0 and 1
...
* now complaining when encountering an unknown nonlocal parameter in material.config
* use same error ID for all material parameters out of bounds
* symmetric flux calculation in side dotState can now be omitted (because of new treatment of periodicity)
* switching back to "local flux balance" (add leaving and entering fluxes at central MP, don't touch neighbor) instead of "flux distribution" (subtract leaving fluxes from central MP and add them at neighboring MP). This has the advantage that there is almost no need for CRITICAL statements in parallelization, so hopefully this results in some speed up.
2011-02-16 16:35:38 +00:00
Philip Eisenlohr
171f5375f1
shearrate output now with sign (no |abs| as before)
2011-02-11 10:19:41 +00:00
Christoph Kords
803e1a8c05
In order to help preventing further memory leaks all array sections now have an explicit instead of assumed shape, e.g. Fe(1:3,1:3) instead of Fe(:,:).
2011-02-09 13:12:46 +00:00
Christoph Kords
921967c2ba
* found memory leak in nonlocal model! "constitutive_nonlocal_rhoDotFlux" has to have upper index bound of 10 for second dimension, not 8.
...
* need to recalculate dislocation velocity in postResults, otherwise we take values of last perturbed state! So the following outputs were up to now showing the perturbed state: shearrate, dislocation velocity, all density rates!
2011-02-09 08:28:47 +00:00
Christoph Kords
17a6c0e59b
enhanced comment on dislocation kinetics
2011-02-08 12:48:50 +00:00
Christoph Kords
faba13f7fd
* now able to introduce some scatter in the initial single dislocation density (only for nonlocal model!) ; setting the parameter "rhoSglScatter" to a positive value generates a gauss distribution for the dislocation density with standard deviation equal to "rhoSglScatter"
...
* dislocation stress calculation is only done for nonlocal constitution ("/nonlocal/" keyword is present in material.config)
2011-02-04 15:41:32 +00:00
Christoph Kords
b72d75ed05
corrected indices in flux density output
2011-01-28 12:49:58 +00:00
Christoph Kords
05d4d5fef2
* kinetics now according to Mohles; enables solid solution hardening
...
* changed example in material.config accordingly
2011-01-26 10:17:42 +00:00
Christoph Kords
062c6b3d54
* allow zero cutoff radius
...
* added missing error codes
2011-01-12 12:36:48 +00:00
Christoph Kords
d92f992eb7
if nonlocal ip has local neighbor assume perfect transparency of the (perhaps virtual) phase boundary. this is only a quick fix! need to rethink the way constitutive and real boundaries are treated!
2011-01-11 18:00:29 +00:00
Christoph Kords
6a3dd78259
fluxes are disabled when keyword "/nonlocal/" is omitted in the material.config (this is a way to use the constitutive_nonlocal model as a local dislocation based model)
2011-01-11 14:55:36 +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
4439282239
no change to previous version, just forget to mention one important change of the last revision:
...
* fluxes are now again calculated and distributed only! by the originating material point. this means that the central MP might change the dotState of its neighbor. have to see whether locks slow down parallel computation
2010-10-26 13:49:58 +00:00
Christoph Kords
62d06001ea
* corrected compatibility for screws (always positive)
...
* detection of grain boundary in constitutive_nonlocal_microstructure with the help of transmissivity
* enforce positive densities in constitutive_nonlocal_microstructure (needed because dotState does not create cutbacks for negative densities anymore)
* reset single mobile densities below certain threshold to zero (also done in constitutive_nonlocal_microstructure)
* constitutive_nonlocal_kinetics only gets local state variable as input, no need for the entire array here
* dv_dtau is always positive
* multiplication is only active when there is already some initial density of the respective type
2010-10-26 13:42:18 +00:00
Christoph Kords
366d52bd71
* former "relevantRho" and "relevantResistance" is renamed to "atol_rho" and "atol_resistance" and now used as an absolute tolerance for the state residuum. before it was used rather as significant state, so whenever the state dropped below that value it was considered converged. (In dislotwin and titanmod constitutive law there is only one value atol_rho which is used for all the states, though the state array consists not only of densities. We need further parameters here!)
...
* somewhat simplified convergence check for adaptive euler and runge-kutta
2010-10-26 13:16:37 +00:00
Christoph Kords
fffe731447
* had to correct nonlocal slip system compatibility and flux calculation. last update gave wrong results.
2010-10-15 13:19:26 +00:00
Christoph Kords
724960686f
* in nonlocal model: dislocation flux now with valid description also for large angle grain boundaries; transfer of dislocations from one slip system to the other according to new variable "constitutive_nonlocal_compatibility" which depends on the angle between slip plane normals and slip directions and is updated once per cycle in function "crystallite_orientations"
...
* reactivated debugging functionality for "non-standard" integration methods
2010-10-12 13:08:54 +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
Philip Eisenlohr
da53656c9a
added C3D20R (type 9) to list of possible non-local elements (Christoph, should we invent a reasonable error number for this? "-1" may not be optimal...)
2010-08-19 23:00:26 +00:00
Philip Eisenlohr
298cecbfec
corrected syntax errors (long lines, line continuation by \) and logical mistake in mpie_cpfem_marc / abq_std which went unnoticed in ifort. Using SunStudio f90 surfaced those...
2010-08-03 23:47:00 +00:00
Christoph Kords
eb0cc24a8e
no need for material parameter "a" anymore, dislocation stress calculation now works without "core spreading"
2010-06-21 16:01:05 +00:00
Christoph Kords
7d6e52067b
dislocation stress based on dislocation density gradients
2010-06-21 15:58:56 +00:00
Christoph Kords
740db98090
- use upwind differences scheme for fluxes instead of central differences
...
- introduced possibility to "reflect" fluxes at free surfaces in order to have quasi-periodic fluxes
2010-06-09 08:56:00 +00:00
Christoph Kords
71c6179ee5
dislocation stress had wrong sign in some components
2010-06-08 09:34:23 +00:00
Christoph Kords
3ce1882d29
when calculating dislocation stress at grain boundaries, densities are now extrapolated similarly to like it was already done at free surfaces
2010-06-07 16:01:37 +00:00
Christoph Kords
3989cc2688
dislocation stress now considers dislocation segments of length V^(1/3) and ensures non-singular solution for points that are collinear to the dislocation line by means of a core spreading parameter "a". stress is scaled by a reference cutoff radius "r" to avoid mesh-dependent stress values.
...
corrected formula for conversion of anisotropic elastic constants to isotropic Youngs modulus and poissons ratio
2010-06-07 14:32:23 +00:00
Christoph Kords
76b392e12f
dislocation stress calculation in constitutive_nonlocal_microstructure: corrected mapping from lattice to slip system frame and the neighboring dislocation density formulation
2010-05-28 13:12:36 +00:00
Franz Roters
bb73a74325
there was a line break missing so that it did not compile
2010-05-26 17:10:26 +00:00
Christoph Kords
e5f0af638e
fixed calculation of dislocation stress for elements with a single ip and no neighbors; used to get segmentation fault
2010-05-26 09:17:10 +00:00