Update release_notes authored by Rémy Mozul's avatar Rémy Mozul
# Release notes #
This page aims at keeping major information regarding the changes of function names, argument names or whatever between
the different versions of LMGC90.
This is not release notes 'stricto sensu'.
* [2023->2024](#2024)
* [2022->2023](#2023)
* [2021->2022](#2022)
* [2020->2021](#2021)
* [2019->2020](#2020)
* [2018->2019](#2019)
* [2017->2018](#2018)
* [2016->2017](#2017)
* [2015->2016](#2016)
## <a name=2024> version 2024 ##
API update:
* Default value of `addRegistersToDisplay` is now `True`
* Some optional VTK files writing move from Fortran core to Python:
* `lib_vtkio` is removed from the core and the installed third party libraries
* `f2f` files are written by adding `write_f2f=True` in `OpenDisplayFiles`
* central kernel files are written by adding `write_ck=True` in `OpenDisplayFiles`
* Gauss point files are written by:
* activating by listing the fields to display in `OpenDisplayFiles` with `mecagp_field` and/or `thergp_field`
* explicitely asked by setting `write_gp=True` in `WriteDisplayFiles`
* Change `inter` optional keyword to `ptc` to add field to `WriteDisplayFiles` for interactions
* Using `record<0` in `io_hdf5_read` will automatically read last available record
* Remove support of VTK 6
* Cmake minimum version is now 3.16
Fix:
* Quasi-Static time integrator to work with any time step
* Use `tiny` instead of arbitrary `1e-14` precision check in CZM laws
* Possibility to have up to 9999999 elements or nodes with `MAILx` bodies
* Error in `lmgc90_ptc` paraview macro
* Slight mistakes in tutorials notebooks
* Remove some warnings in `pre.visuAvatars` to greatly accelerate the function
* Add management of `xKSID` contactors in `pre.visuAvatars`
* Fix filtering of visible rigid/tact/mecaFE when generating VTK files
* Fix error in `CSASp` pedigree describing candidate as `CYLND` in hdf5 files and `getInteractions`
* Rename mecaMAILx_3D/discreteFE example to mecaMAILx_3D/discreteFE_suspendedblock and add corresponding gen_sample.py
* Fix TOSI_CZM* laws to use 2 energy parameters for mode I and mode II/III
New:
* Add support of ubuntu 24
* Add some basics tests on python/numpy
* Add a restart parameter to computation macros
* Paraview macro to draw tubes is available in `src/addons/paraview/LMGC90_gp`
* Add joint elements:
* In preprocessor
* linear bulk elements of type : `J2xx2`, `J3xx3`, `J4xx3`
* associated material must be of type :
* `JELAS` (with `stiffness` parameter)
* `J__MC` (with `stiffness`, `consolidation` and `mc` parameters)
* `JFCZM` (with `stiffness`, `consolidation` and `fczm` parameters)
* In Chipy wrapper added `mecaMAILx_GetGpAllJoint`
* Added examples in `mecaMAILx_3D` directory:
* `1J_compression+shear`
* `1J_traction`
* `jointFE_Arche`
* `jointFE_compression+shear`
* `jointFE_traction+shear`
* `jointFE_traction`
Doc:
* Detail list of datatype keyword when using GetBodyVector and other similar function
* Update notebook explaination regarding interactions
## <a name=2023> version 2023 ##
Added features:
* thermal dilatation management for built-in and demmefi models of mecaMAILx
* In HDF5 files the `rdata` part of `internals` in interaction is now of minimum needed size
* Add new contact laws:
* `ELASTIC_REPELL_CLB_adapt` to change stiffness through internal
* `TOSI_CZM` and `TOSI_CZM_INCRE` laws
* SPPRx detection module (with periodic management)
* periodic detection of CDCDx module
* the NLGS solver now stops with an error if a `NaN` value is met
* Add `PRPRx_SetInternalSurface` to be able to override the value of contact surface within triangle intersection detection
* `post` submodule of `chipy` to generate paraview files picturing the central kernel criteria (PRPRx with f2f detection)
* `inters.vtu` files are no longer generated only `ptc.vtu` files
* `ptc.vtu` files are now generated from the `chipy.getInteractions`
* add macros to make access and visualization of internal variables of interactions easier
* add macros for paraview (10 and 11) to add glyph/tubes on ptc files and ck (Central Kernel) files.
Changes in API:
* `MAX_INTERNAL_TACTS` is now of size 19 by default
* Some macro of `pylmgc90.chipy` now raise an error if `SetDimension` has not been called beforehand
* Argument `step` has been renamed to `record` in all the `ReadIni` macros
* Removed all obsolete read/write of binary file using the old OUTBOX format
* `CloseDisplayFiles` is now empty function and no longer needed
* `chipy.WriteDisplayFiles` no longer use the `ref_radius` and `normal_orient` parameters
* when adding user field to `ptc.vtu` files in chipy.WriteDisplayFiles` now needs an numpy array instead of a dictionary
* `registerInterInternals` take the internal variable (or a list of them) to work with
* `addRegistersToDisplay` to automatically add the internal variable to the WriteDisplayFiles calls
* `getInternalArray` to get the internal array associated with an interaction array
* `setInternalArray` to set the internal value of a list of interactions
* `getInteractions` can now get "this" or "verlet" interactions, with byte-string or integer id, for the parameters fields
Added functions to `chipy`:
* `WriteLast` added to macros
* `io_hdf5_write_last(fname)` allowing to write last state in the input file
* `inter_handler_xD_getNbRecup` was added (and corresponding getter in detection module removed)
* `inter_handler_xD_tgetIData` was added
* `PRPRx_GetF2f2Inters` to get the *face to face* to interaction mapping
* `CYLND_GetShape` to access cylinder axis length values
Added functions to `pre`:
* method `avatar.updateReferenceConfig` to update the reference configuration of the bodie(s) to the current one
Fixes:
* in Demmefi managements models (especially regarding `endo3D`)
* bug in `CDCDx` contact detection
* `pre.readState` when reading with `xxl` interactions
* sort content when using `ExternalFEM` and in `ExternalDetection` for Xper coupling
* SPPRx detection when contact point is not in a PR face
* PRASp computation of VN in prjj
* Add missing pre.mesh function in sphinx documentation
* correct read/write regarding stress of mecax in HDF5 files
* pre.IO.writeVlocRloc if inters is a list and not a numpy array
* bug in PRPRx where unwanted contacts where added with 0 coordinates
* some drvdof where ignored if index of body was greater than 99999
* inertia computation error of CYLND in `pre`
* fix 'COORDINATION_NUMBER' postpro command
* fix 'BODY TRACKING' to correctly follow rigid 3D body instead of first contactors
* use CL/AL and CS/AS mesh id instead of global id in .vtu files
* fix status of `CZM` contact laws
* fix error in `.pvd` paraview files in case of restart
## <a name=2022> version 2022 ##
* General fix in Core, API, build process and documentation
* Add `computation` macro submodule to provide the functions
* `initialize`
* `initialize_non_linear`
* `compute_one_step`
* `compute_one_step_non_linear`
* Add new matlib version (2021-1)
* Remove oldest matlib
* Read material file directly from matlib
* Use `density` as a field for `mecaMAILx` with matlib
* Specify field dependency to a parameter with a file
* Add management of cluster of `CYLND`
* Quasi-static integrator for `mecaMAILx`
* Mass scaling of `mecaMAILx`
* Use force instead of pressure within `nlgs_3D` solver for `CSASp` and `CSPRx`
* Add a function to compute a PDF of pressure
* Management of initial gaps or overlaps for `EXPO_CZM` laws
* Possible flush of postpro files during computation
* A post.py script to manage POSTPRO files
* `RecupRlocByPosition` for `CSPRx` contacts
* Add internal variables values to display files
* Max internal in contacts now default to 8 (instead of 6 before)
* Add access to wood orthotropic frame from `user` module
* Add possibility to only compute internal forces in `mecaMAILx`
* First version of SP/PR detection
* HDF5 now store a version number to handle evolution of format
* Access to a structured numpy array of all `this` interactions
* `inter_handler_xD_GetAll` now includes the `vloc` values (not displayed in paraview yet)
* Interaction type `T_inter` now use subcontactor id (`cdsci` and `ansci`) field instead of `icdver`, `ianal`, etc
Fixes:
* Fix VlocRloc ascii file output for some contacts where `lantac` was missing
* Remove unused `lantac` parameter from some VlocRloc ascii files
* Fix COORDINATION_NUMBER postpro file
* Fix trim in discrete geometry and add extension management
* Tidy Newton-Raphson routines management in TimeEvolution/overall module
* Fix cohesion status management in common plane detection
* Fix bugs for `EXPO_CZM_SPRING` laws
* Area of contact computation when using `TriangleIntersections` detection of `PRPRx`
* Fix `DKPLx` contact detection
* Fix `CSASp` contact detection
* Fix in `BODY TRACKING` to really track `RBDY3` and not its first contactor
* Fix installation path when changing of `VENV_PATH` with cmake
* Use CL/AL and CS/AS mesh id instead of global id in .vtu files
Added functions to `chipy`:
* `CSASp_AddReac`, `CSPRx_AddReac`
* `CSASp_AssumeOldFiles`
* `nlgs_3D_CutOpenCZM`
* `nlgs_3D_ManageInterpenetratedCZM`
* `CSxxx_GetAll`
* `mecaMAILx_GetInternalVariables`
* `mecaMAILx_ComputePDFPressure`
* `mecaMAILx_MassScaling`
* `postpro_FlushDuringComputation`, `postpro_3D_FlushDuringComputation`
* `RBDY3_GetDofStatus`
* `Integrator_InitQS`
* `user_getWoodFrame`
* `mecaMAILx_ ComputeFint`
* `inter_handler_xD_getNbRecup` was added (and corresponding getter in detection module removed)
* `inter_handler_xD_tgetIData`
Changes in API:
* in `pre.rigidCylinder` `h` parameter is now the half height of cylinder
## <a name=2021> version 2021 ##
* General fix in Core, API and documentation
* `CYLND` contactor now represent pill (cylinder capped with spheres)
* `CDCDx` contact detection has been fixed accordingly
* Add an `ExternalModelHandler` allowing to define a use either *MatLib* or *demmefi* libraries
* in `pre.model` constructor, `is_external` now takes the value `no`, `MatL_` or `Demfi`
* Improving management of *POSTPRO* files in case of restart
* Improve *POSTPRO* files format:
* all real fields use `ES` Fortran format instead of `D`
* time field is now written on 15 characters (against 14 beforehand)
* standard file name format with step and body number on 7 digits
* Add macro:
* `pre.writeDatbox` to drop all containers in DATBOX directory
* `chipy.ReadDatbox` to read/load all files from DATBOX directory in one go
* When reading a state from and HDF5 file, interactions as stored in `verlet` like for VlocRloc.OUT files
* Replacing functions:
* `xxxxx_StockRloc` -> `inter_handler_xD_stockRloc`
* `xxxx_RecupRloc` -> `inter_handler_xD_recupRloc`
* Adding a lot of tutorial material as jupyter notebook
* Adding a reader of DATBOX to generate pre container, have look to:
* `pre.readDatbox`
* `pre.readState`
* There is period of two months in which the internal parameter numbering changed for contactors and contact. If a hdf5 file as been generated before this parameters where stored inside the file, there is no way to know what parameter numbering to use. In case of problem, the `io_hdf5_fixVersion` might help.
## <a name=2020> version 2020 ##
* General fixes in Core, API and documentation
* Minimum required version of CMake is now 3.0
* Minimum required version of gcc suite is now 4.5
* Support of gcc 10
* Support of ubuntu 20 and ArchLinux for building
* Better handling of link with Siconos library
* Gmsh:
* update `pre.readMesh` function to handle gmsh file formats 4.0 and 4.1
* add a `gmshutils` submodule to `pylmgc90`, available only if `gmsh` python module is available
* MatLib:
* Possibility to set material as nodal field
* as such `ExternalModels_CheckProperties` is now split in `ExternalModels_StoreProperties` and `xxxxMAILx_CheckProperties`
* HDF5:
* better detection
* add script to build and use for Anaconda on Windows
* add parameters association to `Help` group
* add some tentative example of postprocessing the files in `examples/Tutorial/post`
* Interaction API: partial disambiguation of interaction accessors in inter_handler wrap modules using `t` to name `this` interaction:
* `getNb` -> `tgetNb`
* `getTactLawNb` -> `tgetTactLawNb`
* `getIdBodies`-> `tgetIdBodies`
* `getInternals` -> `tgetInternals`
* `setInternals` -> `tsetInternals`
* Huge changes in the management of cohesive laws:
* concerning the type of law:
* removed `TRI_CZM` law
* added `EXPO_CZM`, `IQS_EXPO_CZM`, `EXPO_CZM_SPRING` and `ISQ_EXPO_CZN_SPRING`
* added `GTN_CZM` and `GTN2_CZM`, but not usable in the solver yet
* management of mixity normal/tangent for these laws changed:
* removed functions of `tact_behav` modules: `SetG1overG2`, `SetS1overS2` and `SetD1overD2`
* instead all tact laws managing mixity must replace parameters `w` and `smax` with `s1`, `s2`, `G1`, `G2` (and maybe `dp1`, `dp2`)
* pressure in crack is no longer set using contact law parameters thus:
* `p` and `p0` are no longer parameters used to define contact laws
* instead the `tact_behav_SetPressureParameters` function must be used
* needed to add `get_external_pressure` function in `CLALp` and `CSASp` functions
* implementation in kernel interactions of TAZ (Temporary Array Zone) accessible with `nlgs_SetTemporaryVariable` and `nlgs_GetTemporaryVariable`
* new examples added :
* `RIGID_2D/4POLYG_SHEAR_CYCLE_CZM`
* `mecaMAILx_2D/2Q4_PressurePostCracking`
* `mecaMAILx_2D/InclusionPreDamage`
* Standardize dilatation of `DISKx`, `xKSID` and `POLYG` contactors:
* Deletion of `DISPx` and `xPSID` now useless modules and all detection module associated
* all three contactors `DISKx`, `xKSID` and `POLYG` now have `SetXdilation`, `SetVdilatation`
* function `SetVther` and `SetXther` of `DISKx` and `POLYG` module deleted instead
* use of `get_Vd_xxxxx`, `set_Vd_xxxxx` and `set_Xd_xxxxx` function in contactor modules instead of `get_vth_xxxxx` and similar
* added example `examples/RIGID_2D/Couette`
* Lot of correction in postprocessing modules
* `DOUBLET TORQUE EVOLUTION` -> `DOUBLETS TORQUE EVOLUTION` (in pre, file names and parameters)
* `DOUBLET INTERACTION` -> `DOUBLET INTERACTIONS` (in pre, file names and parameters)
* removed `QUASI SLIDING CONTACT`
* added the following commands to pre:
* `DENSE SAMPLE COMPACITY`
* `DISPLAY TENSORS`
* `AVERAGE VELOCITY EVOLUTION`
* `DRY CONTACT NATURE`
* `WET CONTACT NATURE`
* `PLPLx_ANALYSIS`
* `COMPACITY EVOLUTION`
* `TRIAXIAL COMPACITY`
* `PRxxx DETECTION`
* `INTER ANALYSIS`
* `VISIBILITY STATE`
Other changes in API:
* Changed `PT3Dx_SetReferenceRadius` to `PT3Dx_SetDisplayRadius`
* Added `CSASp_Trim` function
* Added `CSASp_SetNonSymmetricDetection`
* Added `mecaMAILx_AddBodyForceToFext` function which allow to add a nodal acceleration on a meshed body
* Added contact law `xQS_WET`
* Changed `CLALp_SetNonSymetricDetection` to `CLALp_SetNonSymmetricDetection`
* Fix bug when reading CSASp and CSPRx ascii files
* `DISKx_GetRadius` now correctly use a contactor number in
* From now on `ReadIniVlocRloc` MUST be called AFTER `LoadTactors`
## <a name=2019> version 2019 ##
* General fixes in Core, API and documentation
* Add support of gitlab CI to run non regression tests
* Add possibility to run examples using `Ctest`
* Re-activation of windows cross-compiling script
* Fix in python API of ANN library
* Add `getVerletAdjsz`, `getVerletIantac` and `getAllIdata` accessors to `inter_handler` modules to get contactor verlet map of interactions
* Improve efficiency of VTK file writing when using vtk6 or higher
* Add possibility to build LMGC90 using conda compiler on Windows and Linux
* Add support of `IQS_CLB_RGR` contact law in *pre*
* Add `UseCurrentNonuc0` to `PTPT2` module (like in 3D) and add corresponding test
## Impact on command scripts ###
* to add user fields when calling `WriteDisplayFiles` command, `tactor` keyword must be replaced by `tacts`
## <a name=2018> version 2018 ##
* General fixes in Core, API and documentation
* `T3xxx` mechanical finite element now use 3 Gauss points for stiffness computation
(instead of 1 before). To use only 1 Gauss points there are now `T3lxx` and `Te4lx`
elements
* Add `NARD_ROD` contact law of Artoni and Neveu
* Improve management of big polyhedra
* Improvement of paraview visualization files generations
* All `ReadIni` functions can now take in negative input value to read the *\*.LAST*
files and write the next files from the absolute value of the input value
* Update in MP modules, especially in read/write API
* A newer version of the MatLib is provided by default
* `pre.lecture` real name is now `pre.readMesh` (but is still usable as is)
* Switch all docstrings and error/warning messages left in french to english
* `checkInteractiveCommand` now tries to write *MP_VALUES* files
* `dim` parameters is now mandatory in function `pre.writeBulkBehav`
* In `pre.rigidJonc` and `pre.rigidPlan` last axes MUST be less than the others
* Automatic switch between HDF5 and old OUTBOX directory
and associated documentation added
* Add `rigidsFromMesh3D` in the preprocessor
* `inter_handler_xD_setInternal` accept either a vector to set all value at once,
or an integer and a value to set only one component of the internal array
* Add triangle intersection detection between `POLYR` contactors
* Fixes of periodicity management in 3D
* `CLALp` module can now provide for each contact the value of strain
of its nearest Gauss point
* Default use of MUMPs in 3D if available
* Added notebooks to explain how to add user field in Paraview files
* Added function `RBDY3_CheckEquilibriumState`
* Cleaning of source code (optional non functional `WITH_NEW` compilation flag
and all associated code has been removed)
### Impact on command scripts ###
* It is now recommended to use:
```python
chipy.ReadIni(step)
chipy.ReadIniMpValues(step)
chipy.WriteOut(freq)
chipy.WriteOutMvValues(freq)
```
which will read or write all stored data within the database, instead of specifying all type of files (`DOF`, `GPV`, `VlocRloc`, `MP_VALUES`).
* The function:
```python
chipy.overall_WriteOutMpValues
```
is renamed:
```python
chipy.TimeEvolution_WriteOutMpValues
```
### Impact for **Core** developpers ###
The function:
```fortran
write_out_mp_values
```
is renamed:
```fortran
write_xxx_mp_values
```
## <a name=2017> version 2017 ##
* Better handling of Python 3 on MacOs
* Datafields `Reac_` and `Raux_`, used in accessors, are now forces. New fields `Ireac` and `Iaux_` have been added to access impulsions
* Access to parameters value through variable in `chipy` module
* Use of an `inter_handler_2/3D` interface module instead of accessing each interaction module separately
* Add a `RecupRlocByPosition` for `CLALp` and `CSASp` contacts
* A partial restart of the post-processing files
* Any GMV related features has been deleted
* Possibility to write **HDF5** files for *DOF*, *GPV* and *Interactions*
* Add bindings to *clipper* library to help with the contact detection between polyhedra
* Use of integer parameters instead of string for contact status in solver
* Several fixes on the timers (especially when involving multi-threading)
* Fix of minor bugs here and there
### Impact on command scripts ###
* `Reac_` and `Raux_` fields are not available through getPtrBodyVector (but `Ireac` and Iaux_` are)
* Old interactions accessors (like `DKDKx_GetNbDKDKx`) disappeared
* They are replaced by functions of the form `chipy.inter_handler_2D_getNb( inter_type_id )` where `inter_type_id` is an integer
* The `inter_type_id` is accessible through variables of the `chipy` module (`chipy.DKDKx_ID`):
### Impact for **Core** developpers ###
* `Reac` and `Raux` become `Ireac` and `Iaux` in the body type definition
* Many functions/accessor in detection modules disappeared. The main way to access to interaction is now through the **handlers**
* Look into the `inter_handler_2/3D` module, the `public` sections list the available functions in each module. The first parameter is the type of interactions which is an integer from the `parameter` module.
## <a name=2016> version 2016 ##
There are several changes concerning the **pre** python module.
Remember that a script is provided in *lmgc90_user/src/addons* attempting to update a single script or all python scripts in a directory tree.
If *lmgc90_user/src/addons* is in your `$PATH` environment variable, run:
```shell
update_gen_2016.py gen_sample.py
```
To update *gen_sample.py* script.
You can replace the script name by a directory to try to update all python scripts in it.
There are cases where the script may fail, here is the list of changes so that you can correct you scripts yourself:
* change of `pre_lmgc` submodule name to `pre` (submodule of `pylmgc90`)
* in `tact_behav` constructor, argument name `type` is replaced by `law`
* in `model` constructor, argument name `type` is replaced by `physics`
* in `material` constructor, argument name`type` is replaced by `materialType`
* in `avatar.addContactors` method, argument name `type` is replaced by `shape`
* in `avatar.rotate` method, argument name `type` is replaced by `description`
* in `avatar.imposeDrivenDof` method, argument name `type` is replaced by `description`
* in `postpro_command` constructor, argument name `type` is replaced by `name`
* in `buildMesh2D` function, argument name `type_mesh` is replaced by `mesh_type`
* in `brick2D.deformableBrick` method, argument name `type` is replaced by `mesh_type`
* in `brick2D.explodedDeformableBrick` method, argument name `type` is replaced by `mesh_type`
* in `avatar` constructor, argument named `type` has been removed
* in `node` constructor, argument named `type` has been removed
* in `element` constructor, argument named `type` is replaced by `elem_dim` and the corresponding value must be the geometrical dimension of the element
****
| [back](./Home) |
# Release notes #
This page aims at keeping major information regarding the changes of function names, argument names or whatever between
the different versions of LMGC90.
This is not release notes 'stricto sensu'.
* [2023->2024](#2024)
* [2022->2023](#2023)
* [2021->2022](#2022)
* [2020->2021](#2021)
* [2019->2020](#2020)
* [2018->2019](#2019)
* [2017->2018](#2018)
* [2016->2017](#2017)
* [2015->2016](#2016)
## <a name=2024> version 2024 ##
API update:
* Default value of `addRegistersToDisplay` is now `True`
* Some optional VTK files writing move from Fortran core to Python:
* `lib_vtkio` is removed from the core and the installed third party libraries
* `f2f` files are written by adding `write_f2f=True` in `OpenDisplayFiles`
* central kernel files are written by adding `write_ck=True` in `OpenDisplayFiles`
* Gauss point files are written by:
* activating by listing the fields to display in `OpenDisplayFiles` with `mecagp_field` and/or `thergp_field`
* explicitely asked by setting `write_gp=True` in `WriteDisplayFiles`
* Change `inter` optional keyword to `ptc` to add field to `WriteDisplayFiles` for interactions
* Using `record<0` in `io_hdf5_read` will automatically read last available record
* Remove support of VTK 6
* Cmake minimum version is now 3.16
Fix:
* Internal gap computation in `elastic_repell_clb_g0` and `iqs_expo_czm_spring` contact law
* Detection now ignore interactions where all supported dof are velocy driven
* Status in `CZM_EXPO_SPRING` contact law
* Correct `POLYD` use in `pre` and `core`
* f2f related vtk block are displayed in end of time step configuration instead of `TT`
* error in `ComputeRnod` in 3D
* Correct update of `beta` in `*EXPO_CZM_SPRING` contact laws
* Quasi-Static time integrator to work with any time step
* Use `tiny` instead of arbitrary `1e-14` precision check in CZM laws
* Possibility to have up to 9999999 elements or nodes with `MAILx` bodies
* Slight mistakes in tutorials notebooks
* Remove some warnings in `pre.visuAvatars` to greatly accelerate the function
* Add management of `xKSID` contactors in `pre.visuAvatars`
* Fix filtering of visible rigid/tact/mecaFE when generating VTK files
* Fix error in `CSASp` pedigree describing candidate as `CYLND` in hdf5 files and `getInteractions`
* Rename mecaMAILx_3D/discreteFE example to mecaMAILx_3D/discreteFE_suspendedblock and add corresponding gen_sample.py
* Fix TOSI_CZM* laws to use 2 energy parameters for mode I and mode II/III
New:
* Contact laws to manage plasticity within CZM
* new laws : `IQS_EXPO_CZM_P`, `EXPO_CZM_P`, `IQS_EXPO_CZM_SPRING_P`, `EXPO_CZM_SPRING_P`
* same parameters as their `*EXPO_CZM*` counterparts plus two others for plasticity:
* `mu_g` to set the rate of damage energy over total energy : $\mu_g = \frac{G_d}{G_f}$
* `Eta` a truncation parameter of expo laws
* Allow to use `visible` status on driven dof of mecaMAILx bodies:
* `mecaMAILx_SetVisibleVlocyDrivenDof`
* `mecaMAILx_SetInvisibleVlocyDrivenDof`
* `mecaMAILx_UpdateVlocyDrivenDofStructures` must be called LAST
* Support of clipper library version 2
* default in new build
* activate in existing build with `cmake . -DCLIPPER_VERSION=2`
* When using `PRPRx_UseNcF2fExplicitDetection`
* manage properly the case where the intersection polygon of two faces is not connex
* Detection method `PRPRx` used by stono
* can mix face to face aspect with non-convex ones
* manage properly the case where the intersection polygon of two faces is not connex
* can use a `decompression` parameter to select contact point position regarding:
* the convex hull of the intersection polygon
* the intersection polygon and its intersection with the central kernel
* manage properly the case where the intersection polygon of two faces is not connex
* added keyword:
* `PRPRx_UseStoDetection` : activate detection
* `PRPRx_ForceF2fDetection` : force face to face within sto detection
* `PRPRx_ForceNcDetection` : force non convex within sto detection
* `PRPRx_GetF2fOutlines` : get the intersection polygon in the `f2f` structure
* `PRPRx_GetF2fStress` : use optimization to evaluate the linear compression stress
* `PRPRx_GetF2fCentralKernel` : compute the central kernel
* Utilities to compute mechanical values of plane contact surface:
* `MecaPolyg_CentralKernel`
* `MecaPolyg_StressField`
* Paraview file generation completely reworked:
* Now a single paraview file is generated for each time step
* This file use the `MultiBlock` logic
* The content is almost the same a the union of former files
* Exception is the `f2f` file content which is split in two blocks:
* `Face2Face` component with the outline of the contact structure
* `PressureCenter` component with only the point to draw pressure line
* `ContactPointContour` block appears
* fields `icdbdy`, `ianbdy`, `icdtac`, `iantac` were added to these blocks
* And the `ck` block content now hold only the geometrical part of the central kernel
* The argument `write_ck` of the `OpenDisplayFiles` is replaced by `write_f2f` with integer value:
* 0: do not write any related block
* 1: write only the `Face2Face` and `PressureCenter` blocks
* 2: add the `CentralKernel` block to the previous ones
* 3: add the `CompressionStress` block to the previous ones
* Add `Shape` field with contactor id parameter in vtk `tactor` block
* All paraview macros were updated and improved
* Add support of ubuntu 24
* Add some basics tests on python/numpy
* Add a restart parameter to computation macros
* Add joint elements:
* In preprocessor
* linear bulk elements of type : `J2xx2`, `J3xx3`, `J4xx3`
* associated material must be of type :
* `JELAS` (with `stiffness` parameter)
* `J__MC` (with `stiffness`, `consolidation` and `mc` parameters)
* `JFCZM` (with `stiffness`, `consolidation` and `fczm` parameters)
* In Chipy wrapper added `mecaMAILx_GetGpAllJoint`
* Added examples in `mecaMAILx_3D` directory:
* `1J_compression+shear`
* `1J_traction`
* `jointFE_Arche`
* `jointFE_compression+shear`
* `jointFE_traction+shear`
* `jointFE_traction`
Doc:
* Detail list of datatype keyword when using GetBodyVector and other similar function
* Update notebook explaination regarding interactions
## <a name=2023> version 2023 ##
Added features:
* thermal dilatation management for built-in and demmefi models of mecaMAILx
* In HDF5 files the `rdata` part of `internals` in interaction is now of minimum needed size
* Add new contact laws:
* `ELASTIC_REPELL_CLB_adapt` to change stiffness through internal
* `TOSI_CZM` and `TOSI_CZM_INCRE` laws
* SPPRx detection module (with periodic management)
* periodic detection of CDCDx module
* the NLGS solver now stops with an error if a `NaN` value is met
* Add `PRPRx_SetInternalSurface` to be able to override the value of contact surface within triangle intersection detection
* `post` submodule of `chipy` to generate paraview files picturing the central kernel criteria (PRPRx with f2f detection)
* `inters.vtu` files are no longer generated only `ptc.vtu` files
* `ptc.vtu` files are now generated from the `chipy.getInteractions`
* add macros to make access and visualization of internal variables of interactions easier
* add macros for paraview (10 and 11) to add glyph/tubes on ptc files and ck (Central Kernel) files.
Changes in API:
* `MAX_INTERNAL_TACTS` is now of size 19 by default
* Some macro of `pylmgc90.chipy` now raise an error if `SetDimension` has not been called beforehand
* Argument `step` has been renamed to `record` in all the `ReadIni` macros
* Removed all obsolete read/write of binary file using the old OUTBOX format
* `CloseDisplayFiles` is now empty function and no longer needed
* `chipy.WriteDisplayFiles` no longer use the `ref_radius` and `normal_orient` parameters
* when adding user field to `ptc.vtu` files in chipy.WriteDisplayFiles` now needs an numpy array instead of a dictionary
* `registerInterInternals` take the internal variable (or a list of them) to work with
* `addRegistersToDisplay` to automatically add the internal variable to the WriteDisplayFiles calls
* `getInternalArray` to get the internal array associated with an interaction array
* `setInternalArray` to set the internal value of a list of interactions
* `getInteractions` can now get "this" or "verlet" interactions, with byte-string or integer id, for the parameters fields
Added functions to `chipy`:
* `WriteLast` added to macros
* `io_hdf5_write_last(fname)` allowing to write last state in the input file
* `inter_handler_xD_getNbRecup` was added (and corresponding getter in detection module removed)
* `inter_handler_xD_tgetIData` was added
* `PRPRx_GetF2f2Inters` to get the *face to face* to interaction mapping
* `CYLND_GetShape` to access cylinder axis length values
Added functions to `pre`:
* method `avatar.updateReferenceConfig` to update the reference configuration of the bodie(s) to the current one
Fixes:
* in Demmefi managements models (especially regarding `endo3D`)
* bug in `CDCDx` contact detection
* `pre.readState` when reading with `xxl` interactions
* sort content when using `ExternalFEM` and in `ExternalDetection` for Xper coupling
* SPPRx detection when contact point is not in a PR face
* PRASp computation of VN in prjj
* Add missing pre.mesh function in sphinx documentation
* correct read/write regarding stress of mecax in HDF5 files
* pre.IO.writeVlocRloc if inters is a list and not a numpy array
* bug in PRPRx where unwanted contacts where added with 0 coordinates
* some drvdof where ignored if index of body was greater than 99999
* inertia computation error of CYLND in `pre`
* fix 'COORDINATION_NUMBER' postpro command
* fix 'BODY TRACKING' to correctly follow rigid 3D body instead of first contactors
* use CL/AL and CS/AS mesh id instead of global id in .vtu files
* fix status of `CZM` contact laws
* fix error in `.pvd` paraview files in case of restart
## <a name=2022> version 2022 ##
* General fix in Core, API, build process and documentation
* Add `computation` macro submodule to provide the functions
* `initialize`
* `initialize_non_linear`
* `compute_one_step`
* `compute_one_step_non_linear`
* Add new matlib version (2021-1)
* Remove oldest matlib
* Read material file directly from matlib
* Use `density` as a field for `mecaMAILx` with matlib
* Specify field dependency to a parameter with a file
* Add management of cluster of `CYLND`
* Quasi-static integrator for `mecaMAILx`
* Mass scaling of `mecaMAILx`
* Use force instead of pressure within `nlgs_3D` solver for `CSASp` and `CSPRx`
* Add a function to compute a PDF of pressure
* Management of initial gaps or overlaps for `EXPO_CZM` laws
* Possible flush of postpro files during computation
* A post.py script to manage POSTPRO files
* `RecupRlocByPosition` for `CSPRx` contacts
* Add internal variables values to display files
* Max internal in contacts now default to 8 (instead of 6 before)
* Add access to wood orthotropic frame from `user` module
* Add possibility to only compute internal forces in `mecaMAILx`
* First version of SP/PR detection
* HDF5 now store a version number to handle evolution of format
* Access to a structured numpy array of all `this` interactions
* `inter_handler_xD_GetAll` now includes the `vloc` values (not displayed in paraview yet)
* Interaction type `T_inter` now use subcontactor id (`cdsci` and `ansci`) field instead of `icdver`, `ianal`, etc
Fixes:
* Fix VlocRloc ascii file output for some contacts where `lantac` was missing
* Remove unused `lantac` parameter from some VlocRloc ascii files
* Fix COORDINATION_NUMBER postpro file
* Fix trim in discrete geometry and add extension management
* Tidy Newton-Raphson routines management in TimeEvolution/overall module
* Fix cohesion status management in common plane detection
* Fix bugs for `EXPO_CZM_SPRING` laws
* Area of contact computation when using `TriangleIntersections` detection of `PRPRx`
* Fix `DKPLx` contact detection
* Fix `CSASp` contact detection
* Fix in `BODY TRACKING` to really track `RBDY3` and not its first contactor
* Fix installation path when changing of `VENV_PATH` with cmake
* Use CL/AL and CS/AS mesh id instead of global id in .vtu files
Added functions to `chipy`:
* `CSASp_AddReac`, `CSPRx_AddReac`
* `CSASp_AssumeOldFiles`
* `nlgs_3D_CutOpenCZM`
* `nlgs_3D_ManageInterpenetratedCZM`
* `CSxxx_GetAll`
* `mecaMAILx_GetInternalVariables`
* `mecaMAILx_ComputePDFPressure`
* `mecaMAILx_MassScaling`
* `postpro_FlushDuringComputation`, `postpro_3D_FlushDuringComputation`
* `RBDY3_GetDofStatus`
* `Integrator_InitQS`
* `user_getWoodFrame`
* `mecaMAILx_ ComputeFint`
* `inter_handler_xD_getNbRecup` was added (and corresponding getter in detection module removed)
* `inter_handler_xD_tgetIData`
Changes in API:
* in `pre.rigidCylinder` `h` parameter is now the half height of cylinder
## <a name=2021> version 2021 ##
* General fix in Core, API and documentation
* `CYLND` contactor now represent pill (cylinder capped with spheres)
* `CDCDx` contact detection has been fixed accordingly
* Add an `ExternalModelHandler` allowing to define a use either *MatLib* or *demmefi* libraries
* in `pre.model` constructor, `is_external` now takes the value `no`, `MatL_` or `Demfi`
* Improving management of *POSTPRO* files in case of restart
* Improve *POSTPRO* files format:
* all real fields use `ES` Fortran format instead of `D`
* time field is now written on 15 characters (against 14 beforehand)
* standard file name format with step and body number on 7 digits
* Add macro:
* `pre.writeDatbox` to drop all containers in DATBOX directory
* `chipy.ReadDatbox` to read/load all files from DATBOX directory in one go
* When reading a state from and HDF5 file, interactions as stored in `verlet` like for VlocRloc.OUT files
* Replacing functions:
* `xxxxx_StockRloc` -> `inter_handler_xD_stockRloc`
* `xxxx_RecupRloc` -> `inter_handler_xD_recupRloc`
* Adding a lot of tutorial material as jupyter notebook
* Adding a reader of DATBOX to generate pre container, have look to:
* `pre.readDatbox`
* `pre.readState`
* There is period of two months in which the internal parameter numbering changed for contactors and contact. If a hdf5 file as been generated before this parameters where stored inside the file, there is no way to know what parameter numbering to use. In case of problem, the `io_hdf5_fixVersion` might help.
## <a name=2020> version 2020 ##
* General fixes in Core, API and documentation
* Minimum required version of CMake is now 3.0
* Minimum required version of gcc suite is now 4.5
* Support of gcc 10
* Support of ubuntu 20 and ArchLinux for building
* Better handling of link with Siconos library
* Gmsh:
* update `pre.readMesh` function to handle gmsh file formats 4.0 and 4.1
* add a `gmshutils` submodule to `pylmgc90`, available only if `gmsh` python module is available
* MatLib:
* Possibility to set material as nodal field
* as such `ExternalModels_CheckProperties` is now split in `ExternalModels_StoreProperties` and `xxxxMAILx_CheckProperties`
* HDF5:
* better detection
* add script to build and use for Anaconda on Windows
* add parameters association to `Help` group
* add some tentative example of postprocessing the files in `examples/Tutorial/post`
* Interaction API: partial disambiguation of interaction accessors in inter_handler wrap modules using `t` to name `this` interaction:
* `getNb` -> `tgetNb`
* `getTactLawNb` -> `tgetTactLawNb`
* `getIdBodies`-> `tgetIdBodies`
* `getInternals` -> `tgetInternals`
* `setInternals` -> `tsetInternals`
* Huge changes in the management of cohesive laws:
* concerning the type of law:
* removed `TRI_CZM` law
* added `EXPO_CZM`, `IQS_EXPO_CZM`, `EXPO_CZM_SPRING` and `ISQ_EXPO_CZN_SPRING`
* added `GTN_CZM` and `GTN2_CZM`, but not usable in the solver yet
* management of mixity normal/tangent for these laws changed:
* removed functions of `tact_behav` modules: `SetG1overG2`, `SetS1overS2` and `SetD1overD2`
* instead all tact laws managing mixity must replace parameters `w` and `smax` with `s1`, `s2`, `G1`, `G2` (and maybe `dp1`, `dp2`)
* pressure in crack is no longer set using contact law parameters thus:
* `p` and `p0` are no longer parameters used to define contact laws
* instead the `tact_behav_SetPressureParameters` function must be used
* needed to add `get_external_pressure` function in `CLALp` and `CSASp` functions
* implementation in kernel interactions of TAZ (Temporary Array Zone) accessible with `nlgs_SetTemporaryVariable` and `nlgs_GetTemporaryVariable`
* new examples added :
* `RIGID_2D/4POLYG_SHEAR_CYCLE_CZM`
* `mecaMAILx_2D/2Q4_PressurePostCracking`
* `mecaMAILx_2D/InclusionPreDamage`
* Standardize dilatation of `DISKx`, `xKSID` and `POLYG` contactors:
* Deletion of `DISPx` and `xPSID` now useless modules and all detection module associated
* all three contactors `DISKx`, `xKSID` and `POLYG` now have `SetXdilation`, `SetVdilatation`
* function `SetVther` and `SetXther` of `DISKx` and `POLYG` module deleted instead
* use of `get_Vd_xxxxx`, `set_Vd_xxxxx` and `set_Xd_xxxxx` function in contactor modules instead of `get_vth_xxxxx` and similar
* added example `examples/RIGID_2D/Couette`
* Lot of correction in postprocessing modules
* `DOUBLET TORQUE EVOLUTION` -> `DOUBLETS TORQUE EVOLUTION` (in pre, file names and parameters)
* `DOUBLET INTERACTION` -> `DOUBLET INTERACTIONS` (in pre, file names and parameters)
* removed `QUASI SLIDING CONTACT`
* added the following commands to pre:
* `DENSE SAMPLE COMPACITY`
* `DISPLAY TENSORS`
* `AVERAGE VELOCITY EVOLUTION`
* `DRY CONTACT NATURE`
* `WET CONTACT NATURE`
* `PLPLx_ANALYSIS`
* `COMPACITY EVOLUTION`
* `TRIAXIAL COMPACITY`
* `PRxxx DETECTION`
* `INTER ANALYSIS`
* `VISIBILITY STATE`
Other changes in API:
* Changed `PT3Dx_SetReferenceRadius` to `PT3Dx_SetDisplayRadius`
* Added `CSASp_Trim` function
* Added `CSASp_SetNonSymmetricDetection`
* Added `mecaMAILx_AddBodyForceToFext` function which allow to add a nodal acceleration on a meshed body
* Added contact law `xQS_WET`
* Changed `CLALp_SetNonSymetricDetection` to `CLALp_SetNonSymmetricDetection`
* Fix bug when reading CSASp and CSPRx ascii files
* `DISKx_GetRadius` now correctly use a contactor number in
* From now on `ReadIniVlocRloc` MUST be called AFTER `LoadTactors`
## <a name=2019> version 2019 ##
* General fixes in Core, API and documentation
* Add support of gitlab CI to run non regression tests
* Add possibility to run examples using `Ctest`
* Re-activation of windows cross-compiling script
* Fix in python API of ANN library
* Add `getVerletAdjsz`, `getVerletIantac` and `getAllIdata` accessors to `inter_handler` modules to get contactor verlet map of interactions
* Improve efficiency of VTK file writing when using vtk6 or higher
* Add possibility to build LMGC90 using conda compiler on Windows and Linux
* Add support of `IQS_CLB_RGR` contact law in *pre*
* Add `UseCurrentNonuc0` to `PTPT2` module (like in 3D) and add corresponding test
## Impact on command scripts ###
* to add user fields when calling `WriteDisplayFiles` command, `tactor` keyword must be replaced by `tacts`
## <a name=2018> version 2018 ##
* General fixes in Core, API and documentation
* `T3xxx` mechanical finite element now use 3 Gauss points for stiffness computation
(instead of 1 before). To use only 1 Gauss points there are now `T3lxx` and `Te4lx`
elements
* Add `NARD_ROD` contact law of Artoni and Neveu
* Improve management of big polyhedra
* Improvement of paraview visualization files generations
* All `ReadIni` functions can now take in negative input value to read the *\*.LAST*
files and write the next files from the absolute value of the input value
* Update in MP modules, especially in read/write API
* A newer version of the MatLib is provided by default
* `pre.lecture` real name is now `pre.readMesh` (but is still usable as is)
* Switch all docstrings and error/warning messages left in french to english
* `checkInteractiveCommand` now tries to write *MP_VALUES* files
* `dim` parameters is now mandatory in function `pre.writeBulkBehav`
* In `pre.rigidJonc` and `pre.rigidPlan` last axes MUST be less than the others
* Automatic switch between HDF5 and old OUTBOX directory
and associated documentation added
* Add `rigidsFromMesh3D` in the preprocessor
* `inter_handler_xD_setInternal` accept either a vector to set all value at once,
or an integer and a value to set only one component of the internal array
* Add triangle intersection detection between `POLYR` contactors
* Fixes of periodicity management in 3D
* `CLALp` module can now provide for each contact the value of strain
of its nearest Gauss point
* Default use of MUMPs in 3D if available
* Added notebooks to explain how to add user field in Paraview files
* Added function `RBDY3_CheckEquilibriumState`
* Cleaning of source code (optional non functional `WITH_NEW` compilation flag
and all associated code has been removed)
### Impact on command scripts ###
* It is now recommended to use:
```python
chipy.ReadIni(step)
chipy.ReadIniMpValues(step)
chipy.WriteOut(freq)
chipy.WriteOutMvValues(freq)
```
which will read or write all stored data within the database, instead of specifying all type of files (`DOF`, `GPV`, `VlocRloc`, `MP_VALUES`).
* The function:
```python
chipy.overall_WriteOutMpValues
```
is renamed:
```python
chipy.TimeEvolution_WriteOutMpValues
```
### Impact for **Core** developpers ###
The function:
```fortran
write_out_mp_values
```
is renamed:
```fortran
write_xxx_mp_values
```
## <a name=2017> version 2017 ##
* Better handling of Python 3 on MacOs
* Datafields `Reac_` and `Raux_`, used in accessors, are now forces. New fields `Ireac` and `Iaux_` have been added to access impulsions
* Access to parameters value through variable in `chipy` module
* Use of an `inter_handler_2/3D` interface module instead of accessing each interaction module separately
* Add a `RecupRlocByPosition` for `CLALp` and `CSASp` contacts
* A partial restart of the post-processing files
* Any GMV related features has been deleted
* Possibility to write **HDF5** files for *DOF*, *GPV* and *Interactions*
* Add bindings to *clipper* library to help with the contact detection between polyhedra
* Use of integer parameters instead of string for contact status in solver
* Several fixes on the timers (especially when involving multi-threading)
* Fix of minor bugs here and there
### Impact on command scripts ###
* `Reac_` and `Raux_` fields are not available through getPtrBodyVector (but `Ireac` and Iaux_` are)
* Old interactions accessors (like `DKDKx_GetNbDKDKx`) disappeared
* They are replaced by functions of the form `chipy.inter_handler_2D_getNb( inter_type_id )` where `inter_type_id` is an integer
* The `inter_type_id` is accessible through variables of the `chipy` module (`chipy.DKDKx_ID`):
### Impact for **Core** developpers ###
* `Reac` and `Raux` become `Ireac` and `Iaux` in the body type definition
* Many functions/accessor in detection modules disappeared. The main way to access to interaction is now through the **handlers**
* Look into the `inter_handler_2/3D` module, the `public` sections list the available functions in each module. The first parameter is the type of interactions which is an integer from the `parameter` module.
## <a name=2016> version 2016 ##
There are several changes concerning the **pre** python module.
Remember that a script is provided in *lmgc90_user/src/addons* attempting to update a single script or all python scripts in a directory tree.
If *lmgc90_user/src/addons* is in your `$PATH` environment variable, run:
```shell
update_gen_2016.py gen_sample.py
```
To update *gen_sample.py* script.
You can replace the script name by a directory to try to update all python scripts in it.
There are cases where the script may fail, here is the list of changes so that you can correct you scripts yourself:
* change of `pre_lmgc` submodule name to `pre` (submodule of `pylmgc90`)
* in `tact_behav` constructor, argument name `type` is replaced by `law`
* in `model` constructor, argument name `type` is replaced by `physics`
* in `material` constructor, argument name`type` is replaced by `materialType`
* in `avatar.addContactors` method, argument name `type` is replaced by `shape`
* in `avatar.rotate` method, argument name `type` is replaced by `description`
* in `avatar.imposeDrivenDof` method, argument name `type` is replaced by `description`
* in `postpro_command` constructor, argument name `type` is replaced by `name`
* in `buildMesh2D` function, argument name `type_mesh` is replaced by `mesh_type`
* in `brick2D.deformableBrick` method, argument name `type` is replaced by `mesh_type`
* in `brick2D.explodedDeformableBrick` method, argument name `type` is replaced by `mesh_type`
* in `avatar` constructor, argument named `type` has been removed
* in `node` constructor, argument named `type` has been removed
* in `element` constructor, argument named `type` is replaced by `elem_dim` and the corresponding value must be the geometrical dimension of the element
****
| [back](./Home) |
|:---------------:|
\ No newline at end of file