234 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			234 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # SimNDT2b
 | |
| 
 | |
| The batch processor version of SimNDT Version 2
 | |
| 
 | |
| The batch processor reads the entire simulation scenario from a json file and performs a simulation. Output can be saved in numpy format by enabling snapshots.
 | |
| Either each snapshot step is svaed in one file, or the snapshots (matrix of specific field variables) are accumulated in a three-dimensional volume, saved in on numpy file.
 | |
| 
 | |
| ## Authors
 | |
| 
 | |
| 1. Miguel Molero (original SimNDT)
 | |
| 2. Stefan Bosse (SimNDT2 and SimNDT2b)
 | |
| 3. Sanjeev Kumar (SimNDT2b)
 | |
| 
 | |
| ## Prerequisits
 | |
| 
 | |
| ```
 | |
| python2
 | |
| cffi==1.14.5
 | |
| Cython==0.29.22
 | |
| matplotlib==2.0.0
 | |
| numpy==1.16.6
 | |
| opencv-python==3.4.9.31
 | |
| Pillow==6.2.2
 | |
| pyopencl==2019.1.2
 | |
| PyOpenGL==3.1.0
 | |
| PySide==1.2.2
 | |
| pytools==2019.1.1
 | |
| scipy==1.2.3
 | |
| jsonpickle==2.2.0
 | |
| ```
 | |
| 
 | |
| ## Batch processing run
 | |
| 
 | |
| 1. Update the path to save the simulation data in the JOSN file under the key name ["Snapshot"]["Save_filepath"] (or ["Export"]["Save_filepath"]).
 | |
| 2. Run and save simulation command: python main.py "path_to_json_file"
 | |
| 
 | |
| 
 | |
| ```
 | |
| python2 $TOP/src/main.py ParamJSON/simndt_paramas_alu_hole_20mm.json 
 | |
| ```
 | |
| 
 | |
| 
 | |
| ## JSON Format
 | |
| 
 | |
| ### Material Libarary
 | |
| 
 | |
| All materials are labelled with an integer index number (0, positive) and a name. The simulation set-up uses only the index number of a material:
 | |
| 
 | |
| Note: The included material list determines the simulation model with respect to minimal grid distance and time step distance. Therefore, include only materials used in this simulation!
 | |
| 
 | |
| 1. Pre-defined from built-in material library:
 | |
| 
 | |
| ```
 | |
|   "Materials": [
 | |
|     {
 | |
|       "Name": "aluminium",
 | |
|       "Label": 0
 | |
|     },
 | |
|     {
 | |
|       "Name": "air",
 | |
|       "Label": 160
 | |
|     }
 | |
|   ]
 | |
| ```
 | |
| 
 | |
| 2. User-defined by providing material parameters (Rho: density, VL/VT: long. and transv. velocities in m/s):
 | |
| 
 | |
| ```
 | |
|   "Materials": [
 | |
|     {
 | |
|       "Name": "mysteel",
 | |
|       "Label": 130,
 | |
|       "VL": 5850,
 | |
|       "VT": 3220,
 | |
|       "Rho": 7800      
 | |
|     },
 | |
| 
 | |
| ```
 | |
| 
 | |
| ### Import
 | |
| 
 | |
| #### Material
 | |
| 
 | |
| - `Im:<path-to-2dim-numpy-file>` (front-end)
 | |
| - `Iabs:<path-to-2dim-numpy-file>` (front-end)
 | |
| - `Rho:<path-to-2dim-numpy-file>` and `VL:<path-to-2dim-numpy-file>` and `VT:<path-to-2dim-numpy-file>` containing Rho, VL, and VT matrix (back-end, engine)
 | |
| 
 | |
| ```
 | |
|   "Import": {
 | |
|      "Im": "/tmp/simulation-materials-Im.npy"
 | |
|   }
 | |
|   "Import": {
 | |
|      "Rho": "/tmp/simulation-materials-Rho.npy",
 | |
|      "VL": "/tmp/simulation-materials-VL.npy",
 | |
|      "VT": "/tmp/simulation-materials-VT.npy"
 | |
|   }
 | |
| ```
 | |
| 
 | |
| ### Export
 | |
| 
 | |
| #### Material
 | |
| 
 | |
| Exports material matrix 
 | |
| 
 | |
| `enableMaterial:true,Material:XX`
 | |
| 
 | |
| - *Iabs*: Material label matrix w/o boundaries, front-end
 | |
| - *Im*: Material label matrix with boundaries (same size as field matrix), front-end
 | |
| - *RV*: Rho,VT,VL material matrix set, back-end (engine)
 | |
| - *RC*: Rho,C11,.. material matrix set, back-end (engine)
 | |
| 
 | |
| #### Signals
 | |
| 
 | |
| `enableSignals:true,Field:XX`
 | |
| 
 | |
| - Export sensor signals (derived from Field XX)
 | |
| 
 | |
| - Fields: "Vx","Vy","[Vx,Vy]","Txx","Txy","Tyy","[Txx:Txy:Tyy]","Dx","Dy","[Dx,Dy]","SV"
 | |
| 
 | |
| 
 | |
| #### Sensor Placement
 | |
| 
 | |
| - Paramters (margin offsets and delta increment): [ox,oy,dx,dy]
 | |
| - Sensor matrix shape (number of columns and rows): [sx,sy]
 | |
| - Default: 
 | |
| 
 | |
| ```
 | |
| ox=dx=round(xn/(sx+1.0))
 | |
| oy=dy=round(yn/(sy+1.0))
 | |
| for x in range(0,sx):
 | |
|   for y in range(0,sy):
 | |
|     S[y,x]=D[oy+y*dy,ox+x*dx]
 | |
| ```
 | |
| 
 | |
| - User setting: 
 | |
| 
 | |
| ```
 | |
|   "sensorPlacement":[ox,dx,oy,dy],
 | |
|   "sensorShape":[sx,sy]
 | |
| ```
 | |
| 
 | |
| All parameter values in grid coordindates! 
 | |
| E.g., plate 500x500, 1mm grid distance, but field grid is 187x187 points (depends on other simulation and material settings)! 
 | |
| 
 | |
| 
 | |
| #### Output Formats
 | |
| 
 | |
| 1. numpy (enableNumPy=true), 2-dim (one file per time step) or 3-dim (enableVolume=true)
 | |
| 2. csv (only single sensor signals, no 2-dim fields), one row per time step
 | |
| 
 | |
| #### Field
 | |
| 
 | |
| - Tension Txx, Txy, Tyy
 | |
| - Velocity Vx, Vy
 | |
| - Displacement Dx, Dy
 | |
| - SV
 | |
| 
 | |
| #### Example Sensor Field
 | |
| 
 | |
| - Optional: The material grid is exported (Rho, VL, VT), too
 | |
| 
 | |
| ```
 | |
|   "Export": {
 | |
|     "Step": 100,
 | |
|     "Save_filepath": "/tmp/",
 | |
|     "Filename": "simulation",
 | |
|     "Extension": ".png",
 | |
|     "dB": 60,
 | |
|     "Color": 0,
 | |
|     "Field": "Txx",
 | |
|     "Material": "RV",
 | |
|     "enableFields": false,
 | |
|     "enableNumPy": true,
 | |
|     "enableCsv": true,
 | |
|     "enableSignals": true,
 | |
|     "enableImages": false,
 | |
|     "enableMaterial": true,
 | |
|     "enableVolume": true,
 | |
|     "enableView": false,
 | |
|     "sensorShape": [],
 | |
|     "sensorPlacement": [],
 | |
|     "sensorSize": 0
 | |
|   }
 | |
| ```
 | |
| 
 | |
| #### Example Single Sensor
 | |
| 
 | |
| Note: The sensor settings have no inmpact on the simulation model and the simulation, it is just a field selection rule.
 | |
| 
 | |
| - sensor position ist (56,180) mm
 | |
| - more than one sensor can be sampled (saved)
 | |
| 
 | |
| ```
 | |
|   "Export": {
 | |
|     "Step": 20,
 | |
|     "Save_filepath": "./data",
 | |
|     "Filename": "fields-sensor-56-180",
 | |
|     "Field": "Txx",
 | |
|     "enableFields": false,
 | |
|     "enableNumPy": false,
 | |
|     "enableCsv": true,
 | |
|     "enableSignals": true,
 | |
|     "enableImages": false,
 | |
|     "enableVolume": true,
 | |
|     "enableView": false,
 | |
|     "sensorShape": [1,1],
 | |
|     "sensorPlacement": [56,0,180,0],
 | |
|     "sensorSize": 0
 | |
|   }
 | |
| ```
 | |
| 
 | |
| ### Simulation
 | |
| 
 | |
| 
 | |
| - dx and dt are optional and set static simulation constraints and must be lower than computed minimal req. dx/dt
 | |
| - Entire simulation time in Seconds
 | |
| - Maximum frequency to be sampled in Hz (minimum value is given by the stimulus base frequency and time step)
 | |
| - Point cycle sets the snapshot interval saving field (sensor) values, i.e., each PointCycle step
 | |
| 
 | |
| ```
 | |
|   "Simulation": {
 | |
|     "PointCycle": 10,
 | |
|     "SimulationTime": 150e-6,
 | |
|     "TimeScale": 1.0,
 | |
|     "MaxFreq": 120000.0,
 | |
|     "Order": 2,
 | |
|     "Device":"CPU",
 | |
|     "dx" : 0.001,
 | |
|     "dt" : 1e-7
 | |
|   },
 | |
| ```
 | |
| 
 | |
| 
 |