Commit Graph

226 Commits

Author SHA1 Message Date
Pratheek Shanthraj 60fec0e8ec added code structure for non-schmid mechanics. work in progress… 2013-01-21 23:11:16 +00:00
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