Commit Graph

302 Commits

Author SHA1 Message Date
Luc Hantcherli cc7e13d351 New update of constitutive_dislo.f60 considering the changes in mesh.f90 (see map_ElemType)
Parameters assignation, hardening matrices and constitutive equations are PROPERLY implemented (tested)
Comparison to my own old subroutine: on going
2008-03-25 14:19:22 +00:00
Philip Eisenlohr 7faf4093a5 reflect change of mesh_element(2,e) in mesh.f90
-change of  line, and those below, will be ignored--

M    constitutive_pheno.f90
2008-03-25 13:59:22 +00:00
Philip Eisenlohr 3640a48095 changed element type mapping to be performed right after input file
parsing. mesh_element(2,e) now contains INTERNAL type index -- no
subsequent mapping necessary anymore!
2008-03-25 12:52:27 +00:00
Luc Hantcherli 6d721dc16c Modifications of cpfem_marc2005r3 according the ones in cpfem_marc2007r1 2008-03-14 21:56:46 +00:00
Philip Eisenlohr 1267ce78b6 CPFEM_general now independed of the wrapper code (UMAT, hypela2, etc.)
renamed CPFEM_stressIP to CPFEM_MaterialPoint
renamed CPFEM_stressCrystallite to CPFEM_Crystallite

introduced new global variables to keep track of FE state within module
FEsolving
2008-03-14 21:32:57 +00:00
Philip Eisenlohr 7975d62586 CPFEM_general now independed of the wrapper code (UMAT, hypela2, etc.)
renamed CPFEM_stressIP to CPFEM_MaterialPoint
renamed CPFEM_stressCrystallite to CPFEM_Crystallite

introduced new global variables to keep track of FE state within module
FEsolving
2008-03-14 21:29:31 +00:00
Luc Hantcherli 0a08d9eff0 Corrected errors from the last release of constitutive_dislo
Changed parameter designation in mattex file
2008-03-14 16:23:08 +00:00
Denny Tjahjanto 6950eee59b altered stress and strain "language" to first PK and deformation gradient.
plot_results are now part of the crystallite result and not explicitly called from the homogenization layer.
2008-03-14 14:19:10 +00:00
Franz Roters 6f06133b90 removed some unused variables 2008-03-14 08:23:43 +00:00
Denny Tjahjanto 778cbcd3ca changed file read formats from explicit types to more general (and not
harmful) '*'
2008-03-12 13:53:00 +00:00
Philip Eisenlohr 5641cfd477 changed precision assignment to intrinsic (and standardized)
"selected_*_kind"
2008-03-07 15:21:46 +00:00
Philip Eisenlohr c74e071f5e updated constitutive_xxx to reflect new 9x9 dLp_dTstar - used to be 3x3x3x3 2008-02-21 12:50:37 +00:00
Philip Eisenlohr 9c1e8a7944 added acceleration capability after time-step cut backing 2008-02-21 10:33:34 +00:00
Philip Eisenlohr 9707fd0f8f full update, i.e. my development snapshot 2008-02-19 12:58:46 +00:00
Philip Eisenlohr f4edf4bd0c 2007
shortened stress_recovery = ...
added (crucial) deMandeling for return values of CPFEM_general

2005
matched to 2007 version
2008-02-18 18:49:06 +00:00
Philip Eisenlohr 2b567ad20d CPFEM
changed consistent tangent scheme to D.Tjahjanto Diss version
fixed nasty bug in decision when to calculate new values (CPFEM_general)

prec
precision values should now be on safe side.
2008-02-18 18:11:24 +00:00
Denny Tjahjanto 199c65cdba changed pert_e to new perturbation value pert_Fg 2008-02-18 10:46:18 +00:00
Denny Tjahjanto 1106bb27eb introduced logical "debugger" 2008-02-18 10:45:46 +00:00
Denny Tjahjanto e07d38fdec ooops. missed nInner and nOuter as loop counters... 2008-02-18 10:41:37 +00:00
Denny Tjahjanto 9c9cdeb58b corrected nStress and nState to reflect more general nInner and nOuter (now vompatible with changes in prec.f90) 2008-02-18 10:39:39 +00:00
Philip Eisenlohr cfaa0e696d exchanged TINY (from prec) with intrinsic "tiny" function (Fortran90) 2008-02-15 12:42:27 +00:00
Philip Eisenlohr a41a4a75ef CPFEM:
time integration scheme changed to start from guessing of Lp.
Newton-Raphson algorithm now accelerates as long as residuum improves.

IO:
added error 650 for polar decomposition problems

prec:
some cleanup. Introduced "relevantStrain" for convergence checking in CPFEM
2008-02-15 10:04:49 +00:00
Franz Roters f39c68dded CPFEM_stressCrystallite must be called with t not dt in CPFEM_stressIP 2008-02-08 08:25:19 +00:00
Hongmei Li 6a3a9e8f98 Added more detailed reporting 2008-01-11 18:32:02 +00:00
Luc Hantcherli 720d8da82b Corrected syntax 2008-01-10 19:00:45 +00:00
Luc Hantcherli b8b171c95b Introduce debug module, contains distributions of nCutback, nStressLoop, and nStateLoop 2008-01-10 18:53:57 +00:00
Luc Hantcherli 3a7ec38a3d Delete unused physical constants from pheno
Rename Boltzmann Constant Kb->kB
2008-01-10 18:51:58 +00:00
Philip Eisenlohr 1233d01cd5 mesh_maxNsharedElems is now correct. Added check for multiple identical nodes in an element, e.g. triangular quad-element and the like. 2008-01-10 17:12:33 +00:00
Luc Hantcherli fe70a82d6d !!!!! IMPORTANT !!!!!
All subroutines were committed at once:
- constitutive_pheno works
- constitutive_dislo without twinning also works

This release should serve as reference
2007-12-14 13:36:04 +00:00
Luc Hantcherli 3ef451824c just a test 2007-12-14 13:28:41 +00:00
Luc Hantcherli 90195fe1c8 Commit dislo 2007-12-11 14:30:21 +00:00
Luc Hantcherli ab0bde576e Commit of IO 2007-12-11 14:23:33 +00:00
Luc Hantcherli 32fc32865f Commit of mesh 2007-12-11 14:23:21 +00:00
Luc Hantcherli 08a1c38c73 Finalizing the implementation of deformation twinning in constitutive_dislo.f90
Assume to be ready to use
2007-12-10 12:55:43 +00:00
Luc Hantcherli d0f6c81d66 constitutive_Microstructure() computes now twin "plop" volumes from the given microstructure.
Mattex.dat has 2 parameters for deformation twinning:
- average grain size
- average twin stack thickness
2007-12-07 15:12:43 +00:00
Luc Hantcherli 44d6235777 Constitutive_dislo.f90 contains now a modified version of HomogenisedC that accounts for twin reoriented regions.
ONLY constitutive_dislo was changed, NOT constitutive.pheno
2007-12-07 14:17:42 +00:00
Luc Hantcherli b69aa2b112 Construction of the elasticity matrices for rotated/twin regions.
Definition of constitutive_Ntwin and constitutive_MaxNtwin
2007-12-07 13:59:15 +00:00
Luc Hantcherli e18f304c5a Crystal.f90 contains now the twin systems (at least for fcc, not implemented for bcc and hcp).
Schmid and transformations matrices for twin systemss are defined and constructed. Twin systems are specified using the type of variables as slip systems:
"MaxNTwin", "MaxMaxNtwin" ...
2007-12-07 12:36:17 +00:00
Luc Hantcherli f63f6949cc Corrected undefined "state" in HomogenisedC
Added "forall" loops in C construction
2007-12-07 10:54:19 +00:00
Luc Hantcherli d615406722 Corrected HomogenisedC:
1- No dependence on material volume fractions!!!
2- Can now depend on state of microstructure

changed some loops from Nstatevars to Nslip
2007-12-07 10:37:06 +00:00
Luc Hantcherli 975c113ae8 Homogenised C per grain can now depend on microstructure (important for deformation twinning) 2007-12-07 10:34:21 +00:00
Luc Hantcherli 3c0d51542e Changed to SI conformity. Mattex file changed bg->burgers 2007-11-15 17:04:30 +00:00
Philip Eisenlohr ad3ccf22c2 clarified tolerances in prec (abs vs rel)
all units conform to SI now !! (especially MPa --> Pa)

CONSEQUENCE: mattex files need to respect SI
2007-11-15 11:21:37 +00:00
Philip Eisenlohr e86a288a21 CPFEM_dummy_stress now user-given constant in _init (SI units !!) 2007-11-15 11:12:58 +00:00
Franz Roters 896c37ede2 changed structure of CPFEM_general to allow for non local algorithm and parrallelisation 2007-11-08 08:26:02 +00:00
Franz Roters 8619a92009 made sumVolfrac real also in constitutive_dislo.f90 2007-11-07 15:02:54 +00:00
Franz Roters 56e82e0fe2 changed sumVolfrac to real 2007-11-06 11:21:46 +00:00
Philip Eisenlohr d94f6c80de deleted unused variable constitutive_results
constitutive_maxNresults gets now calculated as maxval instead of hardwired
2007-11-06 10:21:03 +00:00
Philip Eisenlohr 4dbf6ac3fa added volume fraction of orientation to output array (now CPFEM_Nresults = 4) 2007-11-06 08:30:04 +00:00
Franz Roters d2471ab479 corrected formating error in output from mesh 2007-10-26 13:39:54 +00:00
Franz Roters 909ebf2cd0 removed unused variables
corrected allocation error in constitutive_dislo.f90
2007-10-24 15:24:49 +00:00
Philip Eisenlohr 20693b9d38 hybrid IA sampling now respects sample symmetry 2007-10-24 15:13:10 +00:00
William Counts bf35fa4868 former revision of mesh.f90 caused segmentation fault. probably due to
string assignment across memory. fixed now...
2007-10-24 11:25:58 +00:00
Philip Eisenlohr f0617b74f6 added output of mesh statistics at end of input file parsing 2007-10-24 09:00:42 +00:00
William Counts 67a5711ed1 added awareness of set definitions (new function build_elemSetMapping)
added new style tables for initial conditions
2007-10-23 13:09:46 +00:00
William Counts ca0e2e55df fixed broken IO_continousIntValues to be aware of element (or other)
sets
-This line, and those below, will be ignored--


M    IO.f90
2007-10-23 13:08:27 +00:00
Luc Hantcherli 9043b4374e Corrected the treatment of interaction coefficients in constitutive_dislo 2007-10-22 15:32:45 +00:00
Franz Roters 57ed908129 removed unused variables
made hardening matrix finally (?) work
2007-10-22 14:53:10 +00:00
Luc Hantcherli b611af8826 Hardening coefficient now corrected for coplanar systems 2007-10-17 15:12:00 +00:00
Luc Hantcherli 1aef23baf7 Initialization, allocation and computation of hardening matrices reviewed. 2007-10-16 17:12:27 +00:00
Luc Hantcherli b0279435e3 CPFEM_Temperature is now a function of the element number and the integration point number 2007-10-16 17:08:06 +00:00
Luc Hantcherli ea65703f83 Interaction type matrices are defined in a more convenient way 2007-10-16 17:05:36 +00:00
Luc Hantcherli ee81ae29df Update of mattex file (monoclinic-2) 2007-10-16 16:59:55 +00:00
Franz Roters 71e870032f output Euler angles in Degree 2007-10-16 14:47:09 +00:00
Franz Roters 1da4244900 reintruduced temperature in call of CPFEM_general, got lost when changing to version dependent top files 2007-10-16 13:42:48 +00:00
Franz Roters 5d566f63fd corrected plotv
names of common blocks changed in marc2007r1, therfore we now have mpie_cpfem_marc2007r1.f90 and mpie_cpfem_marc2005r3.f90
2007-10-16 13:22:39 +00:00
Luc Hantcherli 296f09d225 Checked computation of hardening matrix
In case of constitutive_pheno.f90, the computation can be optimized.
Mattex file slightly modified
2007-10-16 12:20:58 +00:00
Luc Hantcherli ad470f6ee0 Added explanations and comments in mattex file
The dislocation based constitutive subroutine can be only use for fcc crystal !!!!
The constitutive equations are different for bcc and hcp.
2007-10-16 12:11:58 +00:00
Luc Hantcherli 4a70b4dbbc Added a possible example of mattex file
Some syntax corrections
2007-10-16 11:50:51 +00:00
Luc Hantcherli 79c4f20f1c Two changes:
- call of concom and creep, now marc_concom and marc_creep. Franz will check if the parameters within the two modules in the new release, Mentat2007, are the same compared to the old release.
- hard coded include of "constitutive.pheno". That should be changed by the mean of dynamic links
2007-10-16 11:45:05 +00:00
Luc Hantcherli d8ce85c033 Syntax corrections. Update of constitutive.pheno and constitutive.dislo. 2007-10-16 11:30:05 +00:00
Luc Hantcherli e1e7f10dc4 Constitutive_dislo contains the dislocation-based modeling of crystal plasticity. 2007-10-16 09:01:19 +00:00
Luc Hantcherli b476aa4028 CPFEM.f90 contains the following modifications:
-Temperature is now defined as a CPFEM_Temperature, and filled for each new call of CPFEM_general according the value output by MARC
-constitutive_Microstructure(state_new,CPFEM_Temperature,grain,CPFEM_in,cp_en) is used in the state loop and before entering in the stress loop. This subroutine computes all parameters,arrays or matrices required from the state, i.e. forest or parallel or mobile dislocation densities from the statistically stored dislocation densities. Its definition is made in module constitutive.
2007-10-16 08:33:59 +00:00
Luc Hantcherli ab0fddf518 Module crystal contains a so-called interaction type matrix for each crystal structure. This matrix helps for computing the hardening matrix in case of a phenomenological constitutive or the dislocation interaction intensity matrix in case of a dislocation-based constitutive.
Definition can be discuss.
Corresponding changes should be carried on constitutive.f90
2007-10-16 08:23:38 +00:00
Luc Hantcherli ccafbf9a0f Temperature T(1) is now transmitted to the CPFEM_general subroutine. Corresponding changes should be carried on CPFEM.f90 2007-10-16 08:18:57 +00:00
Philip Eisenlohr e3dcaa6915 outer crystal system loop now runs up to _MaxCrystalStructure (used to be hardcoded 3) 2007-10-15 14:36:25 +00:00
Philip Eisenlohr 5a82f22681 resubmit of IO_countContinousIntValues (did not check fortran syntax -- should be fine now) 2007-10-15 13:57:50 +00:00
Philip Eisenlohr 08a9985179 added function IO_countContinousIntValues
to read number of items in set definitions:
123 to 423
or something like
1 3 5 6 7 9 10 c
12 14
2007-10-15 13:55:52 +00:00
Franz Roters 532d3c2a16 added use crystal statement before call of crystal_init 2007-10-15 10:16:51 +00:00
Luc Hantcherli 64f3f6ccee crystal_init() included in CPFEM.f90 2007-10-15 09:30:57 +00:00
Philip Eisenlohr b0ef9e4a94 added element types
11 (4node 2D linear full) and
27 (8node 2D quadratic full)
2007-10-12 13:48:29 +00:00
Franz Roters 4ce8270415 corrected some variable names 2007-10-11 11:42:37 +00:00
Luc Hantcherli a6fef91c6b Extraction crystal structure information from constitutive.f90. Creation of crystal.f90 2007-10-11 11:36:09 +00:00
William Counts 7bc27e02ca keyword "table" appeared more than once -- restricted interpretation to header 2007-09-28 14:56:26 +00:00
Philip Eisenlohr 892f33591c adapted to new default table style in 2007R1
hypoelastic part of input file needs skipping an additional line if new style tables are active
2007-09-28 14:16:03 +00:00
Franz Roters 28fc9cc221 put recalculation of elastic stress back in (was accidentally deleted)
changed check of residuum improvement for small residuum
2007-08-13 07:12:24 +00:00
Franz Roters 85df3b95ee changed restriction of dTstar, its now based on the residuum, if it does not improve 0.5*dTstar is used instead 2007-08-07 08:02:31 +00:00
Franz Roters a5f49a0578 changed first elastic guess for small Tstar
changed residuum to only consider deviatoric part of Tstar
changed scaling when dTstar becomes too large to proportionally scaling all components of dTstar
2007-07-20 13:32:44 +00:00
Franz Roters a1c3df84ab changed quite a few things, mainly using last result as initial guess now, thinks work a lot better now but still not perfect 2007-06-06 14:38:06 +00:00
Franz Roters 0efe7756bc included fix in constitutive_post_results to handle case of constitutive_Nresults==0 2007-05-22 06:36:52 +00:00
Franz Roters 6f3f5ee23c corrected error in deMandeling of jacoby matrix 2007-05-22 06:34:58 +00:00
Franz Roters 09c47f15e3 changed constitutive to open file using IO_open_file and use fileunit 200 instead of 1
changed constitutive to skip empty lines when parsing files
activated call quit in IO_error
2007-05-16 14:36:03 +00:00
Franz Roters e1ae35c5e4 corrected typo in constitutive_Sslip_v
corrected demandle of jacoby in hypela2
2007-05-15 08:47:44 +00:00
Franz Roters 49886a072c corrected CPFEM_stressIP to use FFN1 at the end of the time increment
calculate for ncycle==0 and not only inc==0 in hypela2
2007-05-14 12:13:36 +00:00
Franz Roters 6aece52d1c changed Calculation of the tangent of Lp to always use state(i) and not constitutive_state_new 2007-05-11 13:22:16 +00:00
Franz Roters e5749cbff0 changed scatter check for gauss components to if(noise==0) 2007-04-26 14:46:54 +00:00
Philip Eisenlohr 09aad5ccb4 changed _Xvalue() return codes on error to huge() 2007-04-26 12:40:06 +00:00
Franz Roters 11cc6d1ee1 math_sampleGaussOri did not treat the special case of zero noise (scatter) 2007-04-26 11:46:58 +00:00
Franz Roters 6fd473eaa7 scatter was not transformed to rad when read from material file 2007-04-26 11:42:16 +00:00
Franz Roters 1fd722e4cf changed format for reading float from('F') to * in IO_floatValue 2007-04-25 14:38:22 +00:00
Franz Roters 033a6a03b3 determine number of grains as texture_Ngrains(mesh_element(4,cp_en)) instead of constitutive_Ngrains (which is not used anymore) in CPFEM_stressIP 2007-04-25 13:58:10 +00:00
Franz Roters 1747c0cc98 corrected calculation of constitutive_maxNstatevars 2007-04-25 13:50:28 +00:00
Franz Roters 03f244995e corrected mesh_build_elements (unit) so that state variables are read correctly from input file 2007-04-25 07:33:24 +00:00
Franz Roters 3a4ec4c2d1 removed several unused variables 2007-04-24 06:49:13 +00:00
Franz Roters c0ebb4d846 reordered subroutine calls in mesh_init to allocate nodemap and elementmap BEFORE they are used 2007-04-24 06:29:22 +00:00
Philip Eisenlohr 83d2dea8c6 CPFEM_general call now uses CPFEM_en instead of cp_en -- the required mapping is not in place on first call! 2007-04-23 13:25:09 +00:00
Philip Eisenlohr 471d53e3ba _general needs CPFEM_en NOT cp_en..!
stress loop counter was not been reset
matmul(A,B) now replaced by stored AB
2007-04-23 13:23:03 +00:00
Philip Eisenlohr 9e0b9a7096 removed syntax error in _LpAndItsTangent (enforcing symmetry was flawed...) 2007-04-17 08:02:27 +00:00
Luc Hantcherli 0f6ff82f30 Checked indices for Jacobi calculation 2007-04-17 07:58:53 +00:00
Luc Hantcherli c76ab95b21 Added in LpandIstTangent 0.5*(transpose+untranspose) 2007-04-17 07:53:06 +00:00
Philip Eisenlohr b26704c23f added missing use statement in _init 2007-04-13 15:37:10 +00:00
Philip Eisenlohr 4718abfc70 agreed on wrong calc of scaled state residual 2007-04-13 14:22:55 +00:00
Philip Eisenlohr 09495e852d added necessary use statements 2007-04-13 14:20:59 +00:00
Philip Eisenlohr bbfb86fb8f added necessary use statements 2007-04-13 14:20:33 +00:00
Luc Hantcherli d90162dc38 Corrected Rstress(i)/state_new(i) into Rstate(i)/state_new(i) 2007-04-13 11:30:49 +00:00
Luc Hantcherli eb292917b9 untied interlinked constitutive and CPFEM modules
now constitutive stores EulerAngles and CPFEM generates Fp_old from these
2007-04-11 15:28:46 +00:00
Luc Hantcherli cb4a85319d corrected small syntax errors 2007-04-11 14:55:06 +00:00
Luc Hantcherli 3c5d490148 added _plot_results function to tell about constitutive results (state + current shear per slip system) 2007-04-11 14:52:47 +00:00
Luc Hantcherli f9f3e2bd9b result processing now in stressIP
i.e. no extra polar decompositions performed any more
2007-04-11 14:51:49 +00:00
Philip Eisenlohr 9704a4e83c syntax polishing 2007-04-11 13:21:22 +00:00
Philip Eisenlohr ff6642ea8c major edit.
combined routines into
CPFEM_general, CPFEM_stressIP (incl cutback scheme),
CPFEM_stressCrystallite, and CPFEM_timeIntegration (Newton scheme)

error management now based on text strings
2007-04-11 10:06:28 +00:00
Philip Eisenlohr 9da4b4cf24 name change to reflect State and Stress (was outer,inner)
added nReg for Jacobi regularization attempts
2007-04-11 10:05:08 +00:00
Philip Eisenlohr 4743c1cd86 error from inversion routines now boolean type 2007-04-11 10:04:22 +00:00
Philip Eisenlohr 6095ce0972 minor changes (syntax polishing) 2007-04-11 10:03:43 +00:00
Philip Eisenlohr e1f2daf753 _Lp and _dotState now explicitely depends on given state 2007-04-10 12:29:11 +00:00
Philip Eisenlohr df3f327ece added function calls in init() 2007-04-10 11:22:53 +00:00
Philip Eisenlohr 35266bd513 added nreg to limit number of Jacobi regularizations 2007-04-10 11:22:06 +00:00
Philip Eisenlohr 84eeddc6ba small polishing 2007-04-10 11:21:34 +00:00
Luc Hantcherli 092bff57d3 Added some modifications in constitutive_LpandItsTangent 2007-04-10 11:20:05 +00:00
Luc Hantcherli db12071577 Finalized constitutive_Assignment (orientation to subips) 2007-04-04 13:57:32 +00:00
Luc Hantcherli 6fcf763054 Corrected Tstar calculation by 0.5 2007-04-04 13:56:10 +00:00
Luc Hantcherli ea20fc73c1 Added pure statements 2007-04-04 13:55:21 +00:00
William Counts f1653ad88c debugged quicksort algorithm slightly (now able to do multiple identical keys) 2007-04-04 08:49:48 +00:00
William Counts f055a7b037 added IO_continousIntValues 2007-04-04 08:49:00 +00:00
William Counts 5db61c19d3 fixed buggy build_ipNeighborhood and faceMatch (that sounds so easy...) 2007-04-04 08:47:34 +00:00
Philip Eisenlohr 1f37cd897b added quicksort 2007-04-03 08:17:58 +00:00
William Counts 37a4a4bcdc done with mesh_build_element 2007-03-30 14:56:57 +00:00
Luc Hantcherli cdf95b0ee3 Changed orientation assignment 2007-03-29 19:33:12 +00:00
Philip Eisenlohr 836a22270a rewrote _sampleXXXori functions
set of angles is now always an array
2007-03-29 15:32:52 +00:00
William Counts 656a6808bc cleaned up mesh_build_CPeleMapping code 2007-03-29 13:08:08 +00:00
Luc Hantcherli bab4381447 Added texture symmetry taken into account for defining constitutive_Ngrains 2007-03-29 12:48:47 +00:00
Luc Hantcherli e5003f9d10 Added construction of initial CPFEM_Fp_old 2007-03-29 12:16:23 +00:00
Luc Hantcherli c3ab698649 Added use of sample_Gauss, sample_Fiber, Sample_Radom 2007-03-29 11:13:40 +00:00
William Counts 5f9b57b952 with mesh_build_Sharedelems 2007-03-29 08:42:08 +00:00
Franz Roters 4e68da3cf1 moved all numerical parameters to prec.f90
removed some unused variables
2007-03-29 07:15:12 +00:00
Luc Hantcherli 11bb8faa3f Added random component 2007-03-28 17:48:59 +00:00
Luc Hantcherli 3ba46ac7d7 Added ideas for Voigt<->Mandel transformations (PE) 2007-03-28 17:41:54 +00:00
Franz Roters 4b69c1d738 corrected calculation of FEM jacobi
adjusted marc return of FEM jacobi
2007-03-28 15:59:17 +00:00
Philip Eisenlohr 40e3ec2349 shortened long lines 2007-03-28 14:13:44 +00:00
Philip Eisenlohr 7a27045c06 i,j,k,l,m loop DO it now 2007-03-28 14:12:41 +00:00