Commit Graph

330 Commits

Author SHA1 Message Date
Christoph Kords 14594dc9e2 * OpenMP does not like unbounded array subscripts in function calls
* some write statements were still not enclosed by CRITICAL construct, some needed a MASTER construct
2010-11-11 13:14:53 +00:00
Christoph Kords bca951325d * cpfem will now produce a warning if all components of the stiffness tensor are close to zero 2010-11-04 18:18:01 +00:00
Philip Eisenlohr 54748bb6a5 cycleCounter reset was 0 now -1 ==> occurence of jacobian calculation is now correct, i.e. always calc at start of new increment 2010-11-04 18:15:50 +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
Philip Eisenlohr 0dd99cb965 lattice: (re)introduced _symmetryType function to replace unsafe lookup array
numerics: polishing

mpie_cpfem_marc: polishing

..powerlaw: aware of symmetryType function

crystallite: aware of symmetryType function, smaller leapfrog acceleration

IO: new warning 101

CPFEM: range of odd stress is now -1e15...+1e15, H_sym is used for stiffness
2010-11-03 14:58:11 +00:00
Denny Tjahjanto 763c20b302 Introducing the capability to restart jobs that crashed in the middle of sims. At the moment, this feature is exclusive for Marc.
Major changes:

CPFEM.f90 => 
1. Moving the initialization out of CPFEM_general into a separate subroutine, which is directly called by the hypela2 (Beware, the Abaqus version must also be modified in order to adapt with this change).
2. Restore primary state variables in CPFEM_init from binary files when requested (Marc flag: restart read).
3. Writing primary state variables into binary files (Marc flag: restart write).

FEsolving.f90 =>
1. Adding functions to recognize Marc restart flags: read and write and the corresponding restart file (parent job).
2. Change the initial value of cycleCounter = -1 in conjuction with the change made the ping-pong scheme

homogenization_RGC.f90 =>
1. Just syntax polishing.

IO.f90 =>
1. Adding functions/subroutines to open binary files for writing the primary state variables for restart purpose.

mpie_cpfem_marc.f90

1. Modification of the general scheme for collection and calculation in order to accommodate the newly added restart feature.
2010-11-03 14:39:18 +00:00
Christoph Kords 4c20daa00d state loop count was wrong for adaptive euler integration 2010-10-28 12:22:17 +00:00
Martin Diehl 17812c1f9e added raw output, gmsh output is still included 2010-10-27 17:15:49 +00:00
Christoph Kords 9320d48305 in RKCK45 state integration: dotState was not saved in last Runge-Kutta step 2010-10-27 08:48:04 +00:00
Christoph Kords f5f3ef5ecc * have to reset dotState to zero before call to collectDotState (only important for nonlocal calculation)
* in Fixed Point Iteration: update dependent states after state preguess was missing; on the other hand, the first call to constitutive_microstructure was obsolete
2010-10-26 14:04:33 +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
Martin Diehl 26cb618b6d changed calculation to small strain/cauchy stress 2010-10-20 11:27:10 +00:00
Martin Diehl da35eaa8a1 changed spectral algorithm to version proposed by Ricardo 2001 (using tau_field instead of stress_field).
Still using largestrain-formulation
2010-10-20 09:27:47 +00:00
Martin Diehl 3837dad51e fixed bug in mpie_spectral.f90 concerning spectral method (now deltaF hat get the right value)
added mpie_spectral2.f90, a version that should get the new algorithm proposed in 2010. until now, it is the same as mpie_spectral.f90 (large strain formulation by suquet et al) but with c2c, c2c FFT
2010-10-20 08:59:00 +00:00
Christoph Kords e49de75fe3 stiffness calculation now only needs a single function call to the respective integrator method instead of one call per grain (which seems to heavily slow down the computation). also no special treatment for non-local material points anymore. 2010-10-15 14:57:13 +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
Philip Eisenlohr 61f8a5fcbe corrected UpperCase "SolidSolutionStrength" in config file parsing. 2010-10-15 12:59:00 +00:00
Martin Diehl 3c502561ee added matrix multiplication 3333x33 to math.f90
added some parameters for spectral method to numerics.f90 (tolerance)
changed error message concerning spectral method in IO.f90
corrected calculation of stress BC in mpie_spectral.f90
2010-10-13 16:04:44 +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 efd92d9b51 allocation of special state variables for "non-standard integration" was erroneous. used to produce segmentation fault for integration method 4 and 5. 2010-10-12 12:11:24 +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
Martin Diehl 9927cd7adb changed format of resolution. instead of reading exponent of two, now the number given equals directly to the number of FPs. Allows us to use arbitrary number of FPs.
example:
OLD: reading 5 results in 2^5=32 FPs
NEW: reading 33 results in 33 FPs
2010-10-01 10:42:15 +00:00
Alankar Alankar 2cc7bc38d7 Fixed a missing ','. Assigned plane and direction names. 2010-10-01 06:32:44 +00:00
Philip Eisenlohr 1ae252c1ce altered hexagonal slip systems
(needs comparison to former set, which is potentially wrong)
2010-09-30 17:31:19 +00:00
Claudio Zambaldi b85f9b0770 material.config: changed texture of microstructure 1 from 1 to 3, because 1 needs a ODF file which is not in the repository and makes the one_element_model.proc complain. 2010-09-30 12:55:38 +00:00
Philip Eisenlohr a8dfdc6487 added _mul33xx33 double contraction: A_ij * B_ij = scalar 2010-09-30 09:32:49 +00:00
Christoph Kords cb4b4afc88 corrected header for math_qRot 2010-09-30 08:46:58 +00:00
Philip Eisenlohr b259fbd9c6 1) added distribution of leapfrog breaks
2) lattice_symmetryType is now a function (former lookup array was buggy)
3) stricter check of state var values (>0!) and memory deallocation done
2010-09-30 07:31:53 +00:00
Alankar Alankar e562df35a9 Added more state dependent variables in post results. 2010-09-29 06:35:08 +00:00
Martin Diehl 5a51082977 polishing, changed calculation of stress BC.
prevent updating of gamma hat in case of perfect plasticity
2010-09-24 13:27:53 +00:00
Alankar Alankar d94236b2d6 Declaration of filename etc. was missing. Fixed now. 2010-09-23 09:13:46 +00:00
Philip Eisenlohr 83a921eec2 crystallite: polishing
rest: added "$ID" and line ending settings...
2010-09-23 08:05:50 +00:00
Philip Eisenlohr a467fb4ae3 forgot "$ID" and setting line endings... 2010-09-23 08:03:00 +00:00
Philip Eisenlohr 89136afade debug now has config file, too 2010-09-23 08:01:41 +00:00
Martin Diehl 6ea8623f65 added functions math_mul33x3_complex math_Plain99to3333 to math.f90.
mpie_spectral.f90 uses both functions
math_Plain99to3333 is used for inversion of c0
math_mul33x3_complex is used for equilibrium check in fourier space
also did some cleaning up on mpie_spectral.f90
2010-09-22 12:04:43 +00:00
Alankar Alankar 80618c9814 Cleaned-up, rearranged state variables 2010-09-22 09:00:40 +00:00
Alankar Alankar 7548858ffa Some useful changes in damper for quicker convergence. 2010-09-22 08:54:36 +00:00
Martin Diehl 604992a9e1 fixes bugs in screen output, changed gmsh output, now the deformed mesh is written out 2010-09-22 08:51:34 +00:00
Martin Diehl 6920d8d939 cleaning up, added new output to gmsh and to screen, prepared calculation of deformed mesh
new convergence criteria: divergence of stressfield (in fourier space)
2010-09-21 15:38:25 +00:00
Alankar Alankar 8488cafe3a now consistent with numerics.f90 values 2010-09-21 14:37:52 +00:00
Alankar Alankar 18c86ca0b1 Updated corresponding files for titanmod constitutive 2010-09-13 09:29:03 +00:00
Philip Eisenlohr 9a20f742ea leaner memory requirement to store states and their rates when calculating the crystallite stiffness 2010-09-13 09:13:25 +00:00
Martin Diehl 1693bfca47 changed calculation of defgrad from cauchy-stress to pk-stress, now working in large-strain-formulation.
output of msh-file changed to deformed configuration, removed output of defgrad as a field
2010-09-07 16:37:55 +00:00
Alankar Alankar 3c5f38643d Brushed up accountability of twinning to Lp 2010-09-07 14:44:37 +00:00
Christoph Kords 7d4c7f7fa7 corrected bug in debug: stressloop info was erroneous
mesh init now showing much more ip statistics in verbose mode
2010-09-07 09:06:02 +00:00
Philip Eisenlohr a3c92061f9 1) terminallyIll was reset before FE did cutback --> useless extra calculations of same problem over and over...
2) local stiffness calculation is now standard for non-local grains
3) stressLoopDistribution discriminates between (a) central solution and (b) stiffness perturbation
4) debugger is switched on as standard... (but verboseDebugger not!)
2010-09-06 16:06:41 +00:00
Martin Diehl 00922705eb now using current average stiffness for reference material stiffness 2010-09-06 10:00:59 +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
Alankar Alankar 4f29e8c2fe Introduced twinning. Twinning based on accumulated shear on twin systems. No slip-twin interactions yet. 2010-09-01 10:07:52 +00:00
Martin Diehl a5c228fd02 changed back transform to complex-to-real, removed redundant variables, reduced size of arrays where possible 2010-09-01 08:05:11 +00:00
Martin Diehl 85febf0803 added fftw3 as fft(library will not versioned, should be in a linkable folder) , did some corrections on the code, splitted main file up (allows use of makefile), added makefile
changes on mpie_spectral.f90:
new structure, changed variable names, now using defgrad instead of disgrad, cleaned up, removed augmented Lagrange.
ToDo: Implement Augmented Lagrange again (but then a working version), implement Large strain, think about complex-to real-transform backwards, try to implement MP-support
2010-08-27 16:39:38 +00:00
Christoph Kords 05568ef73b calculation of state damper was erroneous for use with nonlocal and other constitution at the same time 2010-08-26 12:54:31 +00:00
Christoph Kords 197d7ea8d9 rearranged output statements in crystallite init for better readability in output file 2010-08-26 09:52:40 +00:00
Alankar Alankar ec4269bdd8 Added 'dislocation-type' dependent interactions. Ideal for hexagonal and BCC structures. 2010-08-23 11:36:51 +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 c352146fe6 exchanged forall (warning causers) to nested do loops
deleted (currently unused) symmetrization of H tensor in CPFEM.f90 --> Denny pls advise?
2010-08-19 21:35:38 +00:00
Franz Roters f78b07448f some modifications in line with Davids analytical model
input some additional variables via material.config
2010-08-17 14:23:55 +00:00
Philip Eisenlohr bb9899e7de 1) added element type 57 (C3D20R) reduced quadratic hexahedral
2) need discussion about the present omission of the FE_nodesAtIP for type 8 --> added comment into source code
2010-08-16 22:53:24 +00:00
Alankar Alankar 9f071c3e01 Added kink-pair pre-factor for screw dislocation mobilities on non-basal slip systems in hex 2010-08-06 15:53:45 +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
Alankar Alankar 60decea760 Calibration (Prismatic slip) of the new dislocation density based CPFE model for single crystal alpha-Ti (Titanmod). Formulated edge and screw dislocations mobilities in presence of kink pairs. Updated comments. The model shows the plateau in stress evolution in prismatic orientation which is observed in experiments. 2010-07-15 07:16:15 +00:00
Martin Diehl 49926d5d66 F77 --> F90 polishing/condensation as far as possible.
next step is change of Re/Im FFT to Re only...
2010-07-13 15:29:26 +00:00
Philip Eisenlohr 4d110126da adopted improvements done by Arun Prakash.
mesh:
elemType identification based on lower case
Abaqus now reports more errors

IO:
new function to inquire whether inputfile contains "parts"
new function to assemble multiply included inputfile into a flat one
awareness of range generation in element numbers
error reporting
2010-07-13 10:26:07 +00:00
Alankar Alankar eb7830dc8f New Titanium CPFE model based on dislocation density. Running but calibration and changes needed. 2010-07-13 08:19:25 +00:00
Martin Diehl 397db06fb3 cpfe_general now returns also Kirchhoff-stress P and dPdF
added dummy variables P and dPdF to mpie_cpfe_* to be able to call cpfem_general correctly
2010-07-07 09:58:18 +00:00
Martin Diehl 80016f8429 added P and dPdF for the call to cpfem_general, made some comments in the code, aligned some loops 2010-07-07 09:10:54 +00:00
Martin Diehl f9834bc612 changed types of integers and reals in fourier transform, changed some variables and cleaned up code to make it easier to understand 2010-07-05 16:01:36 +00:00
Ricardo Lebensohn c3e222dbbd errs added etc. 2010-07-05 11:33:48 +00:00
Philip Eisenlohr 4f76eada31 started suggestions for F77 --> F90 style
xkdyad useful..?

looking for error calculation (Ricardo to rescue here)
2010-07-02 17:15:53 +00:00
Martin Diehl d6ba9d54b6 changed declaration of two variables from real to int, spectral method is now working.
started to commend Ricardos code, layoutet loops and removed some redundant variables.
until now, no error calculation is done. at the moment calculations are in an infinite loop
2010-07-02 14:10:36 +00:00
Martin Diehl 661bb97800 corrected some problems in building mesh 2010-07-01 15:20:39 +00:00
Martin Diehl 2ec39c936c added first version of spectral method, changed corrected functions to get correct path to files 2010-07-01 15:20:06 +00:00
Martin Diehl c3e51e5330 added functions to read out resolution, dimension and homogenization from mesh file 2010-06-25 11:31:05 +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 6d874e2c1f nonlocal stiffness calculation:
rather perturb all components at once (and optionally decrease the frequency of the Jacobian update with the iJaco parameter) than perturbing only a single component per cycle
2010-06-17 06:32:56 +00:00
Philip Eisenlohr 1c72439350 first shot at init with CPFEM_general
better would be to manually read the mesh resolution, set up Spectral solution strategy and call CPFEM_general just during BVP solution.
2010-06-10 15:32:06 +00:00
Philip Eisenlohr 8ea52ac495 mpie_spectral now can read loadcase data
adapted error codes
2010-06-10 14:51:10 +00:00
Martin Diehl 386ca7ebc3 added some basic I/O functions to mpie_spectral.f90 2010-06-10 08:50:04 +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
Philip Eisenlohr 11b98fbfa6 added ID functionality and correct line endings 2010-06-08 10:10:57 +00:00
Philip Eisenlohr 82687d31c8 first shot at mpie_spectral wrapper 2010-06-08 10:08:15 +00:00
Philip Eisenlohr 7e78932976 renamed "mpie_cpfem_init" subroutine within mpie_interface module to more general name "mpie_interface_init" 2010-06-08 09:35:13 +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
Franz Roters 5283ba5546 if it is pReal it should be 1.0 not just 1 2010-05-31 07:12:45 +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
Denny Tjahjanto 9932c90c73 restoring the crystallite.f90, IO.f90 and material.f90 to the version 575. the version 576 of these files contain some uncleared debugging statements. 2010-05-26 16:34:44 +00:00
Denny Tjahjanto d114a600c3 fixed some errors in QuaternionToEuler, RToQuaternion to get the correct texture representation in the output. 2010-05-26 15:52:54 +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
Christoph Kords 0c5bc83469 in nonlocal_microstructure: at the model surface the excess density is now extrapolated from opposite neighbor instead of assuming zero density; this results in better modeling of the dislocation stress at the surface
restructured nonlocal_dotstate, to be able to easily switch on and off particular effects in the microstructure evolution
nonlocal_dotstate now enforces a cutback when single density runs the risk of becoming negative; in the case of a state already below the relevantState dotState is set to zero
introduced two new output variables: rho_dot_edge and rho_dot_screw
2010-05-21 08:51:15 +00:00
Christoph Kords dba4ae7ef1 new numerics parameter "defgradTolerance" replaces "relevantStrain" in cpfem, since "relevantStrain" is also used in crystallite but in a different context.
"defgradTolerance" gets the same standard value as "relevantStrain" so calculations should be consistent with older ones
2010-05-20 14:55:11 +00:00
Christoph Kords 3a23dc4bbd first call to hypela2 in inc 0 is done with computation mode 2 (=plain calc), but since rev. 539 the second call was done with computation mode 6 (=only return values) instead of 2. This doesnt work, because computation mode 2 might calculate stress and tangent for all materialpoints, but the mapping from lattice to current configuration is only done for the element/IP that triggers the call.
So switched back to the former order of calls which also works for marc2010:

el 1 IP 1		|	el 1 IP 2
			|
inc mode lovl	|	inc mode lovl
------------------	|	------------------
0       2       6	|	0	2	6
1       6	4	|	1	6	4
1	4	6	|	1	3	6
1	6	4	|	1	6	4
1	1	6	|	1	2	6

Still to be checked:
according to Franz the lovl order could be different in contact analysis (e.g. starting with lovl 4 instead of 6)
2010-05-20 09:14:59 +00:00
Christoph Kords 51da3b6242 sorry, in rev 568 some variables were not declared in crystallite_postResults 2010-05-18 12:36:09 +00:00
Christoph Kords 472684c30e make element type 8 (= hex8 reduced integration) available for nonlocal constitutive law 2010-05-18 08:13:23 +00:00
Christoph Kords 19b6fae88b added a missing exclamation mark in front of an $OMP directive 2010-05-18 08:07:55 +00:00