DOI: 10.5281/zenodo.14861536
title: Data of "Stochastic Deep Material Networks as Efficient Surrogates for Stochastic Homogenisation of Non-linear Heterogeneous Materials"

description: Stochastic Deep Material Networks as Efficient Surrogates for Stochastic Homogenisation of Non-linear Heterogeneous Materials

 

This directory contains the data and algorithms generated in publication1

Table of Contents



Dependencies and Prerequisites

Structure of Repository

Images/Geometries and IB-DMN training data of the 6 SVEs

Stochastic analysis - Direct numerical simulations of SVEs

Training of the reference IB-DMN

Stochastic analysis - Stochastic IB-DMN

Reproduce paper[^1] figures


Dependencies and Prerequisites

 





Python, pandas, matplotlib, texttabble and latextable are pre requisites for visualizing and navigating the data.




For generating mesh and for vizualization, gmsh (www.gmsh.info) is required.




For running simulations, cm3Libraries (http://www.ltas-cm3.ulg.ac.be/openSource.htm) is required.



Instructions using apt & pip3 package manager

Instructions for Debian/Ubuntu based workstations are as follows.

python, pandas and dependencies



 sudo apt install python3 python3-scipy libpython3-dev python3-numpy python3-pandas


matplotlib, texttabble and latextable



 pip3 install matplotlib texttable latextable


Pytorch



Without GPU




 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu




With GPU




 pip3 install torch torchvision torchaudio


Libtorch (only when using cm3Libraries)



Without GPU: In a local directory (e.g. ~/local with export TORCHDIR=$HOME/local/libtorch)




 wget wget https://download.pytorch.org/libtorch/cpu/libtorch-shared-with-deps-2.3.0%2Bcpu.zip 
unzip libtorch-shared-with-deps-2.1.1+cpu.zip




With GPU: In a local directory (e.g. ~/local with export TORCHDIR=$HOME/local/libtorch)




 wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.1.1%2Bcu121.zip 
  unzip libtorch-shared-with-deps-2.1.1+cu121.zip


Structure of Repository



6SVE_Example: Images/Geometries and IB-DMN training data of the 6 SVEs.

Vf_Mat: Training of the reference IB-DMN.

Stochastic_DNS_LinearHardening: Stochastic analysis - Direct numerical simulations of SVEs

Stochastic analysis - Stochastic IB-DMN: Stochastic analysis - Stochastic IB-DMN


Images/Geometries and IB-DMN training data of the 6 SVEs: 6SVE_Example



6SVE_Example/6SVE_Data: Images/Geometries and IB-DMN training data of the 6 SVEs

6SVE_Example/6SVE_DNS:




6SVE_Example/6SVE_DNS/DNS_LinearHardening:



Direct numerical simulations (require cm3Libraries) on the 6 SVEs in a finite-deformation setting: python3 RVE_Test.py

TestKey = 'Shear' or TestKey = 'Tensile' or TestKey = 'UniStrain' in RVE_Test.py to run the test in uniaxial stress, shearing or uniaxial strain loading conditions

Results are stored in 6SVE_Example/DNS_LinearHardening/Path_Res



6SVE_Example/6SVE_DNS/DNS_LinearHardening_SmallDefo:



Direct numerical simulations (require cm3Libraries) on the 6 SVEs in a small-deformation setting: python3 RVE_Test.py

Tensile = False or Tensile = True in RVE_Test.py to run the test in uniaxial stress or uniaxial strain loading conditions

Results are stored in 6SVE_Example/6SVE_DNS/DNS_LinearHardening_SmallDefo/Path_Res






6SVE_Example/6SVE_DMN:




6SVE_Example/6SVE_DMN/NNW_Tool.py:



Defines the class of IB-DMN and loss function

Called in the following files (not stand alone)



6SVE_Example/6SVE_DMN/WriteSingleRVEPara.py:



Training IB-DMN for single SVE

Training = True for warm start or not

level = 5 to select the IB-DMN level

Results are written in datafile in directory 6SVE_Example/6SVE_DMN/DMNPara for nonlinear simulations



6SVE_Example/6SVE_DMN/SimulationDMN.py:



Nonlinear IB-DMN simulations (require cm3Libraries) in a finite deformation setting

Use the trained IB-DMN parameters stored in 6SVE_Example/6SVE_DMN/DMNPara

TestKey = 'Shear' or TestKey = 'Tensile' or TestKey = 'UniStrain' in RVE_Test.py to run the test in uniaxial stress, shearing or uniaxial strain loading conditions

level = 4, level = 5 or level = 6 specifies the level of the IB-DMN to be used

SVE number and training case can be manually specified at the end of the file, e.g; f_Para =  './DMNPara/rve6_Level'+str(level)+'_300Data.dat' and Id = prefix+'rve6_Level'+str(level)+'_'+Load+'Res300.csv'

Results are stored in 6SVE_Example/6SVE_DMN/DMN_simulation



6SVE_Example/6SVE_DMN/SmallDefoDMN.py:



Nonlinear IB-DMN simulations (require cm3Libraries) in a small deformation setting

Use the trained IB-DMN parameters stored in 6SVE_Example/6SVE_DMN/DMNPara

Results are stored in 6SVE_Example/6SVE_DMN/DMN_simulation_SmallDefo



6SVE_Example/6SVE_DMN/Plot_DNS_DMN.py:



Plot the comparison of the results of nonlinear simulations using IB-DMN and DNS

Load = 'Tensile' or Load = 'Shear' or Load = 'UniStrain' to vizualize the results in uniaxial stress, shearing or uniaxial strain loading conditions

Use LargeDefo = True to plot results in finite-strain setting or use LargeDefo = False for the small strain setting (only Load = 'Tensile' is possible then)



6SVE_Example/6SVE_DMN/DMNPara_rve6.py:



Training IB-DMN for SVE 6 with 300 sets of material properties

Training = True for warm start or not

level = 5 to select the IB-DMN level

Results are stored in 6SVE_Example/6SVE_DMN/DMNPara for nonlinear simulations



6SVE_Example/6SVE_DMN/Plot_rve6_DMN.py:



Plot the comparison of the results of nonlinear simulations of SVE 6 using DNS and DMNs which are trained successively with 10 and 300 sets of material properties




Stochastic analysis - Direct numerical simulations of SVEs: Stochastic_DNS_LinearHardening



Functions and data used to generate SVE of UD fiber reinforced composites following 2:




Stochastic_DNS_LinearHardening/utils.py, Stochastic_DNS_LinearHardening/Ana_Gen_MicStru.py, Stochastic_DNS_LinearHardening/Copula_Grvs.py and data from UD analysis in directory Stochastic_DNS_LinearHardening/UD_CopulaData




Test setup




Stochastic_DNS_LinearHardening/TensileTest.py, Stochastic_DNS_LinearHardening/ShearTest.py and Stochastic_DNS_LinearHardening/UniStrain.py describe the BC and material models of the DNS under uniaxial stress, shear or uniaxial strain

Used by the following function (no stand alone)




Generate SVEs and running simulations




Stochastic_DNS_LinearHardening/MicroSample_UDComp.py Generates the SVEs and runs the DNS (requires cm3Libraries)

Calls previously listed files to generate SVE

Nsim = 100  to set the number of SVE realisations to be generated

TestKey = 'Tensile' or TestKey = 'Shear' or TestKey = 'UniStrain' to run under uniaxial stress, shear or uniaxial strain

minVf = 0.3 and maxVf = 0.35 to set the bounds on the fiber volume fraction

prefix = './Res'+TestKey+'/Vf_03_035/' sets the directory where to save the results (to be consistent with the volume fraction bounds and directory should exist)

Results of simulations stored in Stochastic_DNS_LinearHardening/ResTensile and Stochastic_DNS_LinearHardening/ResShear for uniaxial stress and shear


Training of the reference IB-DMN: Vf_Mat



Training of general IB-DMN:




Vf_Mat/NNW_Tool.py:



Defines the class of IB-DMN and Data shuffle

Called in the following files (not stand alone)



Vf_Mat/Vf_Mat.py:



Training of the reference IB-DMN

Trained reference IB-DMN parameters are stored in Vf_Mat/ResNNW




Stochastic analysis - Stochastic IB-DMN: Stochastic_DMN_LinearHardening



Files used to initialize the IB-DMN material law of levels 4, 5 and 6:




Stochastic_DMN_LinearHardening/Para_Level4.dat, Stochastic_DMN_LinearHardening/Para_Level5.dat and Stochastic_DMN_LinearHardening/Para_Level6.dat




Adding a random perturbation on the reference IB-DMN parameters and perform nonlinear simulations:




Stochastic_DMN_LinearHardening/Tool.py



Called by the following file (not stand alone)



Stochastic_DMN_LinearHardening/GenParaDMN.py



GenPara = False is adding perturbation on the reference IB-DMN

GenPara = True is generating a random IB-DMN

Load = 'Tensile' or Load = 'Shear' to run under uniaxial stress or shearing

FigureOnly = True to plot figures using archieved results, FigureOnly = False to generate new stochastic IB-DMN, new data and run tests (requires cm3Libraries) before plotting figures

Id_Para = '_partial' or Id_Para = '_a25_b05', Id_Para = '_a5_b075', Id_Para = '_a10_b05' defines the saving directory and if only partial distribution (in ln=[depth] and lw=[depth]) or not are considered

a= 2.5 and b = 0.5 define the distribution parameters

``level = 4, level = 5``` or ```level = 6``` specifies the level of the IB-DMN to be used

Results are stored in ./Res* for the different loading cases and combinations of parameters a and b of the random perturbation distributions (partial or not).




Reproduce paper1 figures





Fig. 4: The images are in the diretory 6SVE_Example/6SVE_Data




Fig. 5:



Load = 'Tensile' or Load = 'Shear' or Load = 'UniStrain' to vizualize the results under uniaxial stress, shearing or uniaxial strain loading conditions

Use LargeDefo = True in 6SVE_Example/6SVE_DMN/Plot_DNS_DMN.py

The command to be run from the directory 6SVE_Example/6SVE_DMN is






 python3 Plot_DNS_DMN.py




Fig. 6:



The command to be run from the root directory . to plot the beta distribution is






 python3 Beta.py




Fig. 7, Fig. 8, and Fig. 9:



Set FigureOnly = True

Parameters: Id_Para = '_a25_b05', a=2.5, b=0.5

Use successively level = 4, level = 5, and level = 6

Use successively Load = 'Shear' and Load = 'Tensile'

The command to be run from the directory Stochastic_DMN_LinearHardening is






 python3  GenParaDMN.py




Fig. 10 and Fig. 11:



Set FigureOnly = True

Parameter: level = 5

Use successively Id_Para = '_a25_b05', a=2.5, b=0.5, then Id_Para = '_a5_b075', a=5, b=0.75, and then Id_Para = '_a10_b05', a=10, b=0.5

Use successively Load = 'Shear' and Load = 'Tensile'

The command to be run from the directory Stochastic_DMN_LinearHardening is






 python3  GenParaDMN.py




Fig. 12:



Set FigureOnly = True

Parameters: Id_Para = '_partial', ln=[0,1,2,3,4], lw=[], a=2.5, b=0.5 and level = 5

Use successively Load = 'Shear' and Load = 'Tensile'

The command to be run from the directory Stochastic_DMN_LinearHardening is






 python3  GenParaDMN.py




Fig. 13:



Set FigureOnly = True

Parameters: Id_Para = '_partial', ln=[], lw=[0,1,2,3], a=2.5, b=0.5 and level = 5 

Use successively Load = 'Shear' and Load = 'Tensile'

The command to be run from the directory Stochastic_DMN_LinearHardening is






 python3  GenParaDMN.py




Fig. 14:



Set FigureOnly = True

Parameters: Id_Para = '_partial', ln=[4], lw=[3], a=2.5, b=0.5 and level = 5 

Use successively Load = 'Shear' and Load = 'Tensile'

The command to be run from the directory Stochastic_DMN_LinearHardening is






 python3  GenParaDMN.py




Fig. 15:



Set FigureOnly = True

Parameters: Id_Para = '_partial', ln=[3], lw=[2], a=2.5, b=0.5 and level = 5 

Use successively Load = 'Shear' and Load = 'Tensile'

The command to be run from the directory Stochastic_DMN_LinearHardening is






 python3  GenParaDMN.py




Fig. 16:



Set FigureOnly = True

Parameters: Id_Para = '_partial', ln=[0,1,2,3,4], lw=[], a=2.5, b=1 and level = 5 

Use successively Load = 'Shear' and Load = 'Tensile'

The command to be run from the directory Stochastic_DMN_LinearHardening is






 python3  GenParaDMN.py




Fig. C17:



The command to be run from the directory 6SVE_Example/6SVE_DMN/ is






 python3 Plot_rve6_DMN.py




Fig. C18:



Use LargeDefo = False and Load = 'Tensile' in 6SVE_Example/6SVE_DMN/Plot_DNS_DMN.py

The command to be run from the directory 6SVE_Example/6SVE_DMN/ is






 python3 Plot_DNS_DMN.py


Disclaimer

This project has received funding from the European Union’s Horizon Europe Framework Programme under grant agreement No. 101056682 for the project “DIgital DEsign strategies to certify and mAnufacture Robust cOmposite sTructures (DIDEAROT)”. The contents of this publication are the sole responsibility of ULiege and do not necessarily reflect the opinion of the European Union. Neither the European Union nor the granting authority can be held responsible for them.





The present work is described in: "Wu, L. and Noels, L. (2025). Stochastic Deep Material Networks as Efficient Surrogates for Stochastic Homogenisation of Non-linear Heterogeneous Materials, Computer Methods in Applied Mechanics and Engineering 441: 117994, doi: 10.1016/j.cma.2025.117994" which can be downloaded on https://hdl.handle.net/2268/330920. We would be grateful if you could cite this publication in case you use the files ↩ ↩2




The micro-structure generator is described in: "Wu, L. and Chung, C. N. and Major, Z. and Adam, L. and Noels, L. (2018) From sem images to elastic responses: A stochastic multiscale analysis of ud fiber reinforced composites, Composite Structures 189, doi: 10.1016/j.compstruct.2018.01.051 ↩