Commit Graph

196 Commits

Author SHA1 Message Date
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