Commit Graph

57 Commits

Author SHA1 Message Date
Martin Diehl 738f363263 corrected small issues with PETSc debugging 2013-01-03 16:17:23 +00:00
Martin Diehl 5c0c7121e7 made PETSc silent by removing -snes_view from default options.
introduced PETSc option for debugging that introduces some debugging options into the petsc options and move PETSc initialization from numerics to DAMASK_spectral_utilities
2012-12-15 18:07:49 +00:00
Martin Diehl 5ea0139678 simplified the rate calculation interface in DAMASK_spectral_utilities.f90, corrected bug in rotation parsing and added debug option "rotation" to spectral solver options. This will show the current average stress and deformation additionally in lab coordinate system 2012-11-28 15:04:05 +00:00
Christoph Kords bb033c5fe7 Simplified algorithm of crystallite_integrateStress while preserving (almost) same functionality.
Removed "leapfrogging" (increase of step for next guess, when last guess was ok); Replaced Armijo rule testing for step size by simple check if the residuum got better, since the former virtually did not have any effect; consistently using the 2-norm of the residuum rather than infinity-norm for the convergence check throughout the function
2012-11-06 12:35:45 +00:00
Philip Eisenlohr 05c5ea42d7 prepared loop distributions to hold "over shooters" 2012-10-12 18:00:55 +00:00
Martin Diehl c8b7da432c set debug_level to be protected as it is read-only for other modules 2012-10-02 09:35:39 +00:00
Martin Diehl 55a5112f36 added comments for doxygen documentation 2012-08-25 11:46:36 +00:00
Christoph Kords eae9a34c6b corrected debugging output: extreme values of returned stress and jacobian belong to cpfem debugging, not homogenization 2012-08-14 11:48:43 +00:00
Martin Diehl 5a89c783d4 deallocating already allocated arrays in case of regridding/restarting (i.e. when calling init more than once) 2012-07-31 14:00:15 +00:00
Philip Eisenlohr 4d09ef0648 changed variable name "debug_what" to "debug_level" 2012-07-05 09:54:50 +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
Martin Diehl 44d8282863 corrected reading in of ABAQUS debug modes and made numbering scheme for debugging depending on variables hoping to prevent these errors in debug.f90
Put all (now public) logicals in FEsolving.f90 again into one specification statement
2012-03-21 18:04:52 +00:00
Martin Diehl dbdc7ddfa2 debug.config, debug.f90, DAMASK_abaqus_exp.f, DAMASK_abaqus_std.f: changed to new debug scheme (wasn't working)
lattice.f90, FEsolving.f90: explicitly defined public functions and variables, all others are now private
numerics.f90: changed output format of real numbers, now instead of 0.1eX 1.0e(X-1) is printed to screen
Makefile: now using correct Optimization flags for OPTIMIZATION=AGGRESSIVE
DAMASK_spectral_AL.f90: improved, but still testing. Stress BCs now seem to be handled correctly
2012-03-20 18:01:31 +00:00
Martin Diehl 04d83ec9cd added "-assume byterecl" in Makefile for ifortran to specify with "recl=" the size of the file in bytes instead of 4byte chunk when opening files. (same as in gfortran per default).
no important changes in other files
2012-03-20 12:26:21 +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 d9522bf588 minor changes, substituting implicit type conversions with explicit ones 2012-02-14 12:17:47 +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 f03e7c459c small polishing, exchanged stops in math.f90 with calls to IO_error 2012-02-13 14:08:07 +00:00
Martin Diehl cff66b5cc3 removed implicit type castings 2012-02-10 11:24:53 +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 2259f44cb1 added parameter for debugging of FFTW in spectral method 2012-01-13 15:21:24 +00:00
Philip Eisenlohr 83ff05c8e8 fixed bugs (sorry...) 2012-01-12 15:08:44 +00:00
Philip Eisenlohr 7103a44d45 renamed debug variables, plus additional "beautification".
renamed "logscale" header info to "log scales" in accordance with plural versions of similar variables.
2012-01-12 10:23:05 +00:00
Martin Diehl 5ebeb96e85 made DAMASK to work with gfortran:
-removed to long lines
-restructured f2py modules and merged make_DAMASK2Python into setup processing
-setup_code.py now sets library path in makefile and asks for compile switches for spectral code
-substituted \ in format strings with $

restructured DAMASK_spectral:
-more logical output and structure of code
-better input for spectral debug parameters
2011-12-06 16:58:17 +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
Philip Eisenlohr 8041587a72 changed internal debug verbosity in accord with debug.config listing. 2011-06-06 15:27:35 +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 6ca8942f62 choose correct output format for debug_verbosity: integer instead of logical 2011-04-04 08:38:55 +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
Franz Roters fa323f3f0b removed division by zero from debug_reset(), uses huge() now 2011-03-24 07:38:56 +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 9d7ede7e03 extreme values of stress and jacobian now recorded in CPFEM_general. variable declaration and generation of output moved to debug module. 2011-03-17 13:13:13 +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 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 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 d94236b2d6 Declaration of filename etc. was missing. Fixed now. 2010-09-23 09:13:46 +00:00
Philip Eisenlohr 89136afade debug now has config file, too 2010-09-23 08:01:41 +00:00
Alankar Alankar 7548858ffa Some useful changes in damper for quicker convergence. 2010-09-22 08:54:36 +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
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
Claudio Zambaldi fc3f35cf3b debugger = .false. 2010-04-08 09:30:25 +00:00
Denny Tjahjanto 40b1478dac the latest RGC model + corrections for "element homogeneous" feature 2010-03-24 13:20:12 +00:00
Christoph Kords f4e5d32cde added flag verboseDebugger to debug in order to have more control about debugging statements
set this to true if you want extended debugging info in the output file
2010-03-19 14:14:08 +00:00
Christoph Kords 97db70cf23 constitutive_nonlocal:
- reworked contribution of immobile dislocation density for rate equations
- flux is now calculated on the basis of interpolated velocities and densities at the interface; both incoming and outgoing fluxes are considered, so every material point only changes his own dotState
- dislocation velocity is now globally defined and calculated by subroutine constitutive_nonlocal_kinetics; the subroutine is called inside _LpAndItsTangent as well as _microstructure; therefore, microstructure now needs Tstar_v as additional input; in the future one should perhaps create a subroutine constitutive_kinetics that calls constitutive_nonlocal_kinetics separately, to clearly distinguish between microstructural and kinetic variables 
- better use flux density vector as output variable instead of scalar flux values for each interface
- added output variables internal and external resolved stress

crystallite:
- added flag to force local stiffness calculation in case of nonlocal model
- misorientation angle is explicitly set to zero when no neighbor can be found

debug:
- added flag "selectiveDebugger" that is used when debugging statements should only affect a specific element, ip and grain; these are specified with the new variables debug_e, debug_i and debug_g
- debugger can now be used in its original sense
2010-02-17 13:21:36 +00:00
Christoph Kords d784153e0c constitutive_nonlocal:
- corrected flux term
- multiplication is now aware of dislocation type
- corrected change rate for "dipole size" dupper
- corrected term for dipole dissociation by stress change
- added transmissivity term in fluxes which accounts for misorientation between two neighboring grains (yet hardcoded transmissivity according to misorientation angle)
- added more output variables

constitutive:
-  2 additional variables "previousDotState" and "previousDotState2", which are used to store the previous and second previous dotState (used in crystallite for acceleration/stabilization of state integration)
- timer for dotState now measures the time for calls to constitutive_ collectState (used to reside in crystallite_updateState, which is not critical in terms of calculation time anymore) 

crystallite:
- convergence check for nonlocal elments is now done at end of crystallite loop, not at the beginning; we simple set all elements to not converged if there is at least one nonlocal element that did not converge
- need call to microstructure before first call to collect dotState for dependent states
- stiffness calculation (jacobian): if there are nonlocal elements, we also have to consider changes in our neighborhood's states; so for every perturbed component in a single ip, we have to loop over all elements; since this is extremely time-consuming, we just perturb one component per cycle, starting with the one that changes the most during regular time step.
- updateState gets a damping prefactor for our dotState that helps to improve convergence; prefactor is calculated according to change of dotState

IO:
- additional warning message for unknown crystal symmetry
2009-12-15 08:20:31 +00:00
Philip Eisenlohr 1dcb80753c tidying up code and reversing order in debug timing output 2009-10-22 09:14:17 +00:00