Commit Graph

147 Commits

Author SHA1 Message Date
Martin Diehl 3e521e32a6 indroduced 3 more flags for fine control of spectral algorithm 2012-01-25 08:56:46 +00:00
Martin Diehl 3a22bf7e27 changed fftw from legacy fortran to new (2003) fortran (calling c routines directly)
renamed "steps" consequently to "incs"
moved kdtree2 to math.f90, put original source to private folder
2012-01-13 16:18:16 +00:00
Martin Diehl ace6851389 moved all routines from postprocessingMath to math.90, renamed the module to DAMASK, changed scripts and interfaces accordingly.
polished math.f90 (mainly added _pInt/_pReal and intent(in/out))
curl_fft is still a dummy function
2011-12-01 12:01:13 +00:00
Martin Diehl 566f16b6e9 implemented calculation of divergence in real space, polished spectral debugging 2011-11-21 18:12:40 +00:00
Martin Diehl 5ef73e164a restructured algorithm: moved into loop to reallocate fields and replan FFTW in case resolution changes during runtime ==> regridding
introduced parameters for selective debugging of spectral code and partly introduced the advanced divergence calculation again which is controlled by debug.config
added switch in numerics to control divergence behavior (uncorrected and corrected by phenomenological factor)
added precision directive to all values I found
2011-11-15 17:54:18 +00:00
Martin Diehl ee7022d8cf correctet random seed generation to work with gfortran. 2011-11-04 10:29:35 +00:00
Martin Diehl 15c356c3a7 some small improvements regarding the rotation of the loadcase frame 2011-10-25 13:38:24 +00:00
Martin Diehl c13aa2a829 first try of implementing a rotation of the loadcase coordinate system. Seems to work so far for one loadcase and homogeneous materials. 2011-10-24 18:26:34 +00:00
Martin Diehl a8a53ee525 added two parameters to control behavior of FFTW, timelimit is not working at the moment
remove fftw3.f as it is not needed anymore
!incremental update, wait for commit of damask_spectral.f90 before checking out
2011-10-18 09:16:18 +00:00
Philip Eisenlohr c7c541f393 corrected typos and such 2011-09-13 15:57:58 +00:00
Martin Diehl 4fb1cb8f87 merged calcmodes, i.e. equilibrium and fulfilling of stress BC is done in one step,
made convergence independent of size and resolution,
polishing output in DAMASK_spectral.f90
added function to compute eigenvalues without eigenvectors and function to convert a 3x3 logical to a 9 vector in math.f90
removed obsolete variable in numerics.f90
2011-08-26 14:06:37 +00:00
Onur Guevenc 907965272b added option to build DAMASK_spectral without openMP (make OPENMP=OFF)
fixed bug in bc_temperature assignment that was hitting memory.
Temperature is taken from the first loadcase and evolves from there in an adiabatic fashion for the moment. I.e. T-specifications from later loadcases are ignored...
2011-08-03 17:57:28 +00:00
Franz Roters aa714a3d84 some textconstants were wider than specified in the format string, this might have caused Abaqus to crash due to an illegal memory reference (signal 11) 2011-07-29 14:54:26 +00:00
Martin Diehl 72d20875de added some switches and variables to the makefile to make it more flexible
DAMASK_spectral.f90 is a "debug version" with a number of different criteria to determine divergence. will be removed later on.
2011-07-25 16:30:21 +00:00
Martin Diehl 8153cd50b4 added spectral numeric parameters to numerics.config, changed values for spectral numeric parameters in numerics.f90 to more suitable values for new method for determination of divergence in Fourier space 2011-07-11 14:28:56 +00:00
Franz Roters 2418dfe96d changed MPIE_NUM_THREADS to DAMASK_NUM_THREADS 2011-05-28 09:42:25 +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
Franz Roters fcdb805225 added copyright text to all f90 (free) format files 2011-04-04 14:09:54 +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 430966eb20 sorry, forgot to commit the numerics.f90, too 2011-02-23 12:30:52 +00:00
Martin Diehl 8dd1a694a3 extended IO to cope with different name for solverJob and Model
polishing, added error codes
added FFTW library files
2011-02-21 14:37:38 +00:00
Martin Diehl 7a7ca1aab7 mpie_spectral and mpie_interface: changed workingdir from pathToLoadFile to pathToGeomFile
mpie_spectral and numerics: added switch to prevent pre calculation of gamma_hat. slower, but saves memory
3Dvisualize: started to add support for gmsh (not fully working yet)
reconstruct: new version of f2py/Fortran subroutines for output of results from spectral method
2011-02-07 14:35:42 +00:00
Martin Diehl fec2c14a4e removed hard-coded tolerances from mpie_spectral and put them to numerics/IO
removed storage of full cauchy stres field from mpie_spectral.f90, only average is stored now
added cauchy stress and von mises equivalent calculation to spectral post.
2011-01-31 17:07:42 +00:00
Franz Roters 096a4803b0 some polishing concerning openMP initialization
number of threads is now written to *.out file
2010-12-02 11:04:29 +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
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 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
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
Denny Tjahjanto 9026cc4016 again corrections. but this version must work. 2010-03-24 16:23:21 +00:00
Denny Tjahjanto 40b1478dac the latest RGC model + corrections for "element homogeneous" feature 2010-03-24 13:20:12 +00:00
Philip Eisenlohr 8c8ed34356 reworked crystallite part to allow for flexible user output
--> new "crystallite" part in config file
--> new "crystallite" option for microstructures
--> new output file "...job.outputCrystallite" to be used in conjunction with marc_addUserOutput for meaningful naming of User Defined Vars.
2010-02-25 17:39:11 +00:00
Denny Tjahjanto 3ab5cdc770 Additional feature to the RGC scheme: The volumetric consistency constraint. This is implemented by penalizing any volumetric discrepancy which occurs due to severe relaxation. The penalty for volume inconsistency is described using a power-law model. The setting for this function can be done in the numerics.config via three new parameters, i.e., maxvoldiscrepancy_RGC, voldiscrepancymod_RGC and discrepancypower_RGC. For monintoring, an extra output variable in prescribed in the material.config in the RGC section, namely "(output) volumediscrepancy".
IO.f90 and numerics.f90 has been modified accordingly to accommodate these changes
2009-12-16 16:20:53 +00:00
Denny Tjahjanto 59d22d47b2 introduction of a possibility to have homogeneous element (all ips in one element are identical, sort of reduced integration)
and bugs-fixing in crystallite.f90, homogenization_RGC.f90, numerics.f90.
2009-11-24 15:00:25 +00:00
Denny Tjahjanto 6702cb3baa Introduction of a numerical viscosity into the RGC scheme to improve the convergent behavior and the numerical stability of the scheme (see: homogenization_RGC.f90). These changes have been incorporated in all related subroutines (homogenization.f90, IO.f90, numerics.config and numerics.f90). 2009-11-17 13:42:38 +00:00
Denny Tjahjanto cb88019aa6 introduced a flexibility in cut-backing scheme in homogenization.f90 and in crystallite.f90:
(1) subStepSizeHomog and subStepSizeCryst := size of substep when cut-back is applied (initially was hard-coded).
(2) stepIncreaseHomog and stepIncreaseCryst := step increase when calculation for substep converge (was also hardcoded).

introduced a possibility to choose different finite difference scheme, i.e., forward-, backward- and central-difference, for computing grain numerical tangent. note that central-difference scheme will slow down the computation significantly. please use it only if necessary.

parameters to set these new features have been included in numerics.f90 and numerics.config, whereas corresponding error messages have been introduced in the IO.f90
2009-11-10 13:36:27 +00:00
Denny Tjahjanto 2068346f6d just small changes in the 'default' value of RGC numerical parameters. 2009-10-30 09:54:52 +00:00
Christoph Kords c766ba2e3a minimum substepping size in homogenization and crystallite is now controlled by two independent parameters subStepMinHomog and subStepMinCryst respectively.
deleted flush statements where they are not needed, since they seriously slow down computation.
2009-10-26 16:43:43 +00:00
Philip Eisenlohr a94e551c5f absolute tolerance was just fine -- residuum is in Lp not in stress. Hence, unit is strain and not Pa... 2009-10-19 12:53:56 +00:00
Philip Eisenlohr 5a5d461a30 changed abs tolerance in stress loop to 1 Pa (from 1e-8 Pa ..?) 2009-10-19 12:44:20 +00:00
Franz Roters 2029b23f98 added version information to all files
do NOT edit text like this:
$Id: constitutive_phenopowerlaw.f90 406 2009-08-31 14:13:10Z MPIE\f.roters $
2009-08-31 15:09:15 +00:00
Denny Tjahjanto 644265381e mpie_cpfem_marc.f90 >>> changing the compilation sequence of modules: numerics.f90 and IO.f90 move up, while math.f90 down.
IO.f90 >>> adding "inRad" instead of using inRad from math.f90 module, since math.f90 module is now below IO.f90.

numerics.f90 >>> now can read the parameter "fixed_seed" from numerics.config. this parameter is used to set a pseudo-random number generator/fixed seeding. default value is 0 (zero), which will give fully random number.

math.f90 >> adding a possibility to fix the seeding (i.e., pseudo random number)

numerics.config >>> add a new parameter: "fixed_seed"
2009-08-27 15:30:40 +00:00
Christoph Kords 8ed3ddc03b now with first draft of nonlocal constitutive law
debugging memory leak closed
debugging counters corrected

center of gravity stored in mesh

state updated is now split into a collecting loop and an execution

updateState and updateTemperature fill sequentially separate logicals and evaluate afterwards to converged

added 3x3 transposition function, norm for 3x1 matrix and 33x3 matrix multiplication in math

non-converged crystallite triggers materialpoint cutback (used to respond elastically)

non-converged materialpoint raises terminal illness which in turn renders whole FE increment useless by means of odd stress/stiffness and thus waits for FE cutback
2009-08-11 16:31:57 +00:00
Denny Tjahjanto 360fb069ba List of changes/modifications:
* IO.f90 :: Adding error messages for RGC homogenization
* crystallite.f90 :: Modifying convergent criteria in crystalline_updateState and crystalline_updateTemperature
* material.f90 :: Adding IO_lc in homogenization_type(Name)
* debug.f90 :: Adding debbugging statement and counter for material point loop
* homogenization.f90 :: Adding homogenization_RGC blocks
* homogenization_isostrain.f90 :: Modifying argument of homogenization_isostrain_stateInit
* mpie_cpfem_marc.f90 :: Adding homogenization_RGC include
* numerics.f90 :: Adding numerical parameters for RGC scheme
* math.f90 :: Changing function name: math_permut to math_civita
2009-07-31 12:02:20 +00:00
Philip Eisenlohr f337847f35 quite some changes:
# non-greedy memory allocation
# generation of outputConstitutive to allow for script-based T16 extraction
# exchange of phenomenological by more general phenopowerlaw
# lattice is based on slip and twin families which can be treated as individual entities (switched on/off, separate hardening, etc.)
# nicer debugging output
# changed some error/warning codes
# plus potentially some minor additional brushes here and there
2009-07-22 16:07:19 +00:00
Christoph Kords fe2f3e4d36 - added sanity check for temperature tolerance
- added temperature tolerance in numerics.config
2009-07-02 16:37:48 +00:00
Luc Hantcherli 4aed2ade80 Major Update: all modules are now correctly submitted 2009-07-01 10:55:31 +00:00
Franz Roters a6ccfe2e44 restructured the repository: renamed trunk into code, moved documentation one directory up, therefore you can now checkout either code or documentation only if you like 2009-06-25 07:17:59 +00:00