Skip to content

Tags: bessagroup/CRATE

Tags

v1.0.5

Toggle v1.0.5's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
PRv.1.0.5 (#13)

* Implemented handling of neglectable imaginary parts stemming from spectral decomposition.
- A new flag in spectral decomposition can be set True to drop imaginary parts of eigenvalues and eigenvectores when these are close to zero;

* Updated version.

archive/PRv1.0.5

Toggle archive/PRv1.0.5's commit message
Updated version.

v1.0.4

Toggle v1.0.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
PRv1.0.4 (#11)

* Updated version.

* Fixed bug when building first Piola-Kirchhoff stress tensor for output.

* Fixed execution error under finite strains.
- Avoid state update kinematic post-processing when state update fails;

* Reduced overhead cost of matrix condensation.

* Fixed bug when writting voxels output file.

* Fixed bug when checking adaptivity input parameters.

* Fixed clusters strains initial iterative guess under clustering adaptivity.

archive/PRv1.0.4

Toggle archive/PRv1.0.4's commit message
Fixed clusters strains initial iterative guess under clustering adapt…

…ivity.

v1.0.3

Toggle v1.0.3's commit message
Updated CRATE version after JOSS review.

v1.0.2

Toggle v1.0.2's commit message
Updated VERSION.

v1.0.1

Toggle v1.0.1's commit message
Updated VERSION.

v1.0.0

Toggle v1.0.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
PRv1.0.0 (#9)

* adapt_material_phases is now a private attribute of class CRVE.

* Small documentation fix.

* Small bug fix.

* Update global interaction matrix assembly method.

* Update GOP independent terms computation method.

* Massive OOP refactorization and finite strains extension of the online-stage!
- Many classes are now instantiated with 'strain_formulation' and 
'problem_type' parameters, being 'n_dim', 'comp_order_sym' and 
'comp_order_nsym' obtained from matrixoperations module;
- Reference material output file is now optional and controlled by the 
input data file keyword 'Reference_Material_Output';
- Constitutive models have the attribute 'name', being the keyword read 
in the input data file named 'model_keyword';
- Updated reference material output class, namely by passing the new 
elastic reference material instance to the write output file method;
- Increment Rewinder class has been simplified by having 
'material_state' and 'ref_material' stored at rewind state. The transfer 
of state variables between the rewind state CRVE clustering and the 
current CRVE clustering is still perform in this class, but the Material 
State class has a new method to set the rewind state updated clustering;
- The actual update of cluster-related quantities performed in the 
Adaptivity Manager after a clustering adaptivity step has been migrated 
to a proper method of Material State class;
- All the cluster state-related variables as well as the homogenized 
strain and stress tensors are now integrated in the Material State 
class.
- The strain/stress homogenization-related procedures are now included 
in a Material State method as well as the update of the last converged 
material state variables;
- The material source conversion between external sources and CRATE 
corresponding constitutive models is now a method of Material State;
- Renamed elastic constitutive model module from 'linear_elastic' to 
'elastic' to account for hyperelasticity;
- Updated the VTK Output class to operate with the new Material State 
class;
- Implemented ASCA class that recovers the SCA for a static clustering 
analysis. All the procedures related to ASCA online-stage solution 
procedure have been integrated in ASCA class as methods (e.g., 
residuals, jacobian, effetive tangent modulus);
- Implemented elastic reference material class in ASCA module that 
contains all the associated procedures, namely the self-consistent 
scheme (the projection-based scheme has not been included, can be later 
revisited from last CRATE version);
- Update CRATE main module to account for all the previous 
implementations;

* Removed old modules after massive OOP refactorization.

* Add strain_formulation and problem_type to CRVE attributes.

* Fixes: 2D fiber-reinforced composite example with von Mises matrix under uniaxial tension

* More fixes during infinitesimal strains validation.

* Avoiding singular-matrix in self-consistent scheme when incremental strain is null.

* Fixed loading subpaths (incremental nature)!
- The incrementation of the loading subpaths after the first one was not 
correct and is now fixed;
- The term 'macroscale' has been removed from several variables 
definition and comments;
- External access to LoadingPath increm_state is now available through 
suitable getter;

* Enriched Kelvin notation coefficient method to account for the nonsymmetric case.

* Updated FFT validation section and utilities with Hadamard parametric studies.

* Implemented multiplicative decomposition for loading incrementation.
- It is not straightforward how to perform a component-wise 
multiplicative decomposition of the deformation gradient in the case of 
a mixed strain-stress prescription (it is left additive for now);

* Updated .hres file structure and data!
- The .hres file has been enriched with more data related with the 
effective run time and loading path incrementation;
- Strain and stress tensors are now always stored in columnwise order 
irrespective of the problem strain formulation;
- Infinitesimal strains: Infinitesimal strain tensor and Cauchy stress 
tensor;
- Finite strains: Deformation gradient and First Piola-Kirchhoff stress 
tensor;
- The computation of the Von Mises equivalent strain and equivalent 
stress is now performed by MaterialQuantitiesComputer;

* Updated documentation (distinction between infinitesimal and finite strains).

* Extended computation of vm_stress and vm_strain to the finite strains case.

* Updated documentation (infinitesimal/finite strains) and fixed some computations.
- Homogenized strain: infinitesimal strain tensor (infinitesimal 
strains) and deformation gradient (finite strains);
- Homogenized stress: Cauchy stress tensor (infinitesimal strains) and 
First Piola-Kirchhoff stress tensor (finite strains);
- State variables 'stress_mf' contains the First Piola-Kirchhoff stress 
tensor under finite strains;
- Add further conversion methods between different stress tensors;

* Updated parameters of several enriched methods.

* Updated documentation.

* Updated computation of Von mises equivalent strain and stress in the finite strains case.

* Fix Links interface in the finite strains case [NOT VALIDATED]!
- Incrementation of deformation gradient is now multiplicative as it 
should be;
- Cauchy stress tensor ariving from Links (STRES) is now properly 
converted to the First Piola-Kirchhoff stress tensor as required by 
CRATE cluster state variables;

* Removed circular import due to links.state_update importing MaterialState (first_piola_from_cauchy).

* Transferred strain/stress tensor conversions to materialoperations module (old materialquantities) to avoid import circularities!

* Small fix in Links state update to correctly build STRES (Cauchy stress tensor) in finite strain analyses.

* Updated documentation and fixed stress initialization in constitutive models under finite strains.

* Fix small bug.

* Fix spectral decomposition for the case of null matrix.

* Implemented ASCA method to set clusters incremental strains initial iterative guess.

* Small fix in the computation of the spatial consistent tangent modulus.

* Implemented ASCA method to initialize incremental far-field strain tensor.

* Fixed initialization of incremental homogenized strain components (formulation without far-field strain).

* Fixed Green Operator reference material coefficients to account for the NON-SYMMETRIZED elasticity tensor.

* Fix update of cluster deformation gradient.

* Implemented multiplicative decomposition of deformation gradient tensor when computing the incremental homogenized tensor.

* Fix fourth-order identity tensor (nonsymmetric) in Jacobian matrix under finite strains.

* Fix building of 3D homogenized deformation gradient tensor in homogenized results output.

* Fixed computation of material consistent tangent modulus (single contractions).

* Fixed output strain/stress symbols and out-of-plane deformation gradient component.

* Fixed out-of-plane homogenized deformation gradient component.

* Small documentation fix.

* Fix Jacobian bug!
- Implemented new public method of class ASCA to build the global 
cluster interaction - consistent tangent matrix;

* Fix missing argument in vtk output.

* Fix HomResOutput initial values.

* Fix locking of reference material elastic properties.

* Fix matrix symmetry checking procedure in spectral decomposition.

* Implement method to compute rotation of n-dimensional tensor.

* Updated documentation and implemented method to compute the elasticity tensor under general anisotropic elasticity.

* Implemented method to compute the rotation tensor from euler angles (Bunge convention).

* Updated documentation.

* Implemented new stress conversion function and updated documentation.

* Implemented new tensorial functions.

* Implemented St.Venant-Kirchhoff hyperelastic constitutive model.

* Implemented new approach for reading material properties of constitutive models.
- The new approach allows standard material properties and constitutive 
options with associated properties;
- The isotropic hardening law has also been modified according with this 
new approach;
- Not all constitutive models have been tested with this new approach, 
but only the building of the constitutive models material properties 
dictionary has been changed;

* Moved material to spatial consistent tangent modulus conversion.
- Implemented new stress conversion between the Cauchy stress tensor and 
the second Piola-Kirchhoff stress tensor;

* Integration of St.Venant-Kirchhoff constitutive model.

* Generalized Elastic to anisotropic elasticity.

* Small documentation typo.

* Small output fix.

* Small bug fixes.

* Implemented computation of rotation tensor from polar decomposition of deformation gradient.

* Important updates of offline-stage! - A new method has been implemented in class RVEElasticDatabase to compute the RVE's effective elastic tangent modulus. Another simple method estimates the isotropic elastic constants from the effective elastic tangent modulus; - Updated the fourth-order strain concentration tensors computation to properly account for the matricial form following the Kelvin notation. This includes both the computation of the orthogonal macroscale strain loadings as well as the actual computation of the strain concentration tensors; - Add new attribute to ASCA constructor that allows to provide an initial guess for the elastic reference material properties. This option has been conveniently implemented in the related method of class ElasticReferenceMaterial; - Add new method to DNSHomogenizationMethod interface get_hom_stress_strain() to get the homogenized strain-stress material response. This method has already been implemented for the FFT-based homogenization basic scheme, but not for Links-based homogenization (must be built from the associated .out file);

* Updated FFT-based homogenization basic scheme validation section according to the update of the fourth-order strain concentration tensors computation.

* Add effective elastic properties as attribute of CRVE!
- This is required in order to reuse the offline-stage;

* Updated reference material output to finite strains.

* Implemented get_hom_stress_strain() method for Links (offline-stage) homogenization.
- I believe that there is a bug in Links binary for infinitesimal 
strains, namely in the first Piola-Kirchhoff stress tensor (.out file);

* Converted ASCA from incremental formulation to total formulation.

* Forgot to clean some prints to terminal.

* Fix VTK output when both material phases have similar constitutive models.

* Fix self-consistent scheme cost function normalization in reference material output.

* Enriched material-related operations module with stress-strain conjugate pairs.

* Implemented regression-based material symmetric self-consistent scheme.

* Implemented module with optimization algorithms.

* Implemented module with suitable parametric optimization functions and related procedures.

* Implemented new option for update of reference material elastic properties: 'self_consistent_optimization'

* Implemented reference material properties optimizers.
- Implemented a reference material properties optimizer interface from 
which different optimizers can be implemented;
- Several optimizers are available: (1) Infinitesimal strains functional 
format regression-based self-consistent scheme (original), (2) Finite 
strains regression-based self-consistent scheme, (3) Self-consistent 
optimization (based on self-consistent loss functions);

* IMPORTANT: Enforced null Green operator at zero-frequency (instead of elastic reference material compliance matrix)!
- The farfield strain tensor recovers exactly the enforced macroscale 
deformation gradient tensor (only prescribed strain has been tested so 
far!);
- Obtained the same strain-stress response as the old version;

* Small change in self-consistent scheme admissibility flow.
- The self-consistent scheme solution admissibility evaluation now also 
includes the first increment. If not admissible, then the initial guess 
of the reference material properties is adopted;
- This prevents that reference material negative properties are accepted 
when the first increment potentially converges;

* Fixed finite strains regression-based self-consistent scheme when symmetrized option is adopted.

* Fixed small bug in Self-Consistent optimization.

* Fixed bug in arguments of self-consistent componentwise regression.

* Small documentation fix.

* Save both initial guess and first increment converged reference material elastic properties.
- Reference material properties admissibility is now normalized by the 
initial guess and not the first increment converged values;
- The upper bound of the self-consistent optimization young modulus is 
now set based on the initial guess value;

* Fixed get_opt_strain_weights in self-consistent optimization.

* Updated reference material properties admissibility conditions.

* Fixed RRMSE loss function normalization.

* Small fix (more robust) in Von Mises constitutive model yield function evaluation

* IMPORTANT: Fix material coefficient of the Green Operator under finite strains (non-symmetrized).

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Enforcing BRG coding style.

* Fix some small errors introduced while enforcing BRG coding style.

* Add equilibrium residual term to recover incremental formulation under infinitesimal strains.

* Add residual constraint term to recover incremental formulation under infinitesimal strains.

* Modified self-consistent scheme input data file specification
- The self-consistent scheme can now be specified as 'none' to keep the 
reference material properties constant throughout the simulation;
- The reference material properties initial value can now be set in the 
input data file as parameters of the self-consistent scheme;

* Replaced ntpath by os.path (general handling for any operative system).

* Removed duplicate output file paths definition.
- The majority of the output files paths are now defined within ASCA;

* Remove deprecated sklearn KMeans clustering algorithm option 'auto' (replaced by 'lloyd').

* Fixed some documentation typos.

* Updated input data file template.

* New input argument: Spatial discretization file directory!
- The spatial discretization file directory can now be (optionally) 
provided as a command line argument;
- This allows the specification of the spatial discretization file path 
as a relative path in the input data file;

* New clustering feature: Spatial coordinates!
- A new clustering feature was implemented (spatial coordinates of 
voxels);
- When employed as clustering features, the spatial coordinates lead to 
a clustering that resembles a Voronoi diagram;
- A bug was fixed to deal with multiple clustering features (preserving 
the global features indexes within each material phase, condensing only 
voxels rows);

* New data-driven simulation mode!
- A new keyword 'Data_Driven_Simulation_Mode' activates some procedures 
to alleviate the computational costs (time and memory) of simulations 
run in the context of a data-driven framework;

* Improved handling of provided spatial discretization file directory!

* Check existence of actual '.crve' file (not only of offline-stage directory).

* CHECKPOINT: Removed formulation without the far-field strain.

* Removed LINKS-related code and testing code.

* Update README.md

* Add schematics for README file.

* Add schematics for README file in png format.

* Update README.md

* Restructuring directory structure as src-layout.

* Small documentation fix.

* Include Sphinx docs.

* Small documentation fix.

* Documentation polishment.

* Generated Sphinx documentation.

* Add option to perform CRATE simulation directly from main module.

* Move documentation to docs/.

* Update README.md

* Update README.md

* Include Python package distribution files.

* Add flake8 configuration file.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Updated Flake8 configuration file.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Flake8 enforcement.

* Updated Flake8 configuration file.

* Updated License classifier.

* Package dependencies handling.

* Allowing crate.crate_simulation() (bypassing main).

* Update README.md

* Handling of undefined scree file path + Creation of benchmarks directory.

* Changed names of output directories.

* Removed clustering algorithms implementations (not validated).

* Update README.md

* Updated documentation.

* Removed attempts of finite strains self-consistent scheme.
- Changed self-consistent solution admissibility tolerance;

* Add new schematic.

* Add benchmarks.

* Updated .flake8 (F401 and E402 in __init__.py files).

* Minor fixes.

* Removed some optimizers to keep package dependencies to a fundamental minimum.

* Included requirements.txt to automatically install Python package dependencies with pip.

* Add new example (5) with complex non-monotonic loading path.

* minor corrections of documentation index

* Updated flake8 file.

* Fixed bug when spatial discretization file directory is not provided.

* Add Sphinx Python package dependencies.

* Implemented output file with CRVE effective tangent modulus.

* Derived HomResOutput from IncrementalOutputFile interface.

* Derived HRefMatOutput from IncrementalOutputFile interface.

* Renamed incremental output files folder.

* Created miscellaneous output files folder.

* Fixed bug in the incremental output file interface.

* Updated Sphinx documentation.

* Output writing of increment VTK output file.

* New output options!
- A new parameter of crate_simulation() allows the supression of the 
output to the standard output device;
- The "Data_Driven_Simulation_Mode" was replaced by the option 
"Minimize_Output", which minimizes output files and directories to the 
essential outputs of the multi-scale simulation (.screen, .hres, 
.efftan);
- Small updates to documentation;

* Update README.md

* Update README.md

* Updated Sphinx documentation according to README.

* Include requirements in MANIFEST.

* Add JOSS paper.

* Deleted trash documentation file.

* Renamed workflow.

* Updated JOSS paper workflow.

* Updated JOSS paper.

* Update README.md

* Update README.md

* Started shaping Sphinx documentation pages.

* Improved strain hardening laws.
- Replaced Swift by more general Nadai-Ludwik hardening law (finite 
offset overcomes numerical issues when computing hardening slope at 
origin);
- Removed Ramberg-Osgood strain hardening law (not tested, prone to 
numerical issues);

* Enriching Sphinx documentation pages.

* Enriching Sphinx documentation pages.

* Finished Sphinx documentation pages.

* Update README.md

archive/PRv1.0.0

Toggle archive/PRv1.0.0's commit message
Merge branch 'PRv1.0.0-sphinx' into PRv1.0.0

v0.9.0

Toggle v0.9.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
PRv0.9.0 (#8)

* Offline stage FEM homogenization considering ELASTIC properties
Prior to this commit, the material phase properties were being "copied" 
to Links offline stage input data files. Now all material phases are 
assumed ELASTIC for this purpose and the corresponding elastic 
properties are extracted from each material phase (irrespective of the 
true constitutive model).

* Perform Offline Stage with FEM but Online Stage with CRATE (constitutive model source conversion).

* Fix: Updated release version number in .screen file.

* Important fix: Reference material elastic tangent and compliance tensor update
The reference material elastic tangent and compliance tensor were not 
being correctly updated to perform the first SCS iteration after a 
macroscale loading increment cut.

* Locking reference material elastic properties
Instead of raising a macroscale loading increment cut whenever the 
maximum number of SCS iterations is reached, now the reference material 
elastic properties are locked to their last converged increment values 
in the remainder of the simulation.
This is not a definite solution to the loss of convergence of the SCS 
and the increment cut may be later recovered as a suitable procedure for 
cetain cases.

* Changed locking strategy for reference material elastic properties.
The admissibility of the self-consistent iterative solution is now 
always evaluated. If not admissible, then the last converged increment 
reference material elastic properties are considered to obtain an 
accepted solution. In the following macroscale loading increment the 
self-consistent scheme is performed again as usual, being the solution 
admissibility evaluated again.
The tolerance of the Young modulus is now made relative to the reference 
material elastic tangent in the first increment and has been choosen as 
2.5% based on some numerical studies (this may not be the best value 
though).

* New output file: reference material associated quantities (properties, incremental, far-field-strain)
Two output modes are available: 'iterative' outputs the reference 
material quantities at every self-consistent scheme iteration; 
'converged' outputs the reference material quantities that converged at 
each macroscale loading increment.

* Add new measures to reference material output file
- Normalized norm of difference between the incremental farfield strain 
tensor and incremental macroscale load strain tensor
- Normalized self-consistent scheme cost function

* Added increment 0 to reference material output file and fixed self-consistent scheme cost function (regression-based).

* Added new measure to reference material output file
- Normalized norm of difference between the effective tangent modulus 
and reference material tangent modulus

* Implemented new option to compute CRVE effective tangent modulus (same results are obtain with both options)

* CRVE effective tangent modulus is now computed after equilibrium Newton-Raphson convergence

* Added validation procedure of cluster strain concentration tensor (employed in the CRVE effective tangent modulus computation).
This procedure is only working for the SCA formulation with the farfield 
strain tensor (read the Notes section of validate_csct()).

* Updated reference material output file for the case when the SCA formulation without farfield is used.

* Implemented new adaptivity type parameter for GACRMP: threshold_n_clusters
> The new parameter allows the user to prescribe a threshold for the 
number of clusters of a given adaptive material phase. As soon as this 
threshold is surpassed, adaptivity procedures are locked and the 
material phase remains static up to the end of the simulation;
> Updated CRATE input data file to account for this parameter and also 
GACRMP (forgotten);
> Fix GACRMP parent class as ACRMP (forgotten);

* Implemented clustering adaptivity output file.
> For each macroscale loading increment, this file contains the current 
number of clusters and current adaptive step of each adaptive material 
phase.

* Included time measures in clustering adaptivity output file.

* Enriched clustering adaptivity output file and included clustering adaptivity summary to .screen file

* Fix: VTK collection file (.pvd) is now always working, even if the simulation is interrupted or does not converge successfuly up to the end.

* Enriched VTK output: clusters adaptive level is now available for visualization.

* Polished CRATE's execution time summary: the accumulated post-processing time is now accounted independently.
> Given that significant computational time can be spent in 
post-processing operations (e.g., writing output files), the accumulated 
post-processing time (offline stage and online stage) is now evaluated 
independently.

* Macroscale increment where adaptivity conditions are triggered is now repeated with the new clustering
> Alternative strategy, where the clustering adaptivity is performed in 
between increments is still left in the code (sca.py) but is 
deactivated;
> Together with the new strategy is the option of an improved initial 
iterative guess for the clusters incremental strain after the clustering 
adaptivity is performed. This follows a similar procedure to the one 
adopted to update the cluster-related quantities and is based on the 
converged solution of the increment that is being repeated;
> The adaptivity manager now keeps count of the number of clustering 
adaptive steps performed on each macroscale loading increment. It has 
been defined a maximum number of clustering adaptive steps per 
macroscale loading increment (now set to 1), which can be later 
converted to a input file optional parameter if needed;
> Reference material output file has been updated to properly deal with 
repeated increments;
> New .screen file output has been implemented to display when a 
clustering adaptivity is performed (irrespective of the clustering 
adaptivity output option);
> A couple of convenient CRVE methods have been implemented to get some 
CRVE attributes without making them public;
> CRVE phase_clusters was being built by mistake as a 1d np.array. 
Converted to list in agreement with documentation.

* Implemented new output file with voxel material-related quantities (.voxout file)
> New output file is written inside the Post_Process/ folder when the 
keyword 'Voxels_Output' is found in the input data file;
> Voxel material-related quantities are written in the output file every 
converged macroscale loading increment;
> A new packing dictionary has been implemented related to general 
output files (output.dict);
> Two suitable CRVE methods were added to access required CRVE 
attributes;
> Implemented material-related quantities computer class that includes 
methods to compute standard strain and/or stress related quantities 
(e.g., von Mises equivalent stress);

* Add equivalent von Mises stress and strain to VTK output

* Von Mises: Add the accumulated plastic strain energy density to the state variables dictionary (post-process purpose only)
> This quantity is now available for the voxels material-related output 
file;

* Linear elastic and Von Mises: Add the accumulated elastic strain energy density to the state variables dictionary (post-process).

* Add incremental option to clustering adaptivity features prescription.
> Updated CRATE's input data file documentation;

* Implemented clusters strain concentration tensors dictionary similar to state variables dictionaries.
> This dictionary is now built together with the computation of the CRVE 
effective tangent modulus;
> Cluster strain concentration tensors are now available to be used as 
clustering adaptivity features;

* Implemented the clustering adaptivity feature associated to the norm of the clusters strain concentration tensors
> Add norm option to clustering adaptivity features prescription;
> Updated CRATE's input data file documentation;

* Implemented the clustering adaptivity feature associated to the norm of the clusters equilibrium residuals
> Updated CRATE's input data file;
> Implemented convenient method to build clusters equilibrium residuals 
dictionary;

* Warning: Important safety fixes
> CRVE class has a new attribute _base_phase_n_clusters which stores the 
prescribed (base clustering) number of clusters for each material phase. 
This attribute is now use to perform the base clustering;
> The CRVE attribute _phase_n_clusters is now continuously updated if 
there are new clusters coming from adaptive procedures;
> To avoid 'link' issues with mutable attributes, the mutable __init__ 
parameters of both CRVE and AdaptivityManager are now copied upon 
instantiation;
> get() procedures have been implemented in the CRVE class to avoid 
external access to 'private' attributes;
> The clst_dict can be easily removed from the sca module and associated 
calls, avoiding a continuous update of the clustering dictionary. This 
should be performed in a future commit;

* Changed directory of crve_adaptivity module to clustering adaptivity folder.

* New clustering adaptivity criterion class!
> In order to implement new clustering adaptivity criterions, a 
superclass AdaptivityCriterion has been implemented in new module 
adaptivity_criterion.py;
> Each adaptive material phase is now associated with a given instance 
of AdaptivityCriterion. The instantiation is performed during the 
initialization of the AdaptivityManager;
> Both adaptivity_criterion.py and crve_adaptivity.py were moved to a 
new directory (folder clustering/adaptivity/);
> The old 'Non-spatial' criterion has been renamed 'Adaptive cluster 
grouping' and has now a dedicated class in adaptivity_criterion.py. The 
associated code that was in crve_adaptivity.py has been transferred to 
this new class with minor modifications (e.g., 'mat_phase' loops were 
dropped);
> The old variable 'adaptivity_criterion' that was built in the reading 
procedures of the input data file has been renamed to 
'adapt_criterion_data';

* New clustering adaptivity criterion: Spatial discontinuities!
> Updated CRATE's input data file;
> The interface method 'get_target_clusters()' now must also return 
target_clusters_data along with target_clusters. This dictionary 
contains, for each target cluster, required parameters for the adaptive 
procedures;
> Updated VTK adaptive level output to work under both adaptivity 
criteria;
> Add dynamic adaptive clustering split factor option to GACRMP to 
dynamically compute the split factor based on a given cluster 
'magnitude' value;
> CRVE voxels_clusters attribute is now private and has a getter 
function;
> Fix bug: Cluster labeling was raising errors with two or more adaptive 
material phases. A new CRVE method has been implemented to get the CRVE 
maximum cluster label and the issue is now fixed;
> Fix: Forgot to remove the get_adaptivity_criterion_parameters() from 
the AdaptivityManager class and the associated reference during the 
input data file reading procedures;

* Target clusters data now include flag that signals if cluster has a dynamic split factor (according to associated clustering criterion).
> Fixed bug in VTK output of adaptive level of adaptive cluster grouping 
criterion;

* Computation of dynamic split factor is now static method of abstract class ACRMP.

* Set (hardcoded) flag that controls if the macroscale loading increment is repeated when the adaptivity conditions are triggered.
> Cleaned blank line in vtoutput.py;

* Updated HAACRMP to comply with the interface and new methods of ACRMP.
> Updated CRATE's input data file;

* New option in spatial discontinuities adaptivity criterion: Swipe dimension frequency.
> Updated CRATE's input data file;
> Clean _dynamic_split_factor() method that had been moved to super 
class in previous commit;

* Fixed material quantities computer: Computations are always performed considering the 3D strain and/or stress state.
> Changed argument 'problem_dict' to 'problem_type' in several functions 
and methods;

* Spatial discontinuities criterion: Random spatial dimensions swipe frequency initial index!

* Updated adaptive split factor enforcement in GACRMP and HACRMP: redefined maximum number of child clusters based on volume fraction!
> Updated CRATE's input data file;
> A default value of 0.5 is left for now (2 new clusters);
> Fixed enforcement of adaptive split factor upper bound (1);
> Didn't implement this option for HAACRMP

* Minor fix in CRATE's input data file documentation.

* Turned off check validation procedures in matrix condensation function: insane computational costs when dealing with large data matrices!

* Implemented output flag in clustering algorithms: True if the prescribed number of clusters is satisfied, False otherwise.
- Instead of raising an error at the end of the cluster analysis, this 
flag allows this 'failure' to be handled in different ways;
- Base clusterings failures still raise this error;
- Adaptive clustering in GACRMP ignores de failure and accepts the 
obtained number of clusters;

* Adaptivity criterion: Avoid computations of Spatial Discontinuities if the maximum range on adaptive material phase is null.

* New clustering adaptive control features: von Mises equivalent stress (vm_stress) and von Mises equivalent strain (vm_strain).

* Add material phase to header of voxels output (.voxout) file.
- This required to set the regular grid as an attribute of CRVE;

* Fixed bug in reading procedures of clustering adaptivity.

* Implemented new optional parameter associated to the Spatial Discontinuities adaptivity criterion!
- The new optional parameter is the minimum number of voxels that a 
cluster must have in order to be targeted for adaptivity (defaults to 
1);

* New option: Store CRVE final clustering state!
- The CRVE final clustering state can now be stored (overwrite) in the 
'.crve' file after the online stage is performed;
- This option is only relevant if clustering adaptivity procedures are 
considered;
- Optional keyword in the input data file: Store_Final_Clustering_State;
- Although the clustering adaptivity parameters can be updated in the 
following analysis, the clustering type of each material phase cannot be 
changed. If is required to consider a given adaptive material phase as 
'static', simply set the associated clustering adaptivity frequency to 
None;

* Clusters output: Clusters are now relabeled from zero in the Paraview output!
- Due to clustering adaptivity, a discontinuous cluster labeling range 
may lead to difficulties to analyze the cluster distribution in 
Paraview;
- This new relabeling method ONLY affects the Paraview output and 
maintains the relative position of the existent cluster labels;
- This method does not have any effect in static SCA analyses;

* Enriched Adaptive Cluster Grouping adaptivity criterion!
- Optional parameter is_merge_adapt_groups: True if the adaptive cluster 
groups of the same adaptive level are to be merged, False if each 
adaptive cluster group follows an independent hierarchy;
- The optional parameter 'adapt_min_voxels' is now available in this 
criterion. Target clusters still move to the next adaptive cluster 
group, but are not refined;

* Adaptive Cluster Grouping: Changed the adaptive split threshold definition (now is 1 - old).

* Set dynamic split factor amplitude threshold

* Refactorization of homogenized results output module
- OOP refactorization;
- Von Mises equivalent strain and stress computation is now equivalent 
to materialquantities module (but tensorial);

* Implemented rewind method in homogenized results output.

* Implemented rewind method in reference material output.

* Implemented rewind method in clustering adaptivity and voxels output.

* Updated SCA module to new homogenized results output class.

* VTK output OOP refactorization.

* Add vtk output rewind methods.

* Implemented rewind framework.
- Two new classes (RewindManager and Increment Rewinder) control the 
rewind framework main operations;
- The current version is only working for the 'static' SCA (see 
get_clusters_state() in IncrementRewinder). Extension to ASCA required 
proper handling of cluster-related variables;
- Suitable 'saving rewind state' conditions are still not implemented 
(see is_save_rewind_state() in RewindManager);

* Implemented rewind time counter.

* Fixed some bugs in rewind framework.

* Fixed rewind voxels output file (last line).

* Implemented rewind of clustering adaptive steps counters.

* Improved rewind criteria.

* Implemented new adaptivity criterion parameter ('min_adapt_feature_val'). - Clustering adaptivity feature minimum significant value for each material phase (required to activate adaptivity); - Clustering adaptivity frequency is now relative to the minimum significant value trigger increment;

* Fixed rewind voxels output file.

* Changed order of clustering adaptivity and increment rewind.
- Reset parameters associated to clustering adaptivity activation when 
increment rewind is performed;

* Fixed voxels output file.

* Fixed nearest integer when computing GACRMP and HAACRMP number of new clusters.

* Implemented power dynamic split function!
- This function is general (n=1 is linear, n->0 and n->+inf are 
symmetric around the linear);
- Linear is left as default;

* Implemented 'magnitude_lower_factor' optional parameter associated to spatial discontinuities selection criterion! - This parameters is a factor comprised between 0 and 1 and multiplies by the maximum magnitude associated to the lower valued targeted cluster;

* Enforce threshold number of clusters by sorting in descending order of maximum magnitude (if available)

* Clustering adaptivity cannot precede the clustering adaptivity reference initial increment (for instance, after rewinding procedure).

* Clustering adaptivity split factor magnitude dynamic function set to 'power' and n=1.0 (linear) by default.

* Clustering adaptivity activation parameters are no longer reset after rewinding. This maybe changed later.

* Clean print output.

* Completed analysis rewinding implementation!
- Updated CRATE's input data file;
- Clusters SCT are no longer stored nor rewind (there is no need given 
that these are simply computed with the consistent tangent modulus)

* VTK files paths in .pvd collection file are now relative paths (VTK/...).

* Updated CRATE's version.