Restructuring the geometry and pushers
The geometry and push structure has been reworked to allow eassy adding new pushers. Documentation not updated yet. Baseline for merging Cartesian pushers into one.
This commit is contained in:
parent
562dba1694
commit
5b5dadce39
18 changed files with 429 additions and 1052 deletions
2
makefile
2
makefile
|
|
@ -6,7 +6,7 @@ SRCDIR := $(TOPDIR)/src# source folder
|
||||||
# compiler
|
# compiler
|
||||||
# gfortran:
|
# gfortran:
|
||||||
FC := gfortran
|
FC := gfortran
|
||||||
JSONDIR := $(TOPDIR)/json-fortran-8.2.0/build-gfortran
|
JSONDIR := $(TOPDIR)/json-fortran/build-gfortran
|
||||||
# ifort:
|
# ifort:
|
||||||
# FC := ifort
|
# FC := ifort
|
||||||
# JSONDIR := $(TOPDIR)/json-fortran-8.2.0/build-ifort
|
# JSONDIR := $(TOPDIR)/json-fortran-8.2.0/build-ifort
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
"output": {
|
"output": {
|
||||||
"path": "./runs/0D_test/",
|
"path": "./runs/0D_Argon/",
|
||||||
"triggerOutput": 1,
|
"triggerOutput": 1,
|
||||||
"numColl": true,
|
"numColl": true,
|
||||||
"folder": "test"
|
"folder": "test"
|
||||||
|
|
@ -13,21 +13,19 @@
|
||||||
"radius": 1.88e-10
|
"radius": 1.88e-10
|
||||||
},
|
},
|
||||||
"geometry": {
|
"geometry": {
|
||||||
"type": "1DCart",
|
"dimension": 0,
|
||||||
"meshType": "0D",
|
|
||||||
"volume": 1e-11
|
"volume": 1e-11
|
||||||
},
|
},
|
||||||
"species": [
|
"species": [
|
||||||
{"name": "Argon+", "type": "charged", "mass": 6.633e-26, "charge": 1.0, "weight": 1.0e0},
|
{"name": "Argon+", "type": "charged", "mass": 6.633e-26, "charge": 1.0, "weight": 1.0e0},
|
||||||
{"name": "Argon", "type": "neutral", "mass": 6.633e-26, "weight": 1.0e0}
|
{"name": "Argon", "type": "neutral", "mass": 6.633e-26, "weight": 1.0e0}
|
||||||
],
|
],
|
||||||
"case": {
|
"solver": {
|
||||||
"tau": [1.0e-6, 1.0e-6],
|
"tau": [1.0e-6, 1.0e-6],
|
||||||
"time": 1.0e-3,
|
"finalTime": 1.0e-3,
|
||||||
"pusher": ["0D", "0D"],
|
|
||||||
"initial": [
|
"initial": [
|
||||||
{"speciesName": "Argon+", "initialState": "Argon+_Initial.dat"},
|
{"species": "Argon+", "file": "Argon+_Initial.dat"},
|
||||||
{"speciesName": "Argon", "initialState": "Argon_Initial.dat"}
|
{"species": "Argon", "file": "Argon_Initial.dat"}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"interactions": {
|
"interactions": {
|
||||||
|
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
#Element Density(m^-3) Velocity (m/2) Temperature (K)
|
|
||||||
1 1.8672E+15 -4.2433E+04 0.0000E+00 0.0000E+00 1.7536E+03
|
|
||||||
2 1.7491E+15 -4.1621E+04 0.0000E+00 0.0000E+00 1.8298E+03
|
|
||||||
3 1.7130E+15 -4.0665E+04 0.0000E+00 0.0000E+00 1.6838E+03
|
|
||||||
4 1.7346E+15 -3.9729E+04 0.0000E+00 0.0000E+00 1.5787E+03
|
|
||||||
5 1.7565E+15 -3.8817E+04 0.0000E+00 0.0000E+00 1.5641E+03
|
|
||||||
6 1.7107E+15 -3.7924E+04 0.0000E+00 0.0000E+00 1.4574E+03
|
|
||||||
7 1.6611E+15 -3.7036E+04 0.0000E+00 0.0000E+00 1.3561E+03
|
|
||||||
8 1.6543E+15 -3.6166E+04 0.0000E+00 0.0000E+00 1.2648E+03
|
|
||||||
9 1.6850E+15 -3.5302E+04 0.0000E+00 0.0000E+00 1.1812E+03
|
|
||||||
10 1.7615E+15 -3.4449E+04 0.0000E+00 0.0000E+00 1.1669E+03
|
|
||||||
11 1.7123E+15 -3.3627E+04 0.0000E+00 0.0000E+00 1.1458E+03
|
|
||||||
12 1.6138E+15 -3.2791E+04 0.0000E+00 0.0000E+00 1.0411E+03
|
|
||||||
13 1.6308E+15 -3.1965E+04 0.0000E+00 0.0000E+00 9.6919E+02
|
|
||||||
14 1.6581E+15 -3.1161E+04 0.0000E+00 0.0000E+00 9.8432E+02
|
|
||||||
15 1.6576E+15 -3.0359E+04 0.0000E+00 0.0000E+00 9.8741E+02
|
|
||||||
16 1.6780E+15 -2.9560E+04 0.0000E+00 0.0000E+00 9.1285E+02
|
|
||||||
17 1.6906E+15 -2.8768E+04 0.0000E+00 0.0000E+00 8.5525E+02
|
|
||||||
18 1.6773E+15 -2.7987E+04 0.0000E+00 0.0000E+00 8.5787E+02
|
|
||||||
19 1.6571E+15 -2.7208E+04 0.0000E+00 0.0000E+00 8.3556E+02
|
|
||||||
20 1.6547E+15 -2.6431E+04 0.0000E+00 0.0000E+00 7.9246E+02
|
|
||||||
21 1.6878E+15 -2.5659E+04 0.0000E+00 0.0000E+00 7.6169E+02
|
|
||||||
22 1.7458E+15 -2.4887E+04 0.0000E+00 0.0000E+00 7.4698E+02
|
|
||||||
23 1.7634E+15 -2.4124E+04 0.0000E+00 0.0000E+00 7.5560E+02
|
|
||||||
24 1.8070E+15 -2.3350E+04 0.0000E+00 0.0000E+00 7.3385E+02
|
|
||||||
25 1.8616E+15 -2.2579E+04 0.0000E+00 0.0000E+00 7.1475E+02
|
|
||||||
26 1.8601E+15 -2.1822E+04 0.0000E+00 0.0000E+00 7.1208E+02
|
|
||||||
27 1.8291E+15 -2.1053E+04 0.0000E+00 0.0000E+00 6.8693E+02
|
|
||||||
28 1.8542E+15 -2.0280E+04 0.0000E+00 0.0000E+00 6.5924E+02
|
|
||||||
29 1.9410E+15 -1.9518E+04 0.0000E+00 0.0000E+00 6.4794E+02
|
|
||||||
30 1.9685E+15 -1.8749E+04 0.0000E+00 0.0000E+00 6.4988E+02
|
|
||||||
31 2.0048E+15 -1.7973E+04 0.0000E+00 0.0000E+00 6.2752E+02
|
|
||||||
32 2.1060E+15 -1.7194E+04 0.0000E+00 0.0000E+00 6.1567E+02
|
|
||||||
33 2.1705E+15 -1.6418E+04 0.0000E+00 0.0000E+00 6.1351E+02
|
|
||||||
34 2.1947E+15 -1.5629E+04 0.0000E+00 0.0000E+00 6.0244E+02
|
|
||||||
35 2.2625E+15 -1.4824E+04 0.0000E+00 0.0000E+00 6.0286E+02
|
|
||||||
36 2.4096E+15 -1.4023E+04 0.0000E+00 0.0000E+00 5.9199E+02
|
|
||||||
37 2.5632E+15 -1.3209E+04 0.0000E+00 0.0000E+00 5.8388E+02
|
|
||||||
38 2.6774E+15 -1.2384E+04 0.0000E+00 0.0000E+00 5.8875E+02
|
|
||||||
39 2.8107E+15 -1.1544E+04 0.0000E+00 0.0000E+00 5.8973E+02
|
|
||||||
40 2.9409E+15 -1.0692E+04 0.0000E+00 0.0000E+00 5.9631E+02
|
|
||||||
41 3.1254E+15 -9.8219E+03 0.0000E+00 0.0000E+00 5.9943E+02
|
|
||||||
42 3.4330E+15 -8.9344E+03 0.0000E+00 0.0000E+00 5.9491E+02
|
|
||||||
43 3.7218E+15 -8.0260E+03 0.0000E+00 0.0000E+00 5.9949E+02
|
|
||||||
44 4.0857E+15 -7.0817E+03 0.0000E+00 0.0000E+00 6.4591E+02
|
|
||||||
45 4.5046E+15 -6.1015E+03 0.0000E+00 0.0000E+00 5.9669E+02
|
|
||||||
46 5.4123E+15 -5.0997E+03 0.0000E+00 0.0000E+00 5.7835E+02
|
|
||||||
47 6.7144E+15 -4.2183E+03 0.0000E+00 0.0000E+00 4.7454E+02
|
|
||||||
48 9.1344E+15 -3.1141E+03 0.0000E+00 0.0000E+00 3.0000E+02
|
|
||||||
49 1.4157E+16 -1.8530E+03 0.0000E+00 0.0000E+00 3.0000E+02
|
|
||||||
50 2.3064E+16 -9.7547E+02 0.0000E+00 0.0000E+00 2.7186E+02
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
#Element Density(m^-3) Velocity (m/2) Temperature (K)
|
|
||||||
1 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
2 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
3 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
4 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
5 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
6 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
7 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
8 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
9 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
10 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
11 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
12 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
13 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
14 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
15 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
16 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
17 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
18 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
19 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
20 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
21 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
22 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
23 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
24 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
25 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
26 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
27 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
28 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
29 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
30 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
31 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
32 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
33 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
34 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
35 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
36 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
37 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
38 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
39 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
40 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
41 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
42 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
43 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
44 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
|
|
||||||
45 7.5916E+12 1.8413E+05 0.0000E+00 0.0000E+00 5.7527E+03
|
|
||||||
46 7.5916E+12 1.8413E+05 0.0000E+00 0.0000E+00 5.7527E+03
|
|
||||||
47 4.0201E+14 -2.3775E+04 0.0000E+00 0.0000E+00 1.1359E+04
|
|
||||||
48 4.0201E+14 -2.3775E+04 0.0000E+00 0.0000E+00 1.1359E+04
|
|
||||||
49 6.9489E+15 -8.8002E+03 0.0000E+00 0.0000E+00 9.5125E+03
|
|
||||||
50 6.9489E+15 -8.8002E+03 0.0000E+00 0.0000E+00 9.5125E+03
|
|
||||||
|
|
@ -14,7 +14,8 @@
|
||||||
"temperature": 11604.0
|
"temperature": 11604.0
|
||||||
},
|
},
|
||||||
"geometry": {
|
"geometry": {
|
||||||
"type": "1DCart",
|
"dimension": 1,
|
||||||
|
"type": "Cart",
|
||||||
"meshType": "gmsh2",
|
"meshType": "gmsh2",
|
||||||
"meshFile": "mesh.msh"
|
"meshFile": "mesh.msh"
|
||||||
},
|
},
|
||||||
|
|
@ -43,15 +44,11 @@
|
||||||
{"name": "Plasma Cat e", "species": "Electron", "flow": 2.64e-5, "units": "A", "v": 180000.0, "T": [ 2300.0, 2300.0, 2300.0],
|
{"name": "Plasma Cat e", "species": "Electron", "flow": 2.64e-5, "units": "A", "v": 180000.0, "T": [ 2300.0, 2300.0, 2300.0],
|
||||||
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [ 1, 0, 0], "physicalSurface": 1}
|
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [ 1, 0, 0], "physicalSurface": 1}
|
||||||
],
|
],
|
||||||
"case": {
|
"solver": {
|
||||||
"tau": [1.0e-11, 1.0e-11],
|
"tau": [1.0e-11, 1.0e-11],
|
||||||
"time": 4.0e-6,
|
"finalTime": 4.0e-6,
|
||||||
"pusher": ["1DCartCharged", "1DCartCharged"],
|
"pusher": ["Electrostatic", "Electrostatic"],
|
||||||
"EMSolver": "Electrostatic",
|
"EMSolver": "Electrostatic"
|
||||||
"initial": [
|
|
||||||
{"speciesName": "Argon+", "initialState": "Argon+_Background.dat"},
|
|
||||||
{"speciesName": "Electron", "initialState": "Electron_Background.dat"}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"parallel": {
|
"parallel": {
|
||||||
"OpenMP":{
|
"OpenMP":{
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,8 @@
|
||||||
"temperature": 11604.0
|
"temperature": 11604.0
|
||||||
},
|
},
|
||||||
"geometry": {
|
"geometry": {
|
||||||
"type": "1DRad",
|
"dimension": 1,
|
||||||
|
"type": "Cart",
|
||||||
"meshType": "gmsh2",
|
"meshType": "gmsh2",
|
||||||
"meshFile": "mesh.msh"
|
"meshFile": "mesh.msh"
|
||||||
},
|
},
|
||||||
|
|
@ -43,15 +44,11 @@
|
||||||
{"name": "Plasma Cat e", "species": "Electron", "flow": 2.64e-2, "units": "A", "v": 180000.0, "T": [ 2300.0, 2300.0, 2300.0],
|
{"name": "Plasma Cat e", "species": "Electron", "flow": 2.64e-2, "units": "A", "v": 180000.0, "T": [ 2300.0, 2300.0, 2300.0],
|
||||||
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [ 1, 0, 0], "physicalSurface": 1}
|
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [ 1, 0, 0], "physicalSurface": 1}
|
||||||
],
|
],
|
||||||
"case": {
|
"solver": {
|
||||||
"tau": [1.0e-11, 1.0e-11],
|
"tau": [1.0e-11, 1.0e-11],
|
||||||
"time": 3.0e-7,
|
"finalTime": 3.0e-7,
|
||||||
"pusher": ["1DRadCharged", "1DRadCharged"],
|
"pusher": ["Electrostatic", "Electrostatic"],
|
||||||
"EMSolver": "Electrostatic",
|
"EMSolver": "Electrostatic"
|
||||||
"initial": [
|
|
||||||
{"speciesName": "Argon+", "initialState": "Argon+_Background.dat"},
|
|
||||||
{"speciesName": "Electron", "initialState": "Electron_Background.dat"}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"parallel": {
|
"parallel": {
|
||||||
"OpenMP":{
|
"OpenMP":{
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,8 @@
|
||||||
"folder": "base_case"
|
"folder": "base_case"
|
||||||
},
|
},
|
||||||
"geometry": {
|
"geometry": {
|
||||||
"type": "2DCyl",
|
"dimension": 2,
|
||||||
|
"type": "Cyl",
|
||||||
"meshType": "gmsh2",
|
"meshType": "gmsh2",
|
||||||
"meshFile": "mesh.msh"
|
"meshFile": "mesh.msh"
|
||||||
},
|
},
|
||||||
|
|
@ -61,10 +62,10 @@
|
||||||
"temperature": 2500.0,
|
"temperature": 2500.0,
|
||||||
"radius": 1.88e-10
|
"radius": 1.88e-10
|
||||||
},
|
},
|
||||||
"case": {
|
"solver": {
|
||||||
"tau": [1.0e-9, 1.0e-11],
|
"tau": [1.0e-9, 1.0e-11],
|
||||||
"time": 1.0e-6,
|
"finalTime": 1.0e-6,
|
||||||
"pusher": ["2DCylCharged", "2DCylCharged"],
|
"pusher": ["Electrostatic", "Electrostatic"],
|
||||||
"WeightingScheme": "Volume",
|
"WeightingScheme": "Volume",
|
||||||
"EMSolver": "Electrostatic"
|
"EMSolver": "Electrostatic"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,8 @@
|
||||||
"folder": "ionization_0.10mA"
|
"folder": "ionization_0.10mA"
|
||||||
},
|
},
|
||||||
"geometry": {
|
"geometry": {
|
||||||
"type": "2DCyl",
|
"dimension": 2,
|
||||||
|
"type": "Cyl",
|
||||||
"meshType": "gmsh2",
|
"meshType": "gmsh2",
|
||||||
"meshFile": "mesh.msh"
|
"meshFile": "mesh.msh"
|
||||||
},
|
},
|
||||||
|
|
@ -58,10 +59,10 @@
|
||||||
"temperature": 2500.0,
|
"temperature": 2500.0,
|
||||||
"radius": 1.88e-10
|
"radius": 1.88e-10
|
||||||
},
|
},
|
||||||
"case": {
|
"solver": {
|
||||||
"tau": [1.0e-9, 1.0e-11],
|
"tau": [1.0e-9, 1.0e-11],
|
||||||
"time": 1.0e-6,
|
"finalTime": 1.0e-6,
|
||||||
"pusher": ["2DCylCharged", "2DCylCharged"],
|
"pusher": ["Electrostatic", "Electrostatic"],
|
||||||
"WeightingScheme": "Volume",
|
"WeightingScheme": "Volume",
|
||||||
"EMSolver": "Electrostatic"
|
"EMSolver": "Electrostatic"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@
|
||||||
"folder": "CX_case"
|
"folder": "CX_case"
|
||||||
},
|
},
|
||||||
"geometry": {
|
"geometry": {
|
||||||
"type": "2DCyl",
|
"dimension": 2,
|
||||||
|
"type": "Cyl",
|
||||||
"meshType": "gmsh2",
|
"meshType": "gmsh2",
|
||||||
"meshFile": "mesh.msh"
|
"meshFile": "mesh.msh"
|
||||||
},
|
},
|
||||||
|
|
@ -41,10 +42,10 @@
|
||||||
"temperature": 300.0,
|
"temperature": 300.0,
|
||||||
"radius": 1.88e-10
|
"radius": 1.88e-10
|
||||||
},
|
},
|
||||||
"case": {
|
"solver": {
|
||||||
"tau": [1.0e-6, 1.0e-6],
|
"tau": [1.0e-6, 1.0e-6],
|
||||||
"time": 4.0e-3,
|
"finalTime": 4.0e-3,
|
||||||
"pusher": ["2DCylNeutral", "2DCylNeutral"],
|
"pusher": ["Neutral", "Neutral"],
|
||||||
"WeightingScheme": "Volume"
|
"WeightingScheme": "Volume"
|
||||||
},
|
},
|
||||||
"interactions": {
|
"interactions": {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@
|
||||||
"folder": "Elastic_case"
|
"folder": "Elastic_case"
|
||||||
},
|
},
|
||||||
"geometry": {
|
"geometry": {
|
||||||
"type": "2DCyl",
|
"dimension": 2,
|
||||||
|
"type": "Cyl",
|
||||||
"meshType": "gmsh2",
|
"meshType": "gmsh2",
|
||||||
"meshFile": "mesh.msh"
|
"meshFile": "mesh.msh"
|
||||||
},
|
},
|
||||||
|
|
@ -41,10 +42,10 @@
|
||||||
"temperature": 300.0,
|
"temperature": 300.0,
|
||||||
"radius": 1.88e-10
|
"radius": 1.88e-10
|
||||||
},
|
},
|
||||||
"case": {
|
"solver": {
|
||||||
"tau": [1.0e-6, 1.0e-6],
|
"tau": [1.0e-6, 1.0e-6],
|
||||||
"time": 4.0e-3,
|
"finalTime": 4.0e-3,
|
||||||
"pusher": ["2DCylNeutral", "2DCylNeutral"],
|
"pusher": ["Neutral", "Neutral"],
|
||||||
"WeightingScheme": "Volume"
|
"WeightingScheme": "Volume"
|
||||||
},
|
},
|
||||||
"interactions": {
|
"interactions": {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@
|
||||||
"folder": "Nocoll_case"
|
"folder": "Nocoll_case"
|
||||||
},
|
},
|
||||||
"geometry": {
|
"geometry": {
|
||||||
"type": "2DCyl",
|
"dimension": 2,
|
||||||
|
"type": "Cyl",
|
||||||
"meshType": "gmsh2",
|
"meshType": "gmsh2",
|
||||||
"meshFile": "mesh.msh"
|
"meshFile": "mesh.msh"
|
||||||
},
|
},
|
||||||
|
|
@ -41,10 +42,10 @@
|
||||||
"temperature": 300.0,
|
"temperature": 300.0,
|
||||||
"radius": 1.88e-10
|
"radius": 1.88e-10
|
||||||
},
|
},
|
||||||
"case": {
|
"solver": {
|
||||||
"tau": [1.0e-6, 1.0e-6],
|
"tau": [1.0e-6, 1.0e-6],
|
||||||
"time": 4.0e-3,
|
"finalTime": 4.0e-3,
|
||||||
"pusher": ["2DCylNeutral", "2DCylNeutral"],
|
"pusher": ["Neutral", "Neutral"],
|
||||||
"WeightingScheme": "Volume"
|
"WeightingScheme": "Volume"
|
||||||
},
|
},
|
||||||
"parallel": {
|
"parallel": {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,8 @@
|
||||||
"numColl": true
|
"numColl": true
|
||||||
},
|
},
|
||||||
"geometry": {
|
"geometry": {
|
||||||
"type": "2DCyl",
|
"dimension": 2,
|
||||||
|
"type": "Cyl",
|
||||||
"meshType": "gmsh2",
|
"meshType": "gmsh2",
|
||||||
"meshFile": "meshSingle.msh"
|
"meshFile": "meshSingle.msh"
|
||||||
},
|
},
|
||||||
|
|
@ -40,10 +41,10 @@
|
||||||
"temperature": 300.0,
|
"temperature": 300.0,
|
||||||
"radius": 1.88e-10
|
"radius": 1.88e-10
|
||||||
},
|
},
|
||||||
"case": {
|
"solver": {
|
||||||
"tau": [5.0e-7],
|
"tau": [5.0e-7],
|
||||||
"time": 1.0e-3,
|
"finalTime": 1.0e-3,
|
||||||
"pusher": ["2DCylNeutral"],
|
"pusher": ["Neutral"],
|
||||||
"WeightingScheme": "Volume"
|
"WeightingScheme": "Volume"
|
||||||
},
|
},
|
||||||
"interactions": {
|
"interactions": {
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,11 @@
|
||||||
"numColl": true
|
"numColl": true
|
||||||
},
|
},
|
||||||
"geometry": {
|
"geometry": {
|
||||||
"type": "2DCyl",
|
"dimension": 2,
|
||||||
|
"type": "Cyl",
|
||||||
"meshType": "gmsh2",
|
"meshType": "gmsh2",
|
||||||
"meshFile": "mesh.msh"
|
"meshFile": "mesh.msh",
|
||||||
|
"meshCollisions": "meshColl.msh"
|
||||||
},
|
},
|
||||||
"species": [
|
"species": [
|
||||||
{"name": "Argon", "type": "neutral", "mass": 6.633e-26, "weight": 5.0e8}
|
{"name": "Argon", "type": "neutral", "mass": 6.633e-26, "weight": 5.0e8}
|
||||||
|
|
@ -40,15 +42,14 @@
|
||||||
"temperature": 300.0,
|
"temperature": 300.0,
|
||||||
"radius": 1.88e-10
|
"radius": 1.88e-10
|
||||||
},
|
},
|
||||||
"case": {
|
"solver": {
|
||||||
"tau": [5.0e-7],
|
"tau": [5.0e-7],
|
||||||
"time": 1.0e-3,
|
"finalTime": 1.0e-3,
|
||||||
"pusher": ["2DCylNeutral"],
|
"pusher": ["Neutral"],
|
||||||
"WeightingScheme": "Volume"
|
"WeightingScheme": "Volume"
|
||||||
},
|
},
|
||||||
"interactions": {
|
"interactions": {
|
||||||
"folderCollisions": "./data/collisions/",
|
"folderCollisions": "./data/collisions/",
|
||||||
"meshCollisions": "meshColl.msh",
|
|
||||||
"collisions": [
|
"collisions": [
|
||||||
{"species_i": "Argon", "species_j": "Argon",
|
{"species_i": "Argon", "species_j": "Argon",
|
||||||
"cTypes": [
|
"cTypes": [
|
||||||
|
|
|
||||||
|
|
@ -1,629 +0,0 @@
|
||||||
General.AxesFormatX = "%.3g";
|
|
||||||
General.AxesFormatY = "%.3g";
|
|
||||||
General.AxesFormatZ = "%.3g";
|
|
||||||
General.AxesLabelX = "z (m)";
|
|
||||||
General.AxesLabelY = "r (m)";
|
|
||||||
General.AxesLabelZ = "";
|
|
||||||
General.BackgroundImageFileName = "";
|
|
||||||
General.BuildOptions = " 64Bit ALGLIB Bamg Blas Blossom DIntegration Dlopen DomHex Fltk GMP Gmm[system] Hxt Hxt3D Jpeg Kbipack Lapack LinuxJoystick MathEx Mesh Metis[system] Mmg3d Mpeg NativeFileChooser Netgen ONELAB ONELABMetamodel OpenCASCADE OpenCASCADE-CAF OpenGL OpenMP OptHom Parser Plugins Png Post QuadTri Solver TetGen/BR Zlib";
|
|
||||||
General.DefaultFileName = "untitled.geo";
|
|
||||||
General.Display = "";
|
|
||||||
General.ErrorFileName = ".gmsh-errors";
|
|
||||||
General.ExecutableFileName = "/usr/bin/gmsh";
|
|
||||||
General.FileName = "/home/jorge/PPartiC/runs/cylFlow/mesh.msh";
|
|
||||||
General.FltkTheme = "";
|
|
||||||
General.GraphicsFont = "Helvetica";
|
|
||||||
General.GraphicsFontEngine = "Native";
|
|
||||||
General.GraphicsFontTitle = "Helvetica";
|
|
||||||
General.OptionsFileName = ".gmsh-options";
|
|
||||||
General.RecentFile0 = "/home/jorge/PPartiC/runs/cylFlow/mesh.msh";
|
|
||||||
General.RecentFile1 = "untitled.geo";
|
|
||||||
General.RecentFile2 = "mesh/Neutral_Expansion_Div.geo";
|
|
||||||
General.RecentFile3 = "mesh/Neutral_Expansion_Div.msh";
|
|
||||||
General.RecentFile4 = "Neutral_Expansion_Div.msh";
|
|
||||||
General.RecentFile5 = "Neutral_Expansion.geo";
|
|
||||||
General.RecentFile6 = "Neutral_Expansion_Div.geo";
|
|
||||||
General.RecentFile7 = "/home/jorge/Dropbox/UPMPlasmaLab/Post-Doc/Codes/PICCIL2D/PIC-FEM/Neutral_Expansion_Div.msh";
|
|
||||||
General.RecentFile8 = "Neutral_Expansion.msh";
|
|
||||||
General.RecentFile9 = "/home/jorge/Dropbox/UPMPlasmaLab/Post-Doc/Codes/PICCIL2D/PIC-FEM/Neutral_Expansion.msh";
|
|
||||||
General.TextEditor = "gedit '%s'";
|
|
||||||
General.TmpFileName = ".gmsh-tmp";
|
|
||||||
General.Version = "4.4.1";
|
|
||||||
General.WatchFilePattern = "";
|
|
||||||
General.AlphaBlending = 1;
|
|
||||||
General.Antialiasing = 0;
|
|
||||||
General.ArrowHeadRadius = 0.12;
|
|
||||||
General.ArrowStemLength = 0.5600000000000001;
|
|
||||||
General.ArrowStemRadius = 0.02;
|
|
||||||
General.Axes = 1;
|
|
||||||
General.AxesMikado = 0;
|
|
||||||
General.AxesAutoPosition = 1;
|
|
||||||
General.AxesForceValue = 0;
|
|
||||||
General.AxesMaxX = 1;
|
|
||||||
General.AxesMaxY = 1;
|
|
||||||
General.AxesMaxZ = 1;
|
|
||||||
General.AxesMinX = 0;
|
|
||||||
General.AxesMinY = 0;
|
|
||||||
General.AxesMinZ = 0;
|
|
||||||
General.AxesTicsX = 8;
|
|
||||||
General.AxesTicsY = 4;
|
|
||||||
General.AxesTicsZ = 5;
|
|
||||||
General.AxesValueMaxX = 1;
|
|
||||||
General.AxesValueMaxY = 1;
|
|
||||||
General.AxesValueMaxZ = 1;
|
|
||||||
General.AxesValueMinX = 0;
|
|
||||||
General.AxesValueMinY = 0;
|
|
||||||
General.AxesValueMinZ = 0;
|
|
||||||
General.BackgroundGradient = 1;
|
|
||||||
General.BackgroundImage3D = 0;
|
|
||||||
General.BackgroundImagePage = 0;
|
|
||||||
General.BackgroundImagePositionX = 0;
|
|
||||||
General.BackgroundImagePositionY = 0;
|
|
||||||
General.BackgroundImageWidth = -1;
|
|
||||||
General.BackgroundImageHeight = -1;
|
|
||||||
General.BoundingBoxSize = 0.07615773105863909;
|
|
||||||
General.Camera = 0;
|
|
||||||
General.CameraAperture = 40;
|
|
||||||
General.CameraEyeSeparationRatio = 1.5;
|
|
||||||
General.CameraFocalLengthRatio = 1;
|
|
||||||
General.Clip0A = 1;
|
|
||||||
General.Clip0B = 0;
|
|
||||||
General.Clip0C = 0;
|
|
||||||
General.Clip0D = 0;
|
|
||||||
General.Clip1A = 0;
|
|
||||||
General.Clip1B = 1;
|
|
||||||
General.Clip1C = 0;
|
|
||||||
General.Clip1D = 0;
|
|
||||||
General.Clip2A = 0;
|
|
||||||
General.Clip2B = 0;
|
|
||||||
General.Clip2C = 1;
|
|
||||||
General.Clip2D = 0;
|
|
||||||
General.Clip3A = -1;
|
|
||||||
General.Clip3B = 0;
|
|
||||||
General.Clip3C = 0;
|
|
||||||
General.Clip3D = 1;
|
|
||||||
General.Clip4A = 0;
|
|
||||||
General.Clip4B = -1;
|
|
||||||
General.Clip4C = 0;
|
|
||||||
General.Clip4D = 1;
|
|
||||||
General.Clip5A = 0;
|
|
||||||
General.Clip5B = 0;
|
|
||||||
General.Clip5C = -1;
|
|
||||||
General.Clip5D = 1;
|
|
||||||
General.ClipFactor = 5;
|
|
||||||
General.ClipOnlyDrawIntersectingVolume = 0;
|
|
||||||
General.ClipOnlyVolume = 0;
|
|
||||||
General.ClipPositionX = 650;
|
|
||||||
General.ClipPositionY = 150;
|
|
||||||
General.ClipWholeElements = 0;
|
|
||||||
General.ColorScheme = 1;
|
|
||||||
General.ConfirmOverwrite = 1;
|
|
||||||
General.ContextPositionX = 235;
|
|
||||||
General.ContextPositionY = 962;
|
|
||||||
General.DetachedMenu = 0;
|
|
||||||
General.DisplayBorderFactor = 0.2;
|
|
||||||
General.DoubleBuffer = 1;
|
|
||||||
General.DrawBoundingBoxes = 0;
|
|
||||||
General.ExpertMode = 0;
|
|
||||||
General.ExtraPositionX = 650;
|
|
||||||
General.ExtraPositionY = 350;
|
|
||||||
General.ExtraHeight = 100;
|
|
||||||
General.ExtraWidth = 100;
|
|
||||||
General.FastRedraw = 0;
|
|
||||||
General.FieldPositionX = 650;
|
|
||||||
General.FieldPositionY = 550;
|
|
||||||
General.FieldHeight = 488;
|
|
||||||
General.FieldWidth = 651;
|
|
||||||
General.FileChooserPositionX = 200;
|
|
||||||
General.FileChooserPositionY = 200;
|
|
||||||
General.FltkColorScheme = 0;
|
|
||||||
General.FontSize = -1;
|
|
||||||
General.GraphicsFontSize = 15;
|
|
||||||
General.GraphicsFontSizeTitle = 18;
|
|
||||||
General.GraphicsHeight = 1003;
|
|
||||||
General.GraphicsPositionX = 274;
|
|
||||||
General.GraphicsPositionY = 263;
|
|
||||||
General.GraphicsWidth = 1920;
|
|
||||||
General.HighOrderToolsPositionX = 650;
|
|
||||||
General.HighOrderToolsPositionY = 150;
|
|
||||||
General.HighResolutionGraphics = 1;
|
|
||||||
General.HighResolutionPointSizeFactor = 2;
|
|
||||||
General.InitialModule = 0;
|
|
||||||
General.InputScrolling = 1;
|
|
||||||
General.Light0 = 1;
|
|
||||||
General.Light0X = 0.65;
|
|
||||||
General.Light0Y = 0.65;
|
|
||||||
General.Light0Z = 1;
|
|
||||||
General.Light0W = 0;
|
|
||||||
General.Light1 = 0;
|
|
||||||
General.Light1X = 0.5;
|
|
||||||
General.Light1Y = 0.3;
|
|
||||||
General.Light1Z = 1;
|
|
||||||
General.Light1W = 0;
|
|
||||||
General.Light2 = 0;
|
|
||||||
General.Light2X = 0.5;
|
|
||||||
General.Light2Y = 0.3;
|
|
||||||
General.Light2Z = 1;
|
|
||||||
General.Light2W = 0;
|
|
||||||
General.Light3 = 0;
|
|
||||||
General.Light3X = 0.5;
|
|
||||||
General.Light3Y = 0.3;
|
|
||||||
General.Light3Z = 1;
|
|
||||||
General.Light3W = 0;
|
|
||||||
General.Light4 = 0;
|
|
||||||
General.Light4X = 0.5;
|
|
||||||
General.Light4Y = 0.3;
|
|
||||||
General.Light4Z = 1;
|
|
||||||
General.Light4W = 0;
|
|
||||||
General.Light5 = 0;
|
|
||||||
General.Light5X = 0.5;
|
|
||||||
General.Light5Y = 0.3;
|
|
||||||
General.Light5Z = 1;
|
|
||||||
General.Light5W = 0;
|
|
||||||
General.LineWidth = 1;
|
|
||||||
General.ManipulatorPositionX = 650;
|
|
||||||
General.ManipulatorPositionY = 150;
|
|
||||||
General.MaxX = 0.07000000000000001;
|
|
||||||
General.MaxY = 0.03;
|
|
||||||
General.MaxZ = 0;
|
|
||||||
General.MenuWidth = 219;
|
|
||||||
General.MenuHeight = 200;
|
|
||||||
General.MenuPositionX = 400;
|
|
||||||
General.MenuPositionY = 400;
|
|
||||||
General.MessageFontSize = -1;
|
|
||||||
General.MessageHeight = 300;
|
|
||||||
General.MinX = 0;
|
|
||||||
General.MinY = 0;
|
|
||||||
General.MinZ = 0;
|
|
||||||
General.MouseHoverMeshes = 0;
|
|
||||||
General.MouseSelection = 1;
|
|
||||||
General.MouseInvertZoom = 0;
|
|
||||||
General.NonModalWindows = 1;
|
|
||||||
General.NoPopup = 0;
|
|
||||||
General.NumThreads = 1;
|
|
||||||
General.OptionsPositionX = 827;
|
|
||||||
General.OptionsPositionY = 541;
|
|
||||||
General.Orthographic = 1;
|
|
||||||
General.PluginPositionX = 58;
|
|
||||||
General.PluginPositionY = 658;
|
|
||||||
General.PluginHeight = 488;
|
|
||||||
General.PluginWidth = 708;
|
|
||||||
General.PointSize = 3;
|
|
||||||
General.PolygonOffsetAlwaysOn = 0;
|
|
||||||
General.PolygonOffsetFactor = 1;
|
|
||||||
General.PolygonOffsetUnits = 1;
|
|
||||||
General.ProgressMeterStep = 20;
|
|
||||||
General.QuadricSubdivisions = 6;
|
|
||||||
General.RotationX = -0;
|
|
||||||
General.RotationY = 0;
|
|
||||||
General.RotationZ = -0;
|
|
||||||
General.RotationCenterGravity = 1;
|
|
||||||
General.RotationCenterX = 0;
|
|
||||||
General.RotationCenterY = 0;
|
|
||||||
General.RotationCenterZ = 0;
|
|
||||||
General.SaveOptions = 0;
|
|
||||||
General.SaveSession = 1;
|
|
||||||
General.ScaleX = 1;
|
|
||||||
General.ScaleY = 1;
|
|
||||||
General.ScaleZ = 1;
|
|
||||||
General.Shininess = 0.4;
|
|
||||||
General.ShininessExponent = 40;
|
|
||||||
General.ShowModuleMenu = 1;
|
|
||||||
General.ShowOptionsOnStartup = 0;
|
|
||||||
General.ShowMessagesOnStartup = 0;
|
|
||||||
General.SmallAxes = 1;
|
|
||||||
General.SmallAxesPositionX = -60;
|
|
||||||
General.SmallAxesPositionY = -40;
|
|
||||||
General.SmallAxesSize = 30;
|
|
||||||
General.StatisticsPositionX = 650;
|
|
||||||
General.StatisticsPositionY = 150;
|
|
||||||
General.Stereo = 0;
|
|
||||||
General.SystemMenuBar = 1;
|
|
||||||
General.Terminal = 0;
|
|
||||||
General.Tooltips = 1;
|
|
||||||
General.Trackball = 1;
|
|
||||||
General.TrackballHyperbolicSheet = 1;
|
|
||||||
General.TrackballQuaternion0 = 0;
|
|
||||||
General.TrackballQuaternion1 = 0;
|
|
||||||
General.TrackballQuaternion2 = 0;
|
|
||||||
General.TrackballQuaternion3 = 1;
|
|
||||||
General.TranslationX = 0;
|
|
||||||
General.TranslationY = 0;
|
|
||||||
General.TranslationZ = 0;
|
|
||||||
General.VectorType = 4;
|
|
||||||
General.Verbosity = 5;
|
|
||||||
General.VisibilityPositionX = 1118;
|
|
||||||
General.VisibilityPositionY = 464;
|
|
||||||
General.ZoomFactor = 4;
|
|
||||||
General.Color.Background = {255,255,255};
|
|
||||||
General.Color.BackgroundGradient = {208,215,255};
|
|
||||||
General.Color.Foreground = {85,85,85};
|
|
||||||
General.Color.Text = {0,0,0};
|
|
||||||
General.Color.Axes = {0,0,0};
|
|
||||||
General.Color.SmallAxes = {0,0,0};
|
|
||||||
General.Color.AmbientLight = {25,25,25};
|
|
||||||
General.Color.DiffuseLight = {255,255,255};
|
|
||||||
General.Color.SpecularLight = {255,255,255};
|
|
||||||
Geometry.DoubleClickedPointCommand = "";
|
|
||||||
Geometry.DoubleClickedLineCommand = "";
|
|
||||||
Geometry.DoubleClickedSurfaceCommand = "";
|
|
||||||
Geometry.DoubleClickedVolumeCommand = "";
|
|
||||||
Geometry.OCCTargetUnit = "";
|
|
||||||
Geometry.AutoCoherence = 1;
|
|
||||||
Geometry.Clip = 0;
|
|
||||||
Geometry.CopyMeshingMethod = 0;
|
|
||||||
Geometry.DoubleClickedEntityTag = 0;
|
|
||||||
Geometry.ExactExtrusion = 1;
|
|
||||||
Geometry.ExtrudeReturnLateralEntities = 1;
|
|
||||||
Geometry.ExtrudeSplinePoints = 5;
|
|
||||||
Geometry.HighlightOrphans = 0;
|
|
||||||
Geometry.LabelType = 0;
|
|
||||||
Geometry.Light = 1;
|
|
||||||
Geometry.LightTwoSide = 1;
|
|
||||||
Geometry.Lines = 1;
|
|
||||||
Geometry.LineNumbers = 0;
|
|
||||||
Geometry.LineSelectWidth = 3;
|
|
||||||
Geometry.LineType = 0;
|
|
||||||
Geometry.LineWidth = 2;
|
|
||||||
Geometry.MatchGeomAndMesh = 0;
|
|
||||||
Geometry.MatchMeshScaleFactor = 1;
|
|
||||||
Geometry.MatchMeshTolerance = 1e-06;
|
|
||||||
Geometry.Normals = 0;
|
|
||||||
Geometry.NumSubEdges = 40;
|
|
||||||
Geometry.OCCAutoFix = 1;
|
|
||||||
Geometry.OCCBooleanPreserveNumbering = 1;
|
|
||||||
Geometry.OCCDisableSTL = 0;
|
|
||||||
Geometry.OCCFixDegenerated = 0;
|
|
||||||
Geometry.OCCFixSmallEdges = 0;
|
|
||||||
Geometry.OCCFixSmallFaces = 0;
|
|
||||||
Geometry.OCCImportLabels = 1;
|
|
||||||
Geometry.OCCParallel = 0;
|
|
||||||
Geometry.OCCScaling = 1;
|
|
||||||
Geometry.OCCSewFaces = 0;
|
|
||||||
Geometry.OffsetX = 0;
|
|
||||||
Geometry.OffsetY = 0;
|
|
||||||
Geometry.OffsetZ = 0;
|
|
||||||
Geometry.OldCircle = 0;
|
|
||||||
Geometry.OldRuledSurface = 0;
|
|
||||||
Geometry.OldNewReg = 1;
|
|
||||||
Geometry.Points = 1;
|
|
||||||
Geometry.PointNumbers = 0;
|
|
||||||
Geometry.PointSelectSize = 6;
|
|
||||||
Geometry.PointSize = 4;
|
|
||||||
Geometry.PointType = 0;
|
|
||||||
Geometry.ReparamOnFaceRobust = 0;
|
|
||||||
Geometry.ScalingFactor = 1;
|
|
||||||
Geometry.OrientedPhysicals = 1;
|
|
||||||
Geometry.SnapX = 0.1;
|
|
||||||
Geometry.SnapY = 0.1;
|
|
||||||
Geometry.SnapZ = 0.1;
|
|
||||||
Geometry.Surfaces = 0;
|
|
||||||
Geometry.SurfaceNumbers = 0;
|
|
||||||
Geometry.SurfaceType = 0;
|
|
||||||
Geometry.Tangents = 0;
|
|
||||||
Geometry.Tolerance = 1e-08;
|
|
||||||
Geometry.ToleranceBoolean = 0;
|
|
||||||
Geometry.Transform = 0;
|
|
||||||
Geometry.TransformXX = 1;
|
|
||||||
Geometry.TransformXY = 0;
|
|
||||||
Geometry.TransformXZ = 0;
|
|
||||||
Geometry.TransformYX = 0;
|
|
||||||
Geometry.TransformYY = 1;
|
|
||||||
Geometry.TransformYZ = 0;
|
|
||||||
Geometry.TransformZX = 0;
|
|
||||||
Geometry.TransformZY = 0;
|
|
||||||
Geometry.TransformZZ = 1;
|
|
||||||
Geometry.Volumes = 0;
|
|
||||||
Geometry.VolumeNumbers = 0;
|
|
||||||
Geometry.Color.Points = {90,90,90};
|
|
||||||
Geometry.Color.Lines = {0,0,255};
|
|
||||||
Geometry.Color.Surfaces = {128,128,128};
|
|
||||||
Geometry.Color.Volumes = {255,255,0};
|
|
||||||
Geometry.Color.Selection = {255,0,0};
|
|
||||||
Geometry.Color.HighlightZero = {255,0,0};
|
|
||||||
Geometry.Color.HighlightOne = {255,150,0};
|
|
||||||
Geometry.Color.HighlightTwo = {255,255,0};
|
|
||||||
Geometry.Color.Tangents = {255,255,0};
|
|
||||||
Geometry.Color.Normals = {255,0,0};
|
|
||||||
Geometry.Color.Projection = {0,255,0};
|
|
||||||
Mesh.Algorithm = 2;
|
|
||||||
Mesh.Algorithm3D = 1;
|
|
||||||
Mesh.AngleSmoothNormals = 30;
|
|
||||||
Mesh.AngleToleranceFacetOverlap = 0.1;
|
|
||||||
Mesh.AnisoMax = 9.999999999999999e+32;
|
|
||||||
Mesh.AllowSwapAngle = 10;
|
|
||||||
Mesh.BdfFieldFormat = 1;
|
|
||||||
Mesh.Binary = 0;
|
|
||||||
Mesh.BoundaryLayerFanPoints = 5;
|
|
||||||
Mesh.CgnsImportOrder = 1;
|
|
||||||
Mesh.CgnsConstructTopology = 0;
|
|
||||||
Mesh.CharacteristicLengthExtendFromBoundary = 1;
|
|
||||||
Mesh.CharacteristicLengthFactor = 1;
|
|
||||||
Mesh.CharacteristicLengthMin = 0;
|
|
||||||
Mesh.CharacteristicLengthMax = 1e+22;
|
|
||||||
Mesh.CharacteristicLengthFromCurvature = 0;
|
|
||||||
Mesh.CharacteristicLengthFromPoints = 1;
|
|
||||||
Mesh.Clip = 0;
|
|
||||||
Mesh.ColorCarousel = 0;
|
|
||||||
Mesh.CompoundClassify = 1;
|
|
||||||
Mesh.CompoundCharacteristicLengthFactor = 0.5;
|
|
||||||
Mesh.CpuTime = 0;
|
|
||||||
Mesh.DrawSkinOnly = 0;
|
|
||||||
Mesh.Dual = 0;
|
|
||||||
Mesh.ElementOrder = 1;
|
|
||||||
Mesh.Explode = 1;
|
|
||||||
Mesh.FlexibleTransfinite = 0;
|
|
||||||
Mesh.NewtonConvergenceTestXYZ = 0;
|
|
||||||
Mesh.Format = 10;
|
|
||||||
Mesh.Hexahedra = 1;
|
|
||||||
Mesh.HighOrderIterMax = 100;
|
|
||||||
Mesh.HighOrderNumLayers = 6;
|
|
||||||
Mesh.HighOrderOptimize = 0;
|
|
||||||
Mesh.HighOrderPassMax = 25;
|
|
||||||
Mesh.HighOrderPeriodic = 0;
|
|
||||||
Mesh.HighOrderPoissonRatio = 0.33;
|
|
||||||
Mesh.HighOrderPrimSurfMesh = 0;
|
|
||||||
Mesh.HighOrderDistCAD = 0;
|
|
||||||
Mesh.HighOrderThresholdMin = 0.1;
|
|
||||||
Mesh.HighOrderThresholdMax = 2;
|
|
||||||
Mesh.LabelSampling = 1;
|
|
||||||
Mesh.LabelType = 0;
|
|
||||||
Mesh.LcIntegrationPrecision = 1e-09;
|
|
||||||
Mesh.Light = 1;
|
|
||||||
Mesh.LightLines = 2;
|
|
||||||
Mesh.LightTwoSide = 1;
|
|
||||||
Mesh.Lines = 1;
|
|
||||||
Mesh.LineNumbers = 0;
|
|
||||||
Mesh.LineWidth = 1;
|
|
||||||
Mesh.MaxNumThreads1D = 0;
|
|
||||||
Mesh.MaxNumThreads2D = 0;
|
|
||||||
Mesh.MaxNumThreads3D = 0;
|
|
||||||
Mesh.MeshOnlyVisible = 0;
|
|
||||||
Mesh.MetisAlgorithm = 1;
|
|
||||||
Mesh.MetisEdgeMatching = 2;
|
|
||||||
Mesh.MetisMaxLoadImbalance = -1;
|
|
||||||
Mesh.MetisObjective = 1;
|
|
||||||
Mesh.MetisMinConn = -1;
|
|
||||||
Mesh.MetisRefinementAlgorithm = 2;
|
|
||||||
Mesh.MinimumCirclePoints = 7;
|
|
||||||
Mesh.MinimumCurvePoints = 3;
|
|
||||||
Mesh.MshFileVersion = 4.1;
|
|
||||||
Mesh.MedFileMinorVersion = -1;
|
|
||||||
Mesh.MedImportGroupsOfNodes = 0;
|
|
||||||
Mesh.MedSingleModel = 0;
|
|
||||||
Mesh.PartitionHexWeight = -1;
|
|
||||||
Mesh.PartitionLineWeight = -1;
|
|
||||||
Mesh.PartitionPrismWeight = -1;
|
|
||||||
Mesh.PartitionPyramidWeight = -1;
|
|
||||||
Mesh.PartitionQuadWeight = -1;
|
|
||||||
Mesh.PartitionTrihedronWeight = 0;
|
|
||||||
Mesh.PartitionTetWeight = -1;
|
|
||||||
Mesh.PartitionTriWeight = -1;
|
|
||||||
Mesh.PartitionCreateTopology = 1;
|
|
||||||
Mesh.PartitionCreatePhysicals = 1;
|
|
||||||
Mesh.PartitionCreateGhostCells = 0;
|
|
||||||
Mesh.PartitionSplitMeshFiles = 0;
|
|
||||||
Mesh.PartitionTopologyFile = 0;
|
|
||||||
Mesh.PartitionOldStyleMsh2 = 1;
|
|
||||||
Mesh.NbHexahedra = 0;
|
|
||||||
Mesh.NbNodes = 27248;
|
|
||||||
Mesh.NbPartitions = 0;
|
|
||||||
Mesh.NbPrisms = 0;
|
|
||||||
Mesh.NbPyramids = 0;
|
|
||||||
Mesh.NbTrihedra = 0;
|
|
||||||
Mesh.NbQuadrangles = 26877;
|
|
||||||
Mesh.NbTetrahedra = 0;
|
|
||||||
Mesh.NbTriangles = 0;
|
|
||||||
Mesh.Normals = 0;
|
|
||||||
Mesh.NumSubEdges = 2;
|
|
||||||
Mesh.Optimize = 1;
|
|
||||||
Mesh.OptimizeThreshold = 0.3;
|
|
||||||
Mesh.OptimizeNetgen = 0;
|
|
||||||
Mesh.Points = 0;
|
|
||||||
Mesh.PointNumbers = 0;
|
|
||||||
Mesh.PointSize = 4;
|
|
||||||
Mesh.PointType = 0;
|
|
||||||
Mesh.Prisms = 1;
|
|
||||||
Mesh.Pyramids = 1;
|
|
||||||
Mesh.Trihedra = 1;
|
|
||||||
Mesh.Quadrangles = 1;
|
|
||||||
Mesh.QualityInf = 0;
|
|
||||||
Mesh.QualitySup = 0;
|
|
||||||
Mesh.QualityType = 2;
|
|
||||||
Mesh.RadiusInf = 0;
|
|
||||||
Mesh.RadiusSup = 0;
|
|
||||||
Mesh.RandomFactor = 1e-09;
|
|
||||||
Mesh.RandomFactor3D = 1e-12;
|
|
||||||
Mesh.RandomSeed = 1;
|
|
||||||
Mesh.PreserveNumberingMsh2 = 0;
|
|
||||||
Mesh.IgnorePeriodicity = 0;
|
|
||||||
Mesh.RecombinationAlgorithm = 1;
|
|
||||||
Mesh.RecombineAll = 0;
|
|
||||||
Mesh.RecombineOptimizeTopology = 5;
|
|
||||||
Mesh.Recombine3DAll = 0;
|
|
||||||
Mesh.Recombine3DLevel = 0;
|
|
||||||
Mesh.Recombine3DConformity = 0;
|
|
||||||
Mesh.RefineSteps = 10;
|
|
||||||
Mesh.Renumber = 1;
|
|
||||||
Mesh.SaveAll = 0;
|
|
||||||
Mesh.SaveElementTagType = 1;
|
|
||||||
Mesh.SaveTopology = 0;
|
|
||||||
Mesh.SaveParametric = 0;
|
|
||||||
Mesh.SaveGroupsOfNodes = 0;
|
|
||||||
Mesh.ScalingFactor = 1;
|
|
||||||
Mesh.SecondOrderExperimental = 0;
|
|
||||||
Mesh.SecondOrderIncomplete = 0;
|
|
||||||
Mesh.SecondOrderLinear = 0;
|
|
||||||
Mesh.Smoothing = 1;
|
|
||||||
Mesh.SmoothCrossField = 0;
|
|
||||||
Mesh.CrossFieldClosestPoint = 1;
|
|
||||||
Mesh.SmoothNormals = 0;
|
|
||||||
Mesh.SmoothRatio = 1.8;
|
|
||||||
Mesh.StlOneSolidPerSurface = 0;
|
|
||||||
Mesh.StlRemoveDuplicateTriangles = 0;
|
|
||||||
Mesh.SubdivisionAlgorithm = 0;
|
|
||||||
Mesh.SurfaceEdges = 0;
|
|
||||||
Mesh.SurfaceFaces = 0;
|
|
||||||
Mesh.SurfaceNumbers = 0;
|
|
||||||
Mesh.SwitchElementTags = 0;
|
|
||||||
Mesh.Tangents = 0;
|
|
||||||
Mesh.Tetrahedra = 1;
|
|
||||||
Mesh.ToleranceEdgeLength = 0;
|
|
||||||
Mesh.ToleranceInitialDelaunay = 1e-08;
|
|
||||||
Mesh.Triangles = 1;
|
|
||||||
Mesh.UnvStrictFormat = 1;
|
|
||||||
Mesh.VolumeEdges = 1;
|
|
||||||
Mesh.VolumeFaces = 0;
|
|
||||||
Mesh.VolumeNumbers = 0;
|
|
||||||
Mesh.Voronoi = 0;
|
|
||||||
Mesh.ZoneDefinition = 0;
|
|
||||||
Mesh.Color.Points = {0,0,255};
|
|
||||||
Mesh.Color.PointsSup = {255,0,255};
|
|
||||||
Mesh.Color.Lines = {0,0,0};
|
|
||||||
Mesh.Color.Triangles = {160,150,255};
|
|
||||||
Mesh.Color.Quadrangles = {130,120,225};
|
|
||||||
Mesh.Color.Tetrahedra = {160,150,255};
|
|
||||||
Mesh.Color.Hexahedra = {130,120,225};
|
|
||||||
Mesh.Color.Prisms = {232,210,23};
|
|
||||||
Mesh.Color.Pyramids = {217,113,38};
|
|
||||||
Mesh.Color.Trihedra = {20,255,0};
|
|
||||||
Mesh.Color.Tangents = {255,255,0};
|
|
||||||
Mesh.Color.Normals = {255,0,0};
|
|
||||||
Mesh.Color.Zero = {255,120,0};
|
|
||||||
Mesh.Color.One = {0,255,132};
|
|
||||||
Mesh.Color.Two = {255,160,0};
|
|
||||||
Mesh.Color.Three = {0,255,192};
|
|
||||||
Mesh.Color.Four = {255,200,0};
|
|
||||||
Mesh.Color.Five = {0,216,255};
|
|
||||||
Mesh.Color.Six = {255,240,0};
|
|
||||||
Mesh.Color.Seven = {0,176,255};
|
|
||||||
Mesh.Color.Eight = {228,255,0};
|
|
||||||
Mesh.Color.Nine = {0,116,255};
|
|
||||||
Mesh.Color.Ten = {188,255,0};
|
|
||||||
Mesh.Color.Eleven = {0,76,255};
|
|
||||||
Mesh.Color.Twelve = {148,255,0};
|
|
||||||
Mesh.Color.Thirteen = {24,0,255};
|
|
||||||
Mesh.Color.Fourteen = {108,255,0};
|
|
||||||
Mesh.Color.Fifteen = {84,0,255};
|
|
||||||
Mesh.Color.Sixteen = {68,255,0};
|
|
||||||
Mesh.Color.Seventeen = {104,0,255};
|
|
||||||
Mesh.Color.Eighteen = {0,255,52};
|
|
||||||
Mesh.Color.Nineteen = {184,0,255};
|
|
||||||
Solver.Executable0 = "";
|
|
||||||
Solver.Executable1 = "";
|
|
||||||
Solver.Executable2 = "";
|
|
||||||
Solver.Executable3 = "";
|
|
||||||
Solver.Executable4 = "";
|
|
||||||
Solver.Executable5 = "";
|
|
||||||
Solver.Executable6 = "";
|
|
||||||
Solver.Executable7 = "";
|
|
||||||
Solver.Executable8 = "";
|
|
||||||
Solver.Executable9 = "";
|
|
||||||
Solver.Name0 = "GetDP";
|
|
||||||
Solver.Name1 = "";
|
|
||||||
Solver.Name2 = "";
|
|
||||||
Solver.Name3 = "";
|
|
||||||
Solver.Name4 = "";
|
|
||||||
Solver.Name5 = "";
|
|
||||||
Solver.Name6 = "";
|
|
||||||
Solver.Name7 = "";
|
|
||||||
Solver.Name8 = "";
|
|
||||||
Solver.Name9 = "";
|
|
||||||
Solver.Extension0 = ".pro";
|
|
||||||
Solver.Extension1 = "";
|
|
||||||
Solver.Extension2 = "";
|
|
||||||
Solver.Extension3 = "";
|
|
||||||
Solver.Extension4 = "";
|
|
||||||
Solver.Extension5 = "";
|
|
||||||
Solver.Extension6 = "";
|
|
||||||
Solver.Extension7 = "";
|
|
||||||
Solver.Extension8 = "";
|
|
||||||
Solver.Extension9 = "";
|
|
||||||
Solver.OctaveInterpreter = "octave";
|
|
||||||
Solver.PythonInterpreter = "python";
|
|
||||||
Solver.RemoteLogin0 = "";
|
|
||||||
Solver.RemoteLogin1 = "";
|
|
||||||
Solver.RemoteLogin2 = "";
|
|
||||||
Solver.RemoteLogin3 = "";
|
|
||||||
Solver.RemoteLogin4 = "";
|
|
||||||
Solver.RemoteLogin5 = "";
|
|
||||||
Solver.RemoteLogin6 = "";
|
|
||||||
Solver.RemoteLogin7 = "";
|
|
||||||
Solver.RemoteLogin8 = "";
|
|
||||||
Solver.RemoteLogin9 = "";
|
|
||||||
Solver.SocketName = ".gmshsock";
|
|
||||||
Solver.AlwaysListen = 0;
|
|
||||||
Solver.AutoArchiveOutputFiles = 0;
|
|
||||||
Solver.AutoCheck = 1;
|
|
||||||
Solver.AutoLoadDatabase = 0;
|
|
||||||
Solver.AutoSaveDatabase = 1;
|
|
||||||
Solver.AutoMesh = 2;
|
|
||||||
Solver.AutoMergeFile = 1;
|
|
||||||
Solver.AutoShowViews = 2;
|
|
||||||
Solver.AutoShowLastStep = 1;
|
|
||||||
Solver.Plugins = 0;
|
|
||||||
Solver.ShowInvisibleParameters = 0;
|
|
||||||
Solver.Timeout = 5;
|
|
||||||
PostProcessing.DoubleClickedGraphPointCommand = "";
|
|
||||||
PostProcessing.GraphPointCommand = "";
|
|
||||||
PostProcessing.AnimationDelay = 0.1;
|
|
||||||
PostProcessing.AnimationCycle = 0;
|
|
||||||
PostProcessing.AnimationStep = 1;
|
|
||||||
PostProcessing.CombineRemoveOriginal = 1;
|
|
||||||
PostProcessing.DoubleClickedGraphPointX = 0;
|
|
||||||
PostProcessing.DoubleClickedGraphPointY = 0;
|
|
||||||
PostProcessing.DoubleClickedView = 0;
|
|
||||||
PostProcessing.ForceElementData = 0;
|
|
||||||
PostProcessing.ForceNodeData = 0;
|
|
||||||
PostProcessing.Format = 10;
|
|
||||||
PostProcessing.GraphPointX = 0;
|
|
||||||
PostProcessing.GraphPointY = 0;
|
|
||||||
PostProcessing.HorizontalScales = 1;
|
|
||||||
PostProcessing.Link = 0;
|
|
||||||
PostProcessing.NbViews = 0;
|
|
||||||
PostProcessing.Plugins = 1;
|
|
||||||
PostProcessing.SaveInterpolationMatrices = 1;
|
|
||||||
PostProcessing.SaveMesh = 1;
|
|
||||||
PostProcessing.Smoothing = 0;
|
|
||||||
Print.ParameterCommand = "Mesh.Clip=1; View.Clip=1; General.ClipWholeElements=1; General.Clip0D=Print.Parameter; SetChanged;";
|
|
||||||
Print.Parameter = 0;
|
|
||||||
Print.ParameterFirst = -1;
|
|
||||||
Print.ParameterLast = 1;
|
|
||||||
Print.ParameterSteps = 10;
|
|
||||||
Print.Background = 0;
|
|
||||||
Print.CompositeWindows = 0;
|
|
||||||
Print.PgfTwoDim = 1;
|
|
||||||
Print.PgfExportAxis = 0;
|
|
||||||
Print.PgfHorizontalBar = 0;
|
|
||||||
Print.DeleteTemporaryFiles = 1;
|
|
||||||
Print.EpsBestRoot = 1;
|
|
||||||
Print.EpsCompress = 0;
|
|
||||||
Print.EpsLineWidthFactor = 1;
|
|
||||||
Print.EpsOcclusionCulling = 1;
|
|
||||||
Print.EpsPointSizeFactor = 1;
|
|
||||||
Print.EpsPS3Shading = 0;
|
|
||||||
Print.EpsQuality = 1;
|
|
||||||
Print.Format = 10;
|
|
||||||
Print.GeoLabels = 1;
|
|
||||||
Print.GeoOnlyPhysicals = 0;
|
|
||||||
Print.GifDither = 0;
|
|
||||||
Print.GifInterlace = 0;
|
|
||||||
Print.GifSort = 1;
|
|
||||||
Print.GifTransparent = 0;
|
|
||||||
Print.Height = -1;
|
|
||||||
Print.JpegQuality = 100;
|
|
||||||
Print.JpegSmoothing = 0;
|
|
||||||
Print.PostElementary = 1;
|
|
||||||
Print.PostElement = 0;
|
|
||||||
Print.PostGamma = 0;
|
|
||||||
Print.PostEta = 0;
|
|
||||||
Print.PostSICN = 0;
|
|
||||||
Print.PostSIGE = 0;
|
|
||||||
Print.PostDisto = 0;
|
|
||||||
Print.TexAsEquation = 0;
|
|
||||||
Print.Text = 1;
|
|
||||||
Print.X3dCompatibility = 0;
|
|
||||||
Print.X3dPrecision = 1e-09;
|
|
||||||
Print.X3dRemoveInnerBorders = 0;
|
|
||||||
Print.X3dTransparency = 0;
|
|
||||||
Print.Width = -1;
|
|
||||||
|
|
@ -67,24 +67,35 @@ MODULE moduleMeshInputGmsh2
|
||||||
!Read the nodes information
|
!Read the nodes information
|
||||||
DO e = 1, self%numNodes
|
DO e = 1, self%numNodes
|
||||||
READ(10, *) n, r(1), r(2), r(3)
|
READ(10, *) n, r(1), r(2), r(3)
|
||||||
SELECT CASE(self%geometry)
|
SELECT CASE(self%dimen)
|
||||||
CASE("3DCart")
|
CASE(3)
|
||||||
ALLOCATE(meshNode3Dcart::self%nodes(n)%obj)
|
ALLOCATE(meshNode3Dcart::self%nodes(n)%obj)
|
||||||
|
self%connectMesh => connectMesh3DCart
|
||||||
|
|
||||||
CASE("2DCyl")
|
CASE(2)
|
||||||
ALLOCATE(meshNode2DCyl:: self%nodes(n)%obj)
|
SELECT CASE(self%geometry)
|
||||||
|
CASE("Cyl")
|
||||||
|
ALLOCATE(meshNode2DCyl:: self%nodes(n)%obj)
|
||||||
|
self%connectMesh => connectMesh2DCyl
|
||||||
|
|
||||||
|
CASE("Cart")
|
||||||
|
ALLOCATE(meshNode2DCart:: self%nodes(n)%obj)
|
||||||
|
self%connectMesh => connectMesh2DCart
|
||||||
|
|
||||||
|
END SELECT
|
||||||
r(3) = 0.D0
|
r(3) = 0.D0
|
||||||
|
|
||||||
CASE("2DCart")
|
CASE(1)
|
||||||
ALLOCATE(meshNode2DCart:: self%nodes(n)%obj)
|
SELECT CASE(self%geometry)
|
||||||
r(3) = 0.D0
|
CASE("Rad")
|
||||||
|
ALLOCATE(meshNode1DRad:: self%nodes(n)%obj)
|
||||||
|
self%connectMesh => connectMesh1DRad
|
||||||
|
|
||||||
CASE("1DRad")
|
CASE("Cart")
|
||||||
ALLOCATE(meshNode1DRad:: self%nodes(n)%obj)
|
ALLOCATE(meshNode1DCart:: self%nodes(n)%obj)
|
||||||
r(2:3) = 0.D0
|
self%connectMesh => connectMesh1DCart
|
||||||
|
|
||||||
CASE("1DCart")
|
END SELECT
|
||||||
ALLOCATE(meshNode1DCart:: self%nodes(n)%obj)
|
|
||||||
r(2:3) = 0.D0
|
r(2:3) = 0.D0
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
@ -92,7 +103,6 @@ MODULE moduleMeshInputGmsh2
|
||||||
|
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
|
|
||||||
!Skip comments
|
!Skip comments
|
||||||
READ(10, *)
|
READ(10, *)
|
||||||
READ(10, *)
|
READ(10, *)
|
||||||
|
|
@ -106,16 +116,16 @@ MODULE moduleMeshInputGmsh2
|
||||||
self%numEdges = 0
|
self%numEdges = 0
|
||||||
DO e = 1, totalNumElem
|
DO e = 1, totalNumElem
|
||||||
READ(10, *) eTemp, elemType
|
READ(10, *) eTemp, elemType
|
||||||
SELECT CASE(self%geometry)
|
SELECT CASE(self%dimen)
|
||||||
CASE("3DCart")
|
CASE(3)
|
||||||
!Element type 2 is triangle in gmsh
|
!Element type 2 is triangle in gmsh
|
||||||
IF (elemType == 2) self%numEdges = e
|
IF (elemType == 2) self%numEdges = e
|
||||||
|
|
||||||
CASE("2DCyl","2DCart")
|
CASE(2)
|
||||||
!Element type 1 is segment in Gmsh
|
!Element type 1 is segment in Gmsh
|
||||||
IF (elemType == 1) self%numEdges = e
|
IF (elemType == 1) self%numEdges = e
|
||||||
|
|
||||||
CASE("1DRad","1DCart")
|
CASE(1)
|
||||||
!Element type 15 is physical point in Gmsh
|
!Element type 15 is physical point in Gmsh
|
||||||
IF (elemType == 15) self%numEdges = e
|
IF (elemType == 15) self%numEdges = e
|
||||||
|
|
||||||
|
|
@ -148,8 +158,8 @@ MODULE moduleMeshInputGmsh2
|
||||||
!Reads edges
|
!Reads edges
|
||||||
DO e=1, self%numEdges
|
DO e=1, self%numEdges
|
||||||
!Reads the edge according to the geometry
|
!Reads the edge according to the geometry
|
||||||
SELECT CASE(self%geometry)
|
SELECT CASE(self%dimen)
|
||||||
CASE("3DCart")
|
CASE(3)
|
||||||
READ(10, *) n, elemType, eTemp, boundaryType
|
READ(10, *) n, elemType, eTemp, boundaryType
|
||||||
BACKSPACE(10)
|
BACKSPACE(10)
|
||||||
|
|
||||||
|
|
@ -167,41 +177,49 @@ MODULE moduleMeshInputGmsh2
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
CASE("2DCyl")
|
CASE (2)
|
||||||
ALLOCATE(p(1:2))
|
SELECT CASE(self%geometry)
|
||||||
|
CASE("Cyl")
|
||||||
|
ALLOCATE(p(1:2))
|
||||||
|
|
||||||
READ(10,*) n, elemType, eTemp, boundaryType, eTemp, p(1:2)
|
READ(10,*) n, elemType, eTemp, boundaryType, eTemp, p(1:2)
|
||||||
!Associate boundary condition procedure.
|
!Associate boundary condition procedure.
|
||||||
bt = getBoundaryId(boundaryType)
|
bt = getBoundaryId(boundaryType)
|
||||||
|
|
||||||
ALLOCATE(meshEdge2DCyl:: self%edges(e)%obj)
|
ALLOCATE(meshEdge2DCyl:: self%edges(e)%obj)
|
||||||
|
|
||||||
CASE("2DCart")
|
CASE("Cart")
|
||||||
ALLOCATE(p(1:2))
|
ALLOCATE(p(1:2))
|
||||||
|
|
||||||
READ(10,*) n, elemType, eTemp, boundaryType, eTemp, p(1:2)
|
READ(10,*) n, elemType, eTemp, boundaryType, eTemp, p(1:2)
|
||||||
!Associate boundary condition procedure.
|
!Associate boundary condition procedure.
|
||||||
bt = getBoundaryId(boundaryType)
|
bt = getBoundaryId(boundaryType)
|
||||||
|
|
||||||
ALLOCATE(meshEdge2DCart:: self%edges(e)%obj)
|
ALLOCATE(meshEdge2DCart:: self%edges(e)%obj)
|
||||||
|
|
||||||
CASE("1DRad")
|
END SELECT
|
||||||
ALLOCATE(p(1:1))
|
|
||||||
|
|
||||||
READ(10, *) n, elemType, eTemp, boundaryType, eTemp, p(1)
|
CASE(1)
|
||||||
!Associate boundary condition
|
SELECT CASE(self%geometry)
|
||||||
bt = getBoundaryId(boundaryType)
|
CASE("Rad")
|
||||||
|
ALLOCATE(p(1:1))
|
||||||
|
|
||||||
ALLOCATE(meshEdge1DRad:: self%edges(e)%obj)
|
READ(10, *) n, elemType, eTemp, boundaryType, eTemp, p(1)
|
||||||
|
!Associate boundary condition
|
||||||
|
bt = getBoundaryId(boundaryType)
|
||||||
|
|
||||||
CASE("1DCart")
|
ALLOCATE(meshEdge1DRad:: self%edges(e)%obj)
|
||||||
ALLOCATE(p(1:1))
|
|
||||||
|
|
||||||
READ(10, *) n, elemType, eTemp, boundaryType, eTemp, p(1)
|
CASE("Cart")
|
||||||
!Associate boundary condition
|
ALLOCATE(p(1:1))
|
||||||
bt = getBoundaryId(boundaryType)
|
|
||||||
|
|
||||||
ALLOCATE(meshEdge1DCart:: self%edges(e)%obj)
|
READ(10, *) n, elemType, eTemp, boundaryType, eTemp, p(1)
|
||||||
|
!Associate boundary condition
|
||||||
|
bt = getBoundaryId(boundaryType)
|
||||||
|
|
||||||
|
ALLOCATE(meshEdge1DCart:: self%edges(e)%obj)
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
|
|
@ -215,8 +233,8 @@ MODULE moduleMeshInputGmsh2
|
||||||
!Read and initialize volumes
|
!Read and initialize volumes
|
||||||
DO e = 1, self%numVols
|
DO e = 1, self%numVols
|
||||||
!Reads the volume according to the geometry
|
!Reads the volume according to the geometry
|
||||||
SELECT CASE(self%geometry)
|
SELECT CASE(self%dimen)
|
||||||
CASE("3DCart")
|
CASE(3)
|
||||||
READ(10, *) n, elemType
|
READ(10, *) n, elemType
|
||||||
BACKSPACE(10)
|
BACKSPACE(10)
|
||||||
|
|
||||||
|
|
@ -229,56 +247,64 @@ MODULE moduleMeshInputGmsh2
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
CASE("2DCyl")
|
CASE(2)
|
||||||
READ(10,*) n, elemType
|
SELECT CASE(self%geometry)
|
||||||
BACKSPACE(10)
|
CASE("Cyl")
|
||||||
|
READ(10,*) n, elemType
|
||||||
|
BACKSPACE(10)
|
||||||
|
|
||||||
SELECT CASE(elemType)
|
SELECT CASE(elemType)
|
||||||
CASE (2)
|
CASE (2)
|
||||||
!Triangular element
|
!Triangular element
|
||||||
ALLOCATE(p(1:3))
|
ALLOCATE(p(1:3))
|
||||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:3)
|
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:3)
|
||||||
ALLOCATE(meshVol2DCylTria:: self%vols(e)%obj)
|
ALLOCATE(meshVol2DCylTria:: self%vols(e)%obj)
|
||||||
|
|
||||||
CASE (3)
|
CASE (3)
|
||||||
!Quadrilateral element
|
!Quadrilateral element
|
||||||
ALLOCATE(p(1:4))
|
ALLOCATE(p(1:4))
|
||||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
||||||
ALLOCATE(meshVol2DCylQuad:: self%vols(e)%obj)
|
ALLOCATE(meshVol2DCylQuad:: self%vols(e)%obj)
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
CASE("Cart")
|
||||||
|
READ(10,*) n, elemType
|
||||||
|
BACKSPACE(10)
|
||||||
|
|
||||||
|
SELECT CASE(elemType)
|
||||||
|
CASE (2)
|
||||||
|
!Triangular element
|
||||||
|
ALLOCATE(p(1:3))
|
||||||
|
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:3)
|
||||||
|
ALLOCATE(meshVol2DCartTria:: self%vols(e)%obj)
|
||||||
|
|
||||||
|
CASE (3)
|
||||||
|
!Quadrilateral element
|
||||||
|
ALLOCATE(p(1:4))
|
||||||
|
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
||||||
|
ALLOCATE(meshVol2DCartQuad:: self%vols(e)%obj)
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
CASE("2DCart")
|
CASE(1)
|
||||||
READ(10,*) n, elemType
|
SELECT CASE(self%geometry)
|
||||||
BACKSPACE(10)
|
CASE("Rad")
|
||||||
|
ALLOCATE(p(1:2))
|
||||||
|
|
||||||
SELECT CASE(elemType)
|
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:2)
|
||||||
CASE (2)
|
ALLOCATE(meshVol1DRadSegm:: self%vols(e)%obj)
|
||||||
!Triangular element
|
|
||||||
ALLOCATE(p(1:3))
|
|
||||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:3)
|
|
||||||
ALLOCATE(meshVol2DCartTria:: self%vols(e)%obj)
|
|
||||||
|
|
||||||
CASE (3)
|
CASE("Cart")
|
||||||
!Quadrilateral element
|
ALLOCATE(p(1:2))
|
||||||
ALLOCATE(p(1:4))
|
|
||||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:2)
|
||||||
ALLOCATE(meshVol2DCartQuad:: self%vols(e)%obj)
|
ALLOCATE(meshVol1DCartSegm:: self%vols(e)%obj)
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
CASE("1DRad")
|
|
||||||
ALLOCATE(p(1:2))
|
|
||||||
|
|
||||||
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:2)
|
|
||||||
ALLOCATE(meshVol1DRadSegm:: self%vols(e)%obj)
|
|
||||||
|
|
||||||
CASE("1DCart")
|
|
||||||
ALLOCATE(p(1:2))
|
|
||||||
|
|
||||||
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:2)
|
|
||||||
ALLOCATE(meshVol1DCartSegm:: self%vols(e)%obj)
|
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
CALL self%vols(e)%obj%init(n - numEdges, p, self%nodes)
|
CALL self%vols(e)%obj%init(n - numEdges, p, self%nodes)
|
||||||
|
|
@ -288,6 +314,9 @@ MODULE moduleMeshInputGmsh2
|
||||||
|
|
||||||
CLOSE(10)
|
CLOSE(10)
|
||||||
|
|
||||||
|
!Call mesh connectivity
|
||||||
|
CALL self%connectMesh
|
||||||
|
|
||||||
END SUBROUTINE readGmsh2
|
END SUBROUTINE readGmsh2
|
||||||
|
|
||||||
!Reads the initial information from an output file for an species
|
!Reads the initial information from an output file for an species
|
||||||
|
|
|
||||||
|
|
@ -262,6 +262,8 @@ MODULE moduleMesh
|
||||||
|
|
||||||
!Generic mesh type
|
!Generic mesh type
|
||||||
TYPE, ABSTRACT:: meshGeneric
|
TYPE, ABSTRACT:: meshGeneric
|
||||||
|
!Dimension of the mesh
|
||||||
|
INTEGER:: dimen
|
||||||
!Geometry of the mesh
|
!Geometry of the mesh
|
||||||
CHARACTER(:), ALLOCATABLE:: geometry
|
CHARACTER(:), ALLOCATABLE:: geometry
|
||||||
!Number of elements
|
!Number of elements
|
||||||
|
|
|
||||||
|
|
@ -40,16 +40,6 @@ MODULE moduleInput
|
||||||
CALL readSpecies(config)
|
CALL readSpecies(config)
|
||||||
CALL checkStatus(config, "readSpecies")
|
CALL checkStatus(config, "readSpecies")
|
||||||
|
|
||||||
!Reads case parameters
|
|
||||||
CALL verboseError('Reading Case parameters...')
|
|
||||||
CALL readCase(config)
|
|
||||||
CALL checkStatus(config, "readCase")
|
|
||||||
|
|
||||||
!Read interactions between species
|
|
||||||
CALL verboseError('Reading interaction between species...')
|
|
||||||
CALL readInteractions(config)
|
|
||||||
CALL checkStatus(config, "readInteractions")
|
|
||||||
|
|
||||||
!Read boundaries
|
!Read boundaries
|
||||||
CALL verboseError('Reading boundary conditions...')
|
CALL verboseError('Reading boundary conditions...')
|
||||||
CALL readBoundary(config)
|
CALL readBoundary(config)
|
||||||
|
|
@ -60,6 +50,16 @@ MODULE moduleInput
|
||||||
CALL readGeometry(config)
|
CALL readGeometry(config)
|
||||||
CALL checkStatus(config, "readGeometry")
|
CALL checkStatus(config, "readGeometry")
|
||||||
|
|
||||||
|
!Read solver parameters
|
||||||
|
CALL verboseError('Reading Solver parameters...')
|
||||||
|
CALL readSolver(config)
|
||||||
|
CALL checkStatus(config, "readSolver")
|
||||||
|
|
||||||
|
!Read interactions between species
|
||||||
|
CALL verboseError('Reading interaction between species...')
|
||||||
|
CALL readInteractions(config)
|
||||||
|
CALL checkStatus(config, "readInteractions")
|
||||||
|
|
||||||
!Read probes
|
!Read probes
|
||||||
CALL verboseError('Reading Probes...')
|
CALL verboseError('Reading Probes...')
|
||||||
CALL readProbes(config)
|
CALL readProbes(config)
|
||||||
|
|
@ -85,9 +85,12 @@ MODULE moduleInput
|
||||||
!Copies input file to output folder
|
!Copies input file to output folder
|
||||||
CALL EXECUTE_COMMAND_LINE('cp ' // inputFile // ' ' // path // folder)
|
CALL EXECUTE_COMMAND_LINE('cp ' // inputFile // ' ' // path // folder)
|
||||||
!Copies particle mesh
|
!Copies particle mesh
|
||||||
CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshParticle // ' ' // path // folder)
|
IF (mesh%dimen > 0) THEN
|
||||||
IF (doubleMesh) THEN
|
CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshParticle // ' ' // path // folder)
|
||||||
CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshColl // ' ' // path // folder)
|
IF (doubleMesh) THEN
|
||||||
|
CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshColl // ' ' // path // folder)
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
|
@ -156,7 +159,7 @@ MODULE moduleInput
|
||||||
END SUBROUTINE readReference
|
END SUBROUTINE readReference
|
||||||
|
|
||||||
!Reads the specific case parameters
|
!Reads the specific case parameters
|
||||||
SUBROUTINE readCase(config)
|
SUBROUTINE readSolver(config)
|
||||||
USE moduleRefParam
|
USE moduleRefParam
|
||||||
USE moduleErrors
|
USE moduleErrors
|
||||||
USE moduleCaseParam
|
USE moduleCaseParam
|
||||||
|
|
@ -164,6 +167,7 @@ MODULE moduleInput
|
||||||
USE moduleSpecies
|
USE moduleSpecies
|
||||||
USE moduleCollisions
|
USE moduleCollisions
|
||||||
USE moduleOutput
|
USE moduleOutput
|
||||||
|
USE moduleMesh
|
||||||
USE json_module
|
USE json_module
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
|
@ -172,47 +176,67 @@ MODULE moduleInput
|
||||||
CHARACTER(:), ALLOCATABLE:: object
|
CHARACTER(:), ALLOCATABLE:: object
|
||||||
!simulation final and initial times in [t]
|
!simulation final and initial times in [t]
|
||||||
REAL(8):: finalTime, initialTime
|
REAL(8):: finalTime, initialTime
|
||||||
CHARACTER(:), ALLOCATABLE:: pusherType, WSType
|
CHARACTER(:), ALLOCATABLE:: pusherType, WSType, EMType
|
||||||
INTEGER:: nTau, nSolver
|
INTEGER:: nTau, nSolver
|
||||||
INTEGER:: i
|
INTEGER:: i
|
||||||
CHARACTER(2):: iString
|
CHARACTER(2):: iString
|
||||||
CHARACTER(1):: tString
|
CHARACTER(1):: tString
|
||||||
|
|
||||||
object = 'case'
|
object = 'solver'
|
||||||
|
|
||||||
!Time parameters
|
!Time parameters
|
||||||
CALL config%info(object // '.tau', found, n_children = nTau)
|
CALL config%info(object // '.tau', found, n_children = nTau)
|
||||||
IF (.NOT. found .OR. nTau == 0) CALL criticalError('Required parameter tau not found','readCase')
|
IF (.NOT. found .OR. nTau == 0) THEN
|
||||||
|
CALL criticalError('Required parameter tau not found','readSolver')
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
ALLOCATE(tau(1:nSpecies))
|
ALLOCATE(tau(1:nSpecies))
|
||||||
|
|
||||||
DO i = 1, nTau
|
DO i = 1, nTau
|
||||||
WRITE(iString, '(I2)') i
|
WRITE(iString, '(I2)') i
|
||||||
CALL config%get(object // '.tau(' // TRIM(iString) // ')', tau(i), found)
|
CALL config%get(object // '.tau(' // TRIM(iString) // ')', tau(i), found)
|
||||||
|
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
|
tauMin = MINVAL(tau(1:nTau))
|
||||||
|
|
||||||
IF (nTau < nSpecies) THEN
|
IF (nTau < nSpecies) THEN
|
||||||
CALL warningError('Using minimum time step for some species')
|
CALL warningError('Using minimum time step for some species')
|
||||||
tau(nTau+1:nSpecies) = MINVAL(tau(1:nTau))
|
tau(nTau+1:nSpecies) = tauMin
|
||||||
|
|
||||||
END IF
|
END IF
|
||||||
tauMin = MINVAL(tau)
|
|
||||||
|
|
||||||
!Gets the simulation final time
|
!Gets the simulation final time
|
||||||
CALL config%get(object // '.finalTime', finalTime, found)
|
CALL config%get(object // '.finalTime', finalTime, found)
|
||||||
IF (.NOT. found) CALL criticalError('Required parameter finalTime not found','readCase')
|
IF (.NOT. found) THEN
|
||||||
|
CALL criticalError('Required parameter finalTime not found','readSolver')
|
||||||
|
|
||||||
|
END IF
|
||||||
!Convert simulation time to number of iterations
|
!Convert simulation time to number of iterations
|
||||||
tFinal = INT(finalTime / tauMin)
|
tFinal = INT(finalTime / tauMin)
|
||||||
|
|
||||||
!Gets the simulation initial time
|
!Gets the simulation initial time
|
||||||
CALL config%get(object // '.initialTime', initialTime, found)
|
CALL config%get(object // '.initialTime', initialTime, found)
|
||||||
IF (found) tInitial = INT(initialTime / tauMin)
|
IF (found) THEN
|
||||||
|
tInitial = INT(initialTime / tauMin)
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
!Gest the pusher for each species
|
!Gest the pusher for each species
|
||||||
CALL config%info(object // '.pusher', found, n_children = nSolver)
|
IF (mesh%dimen > 0) THEN
|
||||||
IF (.NOT. found .OR. nSolver /= nSpecies) CALL criticalError('Required parameter pusher not found','readCase')
|
CALL config%info(object // '.pusher', found, n_children = nSolver)
|
||||||
|
IF (.NOT. found .OR. nSolver /= nSpecies) THEN
|
||||||
|
CALL criticalError('Required parameter pusher not found','readSolver')
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
!Allocates all the pushers for particles
|
!Allocates all the pushers for particles
|
||||||
ALLOCATE(solver%pusher(1:nSpecies))
|
ALLOCATE(solver%pusher(1:nSpecies))
|
||||||
!Initialize pushers
|
!Initialize pushers
|
||||||
DO i = 1, nSolver
|
DO i = 1, nSpecies
|
||||||
WRITE(iString, '(I2)') i
|
WRITE(iString, '(I2)') i
|
||||||
CALL config%get(object // '.pusher(' // TRIM(iString) // ')', pusherType, found)
|
CALL config%get(object // '.pusher(' // TRIM(iString) // ')', pusherType, found)
|
||||||
|
|
||||||
|
|
@ -221,22 +245,38 @@ MODULE moduleInput
|
||||||
|
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
!Gest the non-analogue scheme
|
!Get the non-analogue scheme
|
||||||
CALL config%get(object // '.WeightingScheme', WSType, found)
|
CALL config%get(object // '.WeightingScheme', WSType, found)
|
||||||
CALL solver%initWS(WSType)
|
CALL solver%initWS(WSType)
|
||||||
|
|
||||||
!Makes tau(s) non-dimensional
|
!Make tau(s) non-dimensional
|
||||||
tau = tau / ti_ref
|
tau = tau / ti_ref
|
||||||
tauMin = tauMin / ti_ref
|
tauMin = tauMin / ti_ref
|
||||||
|
|
||||||
!Sets the format of output files accordint to iteration number
|
!Set the format of output files accordint to iteration number
|
||||||
iterationDigits = INT(LOG10(REAL(tFinal))) + 1
|
iterationDigits = INT(LOG10(REAL(tFinal))) + 1
|
||||||
WRITE(tString, '(I1)') iterationDigits
|
WRITE(tString, '(I1)') iterationDigits
|
||||||
iterationFormat = "(I" // tString // "." // tString // ")"
|
iterationFormat = "(I" // tString // "." // tString // ")"
|
||||||
|
|
||||||
END SUBROUTINE readCase
|
!Get EM solver
|
||||||
|
CALL config%get(object // '.EMSolver', EMType, found)
|
||||||
|
IF (found) THEN
|
||||||
|
CALL solver%initEM(EMType)
|
||||||
|
SELECT CASE(EMType)
|
||||||
|
CASE("Electrostatic")
|
||||||
|
!Read BC
|
||||||
|
CALL readEMBoundary(config)
|
||||||
|
|
||||||
!Reads the initial information for the species
|
CASE DEFAULT
|
||||||
|
CALL criticalError('EM Solver ' // EMType // ' not found', 'readSolver')
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
|
END SUBROUTINE readSolver
|
||||||
|
|
||||||
|
!Read the initial information for the species
|
||||||
SUBROUTINE readInitial(config)
|
SUBROUTINE readInitial(config)
|
||||||
USE moduleSpecies
|
USE moduleSpecies
|
||||||
USE moduleMesh
|
USE moduleMesh
|
||||||
|
|
@ -270,13 +310,13 @@ MODULE moduleInput
|
||||||
REAL(8):: vTh
|
REAL(8):: vTh
|
||||||
TYPE(lNode), POINTER:: partCurr, partNext
|
TYPE(lNode), POINTER:: partCurr, partNext
|
||||||
|
|
||||||
CALL config%info('case.initial', found, n_children = nInitial)
|
CALL config%info('solver.initial', found, n_children = nInitial)
|
||||||
|
|
||||||
IF (found) THEN
|
IF (found) THEN
|
||||||
!Reads the information from initial species
|
!Reads the information from initial species
|
||||||
DO i = 1, nInitial
|
DO i = 1, nInitial
|
||||||
WRITE(iString, '(I2)') i
|
WRITE(iString, '(I2)') i
|
||||||
object = 'case.initial(' // iString // ')'
|
object = 'solver.initial(' // iString // ')'
|
||||||
CALL config%get(object // '.species', spName, found)
|
CALL config%get(object // '.species', spName, found)
|
||||||
sp = speciesName2Index(spName)
|
sp = speciesName2Index(spName)
|
||||||
CALL config%get(object // '.file', spFile, found)
|
CALL config%get(object // '.file', spFile, found)
|
||||||
|
|
@ -372,7 +412,7 @@ MODULE moduleInput
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
!Convert temporal list of particles into initial partOld array
|
!Convert temporal list of particles into initial partOld array
|
||||||
!Deallocates the list of initial particles
|
!Deallocate the list of initial particles
|
||||||
nNewPart = partInitial%amount
|
nNewPart = partInitial%amount
|
||||||
IF (nNewPart > 0) THEN
|
IF (nNewPart > 0) THEN
|
||||||
ALLOCATE(partOld(1:nNewPart))
|
ALLOCATE(partOld(1:nNewPart))
|
||||||
|
|
@ -504,13 +544,13 @@ MODULE moduleInput
|
||||||
|
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
!Reads relations between species
|
!Read relations between species
|
||||||
DO i = 1, nSpecies
|
DO i = 1, nSpecies
|
||||||
WRITE(iString, '(I2)') i
|
WRITE(iString, '(I2)') i
|
||||||
object = 'species(' // TRIM(iString) // ')'
|
object = 'species(' // TRIM(iString) // ')'
|
||||||
SELECT TYPE(sp => species(i)%obj)
|
SELECT TYPE(sp => species(i)%obj)
|
||||||
TYPE IS (speciesNeutral)
|
TYPE IS (speciesNeutral)
|
||||||
!Gets species linked ion
|
!Get species linked ion
|
||||||
CALL config%get(object // '.ion', linkName, found)
|
CALL config%get(object // '.ion', linkName, found)
|
||||||
IF (found) THEN
|
IF (found) THEN
|
||||||
linkID = speciesName2Index(linkName)
|
linkID = speciesName2Index(linkName)
|
||||||
|
|
@ -519,7 +559,7 @@ MODULE moduleInput
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
TYPE IS (speciesCharged)
|
TYPE IS (speciesCharged)
|
||||||
!Gets species linked neutral
|
!Get species linked neutral
|
||||||
CALL config%get(object // '.neutral', linkName, found)
|
CALL config%get(object // '.neutral', linkName, found)
|
||||||
IF (found) THEN
|
IF (found) THEN
|
||||||
linkID = speciesName2Index(linkName)
|
linkID = speciesName2Index(linkName)
|
||||||
|
|
@ -580,19 +620,6 @@ MODULE moduleInput
|
||||||
!Checks if MC collisions have been defined
|
!Checks if MC collisions have been defined
|
||||||
CALL config%info('interactions.collisions', found)
|
CALL config%info('interactions.collisions', found)
|
||||||
IF (found) THEN
|
IF (found) THEN
|
||||||
!Checks if a mesh for collisions has been defined
|
|
||||||
!The mesh will be initialized and reader in readGeometry
|
|
||||||
CALL config%info('interactions.meshCollisions', found)
|
|
||||||
IF (found) THEN
|
|
||||||
!Points meshForMCC to the specific mesh defined
|
|
||||||
meshForMCC => meshColl
|
|
||||||
|
|
||||||
ELSE
|
|
||||||
!Points the meshForMCC pointer to the Particles Mesh
|
|
||||||
meshForMCC => mesh
|
|
||||||
|
|
||||||
END IF
|
|
||||||
|
|
||||||
!Reads collision time step
|
!Reads collision time step
|
||||||
CALL config%info('interactions.timeStep', found)
|
CALL config%info('interactions.timeStep', found)
|
||||||
IF (found) THEN
|
IF (found) THEN
|
||||||
|
|
@ -792,11 +819,6 @@ MODULE moduleInput
|
||||||
USE moduleMesh
|
USE moduleMesh
|
||||||
USE moduleMeshInputGmsh2, ONLY: initGmsh2
|
USE moduleMeshInputGmsh2, ONLY: initGmsh2
|
||||||
USE moduleMeshInput0D, ONLY: init0D
|
USE moduleMeshInput0D, ONLY: init0D
|
||||||
USE moduleMesh3DCart, ONLY: connectMesh3DCart
|
|
||||||
USE moduleMesh2DCyl, ONLY: connectMesh2DCyl
|
|
||||||
USE moduleMesh2DCart, ONLY: connectMesh2DCart
|
|
||||||
USE moduleMesh1DRad, ONLY: connectMesh1DRad
|
|
||||||
USE moduleMesh1DCart, ONLY: connectMesh1DCart
|
|
||||||
USE moduleErrors
|
USE moduleErrors
|
||||||
USE moduleOutput
|
USE moduleOutput
|
||||||
USE moduleRefParam
|
USE moduleRefParam
|
||||||
|
|
@ -805,86 +827,122 @@ MODULE moduleInput
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
|
||||||
TYPE(json_file), INTENT(inout):: config
|
TYPE(json_file), INTENT(inout):: config
|
||||||
|
CHARACTER(:), ALLOCATABLE:: object
|
||||||
LOGICAL:: found
|
LOGICAL:: found
|
||||||
CHARACTER(:), ALLOCATABLE:: meshFormat, meshFile, EMType
|
CHARACTER(:), ALLOCATABLE:: meshFormat, meshFile
|
||||||
REAL(8):: volume
|
REAL(8):: volume
|
||||||
|
|
||||||
!Firstly, indicates if a specific mesh for MC collisions is being use
|
object = 'geometry'
|
||||||
doubleMesh = ASSOCIATED(meshForMCC, meshColl)
|
|
||||||
|
|
||||||
!Selects the type of geometry.
|
!Checks if a mesh for collisions has been defined
|
||||||
CALL config%get('geometry.type', mesh%geometry, found)
|
!The mesh will be initialized and reader in readGeometry
|
||||||
IF (doubleMesh) meshColl%geometry = mesh%geometry
|
CALL config%info(object // '.meshCollisions', found)
|
||||||
|
IF (found) THEN
|
||||||
|
!Points meshForMCC to the specific mesh defined
|
||||||
|
meshForMCC => meshColl
|
||||||
|
doubleMesh = .TRUE.
|
||||||
|
|
||||||
!Gets the type of mesh
|
ELSE
|
||||||
CALL config%get('geometry.meshType', meshFormat, found)
|
CALL config%info('interactions', found)
|
||||||
SELECT CASE(meshFormat)
|
IF (found) THEN
|
||||||
CASE ("gmsh2")
|
!Points the meshForMCC pointer to the Particles Mesh
|
||||||
CALL initGmsh2(mesh)
|
meshForMCC => mesh
|
||||||
IF (doubleMesh) CALL initGmsh2(meshColl)
|
|
||||||
|
|
||||||
CASE ("0D")
|
END IF
|
||||||
CALL config%get('geometry.meshType', meshFormat, found)
|
doubleMesh = .FALSE.
|
||||||
CALL init0D(mesh)
|
|
||||||
|
|
||||||
CASE DEFAULT
|
|
||||||
CALL criticalError("Mesh format " // meshFormat // " not recogniced", "readGeometry")
|
|
||||||
|
|
||||||
END SELECT
|
|
||||||
|
|
||||||
!Reads the mesh file
|
|
||||||
CALL config%get('geometry.meshFile', meshFile, found)
|
|
||||||
pathMeshParticle = path // meshFile
|
|
||||||
CALL mesh%readMesh(pathMeshParticle)
|
|
||||||
DEALLOCATE(meshFile)
|
|
||||||
IF (doubleMesh) THEN
|
|
||||||
!Reads the mesh file for collisions
|
|
||||||
CALL config%get('interactions.meshCollisions', meshFile, found)
|
|
||||||
pathMeshColl = path // meshFile
|
|
||||||
CALL meshColl%readMesh(pathMeshColl)
|
|
||||||
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
!Gets the volume for a 0D mesh
|
!Get the dimension of the geometry
|
||||||
!TODO: Try to constrain this to the inout for 0D
|
CALL config%get(object // '.dimension', mesh%dimen, found)
|
||||||
IF (meshFormat == "0D") THEN
|
IF (.NOT. found) THEN
|
||||||
CALL config%get('geometry.volume', volume, found)
|
CALL criticalError('Required parameter geometry.dimension not found', 'readGeometry')
|
||||||
|
|
||||||
|
END IF
|
||||||
|
IF (doubleMesh) THEN
|
||||||
|
meshColl%dimen = mesh%dimen
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
|
|
||||||
|
SELECT CASE(mesh%dimen)
|
||||||
|
CASE (0)
|
||||||
|
CALL config%get(object // '.meshType', meshFormat, found)
|
||||||
|
CALL init0D(mesh)
|
||||||
|
|
||||||
|
!Read the 0D mesh
|
||||||
|
CALL mesh%readMesh(pathMeshParticle)
|
||||||
|
|
||||||
|
!Get the volumne
|
||||||
|
CALL config%get(object // '.volume', volume, found)
|
||||||
|
!Rescale the volumne
|
||||||
IF (found) THEN
|
IF (found) THEN
|
||||||
mesh%vols(1)%obj%volume = mesh%vols(1)%obj%volume*volume / Vol_ref
|
mesh%vols(1)%obj%volume = mesh%vols(1)%obj%volume*volume / Vol_ref
|
||||||
mesh%nodes(1)%obj%v = mesh%vols(1)%obj%volume
|
mesh%nodes(1)%obj%v = mesh%vols(1)%obj%volume
|
||||||
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
END IF
|
CASE (1:3)
|
||||||
|
!Select the type of geometry
|
||||||
|
CALL config%get(object // '.type', mesh%geometry, found)
|
||||||
|
IF (doubleMesh) THEN
|
||||||
|
meshColl%geometry = mesh%geometry
|
||||||
|
|
||||||
!Creates the connectivity between elements
|
END IF
|
||||||
SELECT CASE(mesh%geometry)
|
|
||||||
CASE("3DCart")
|
|
||||||
mesh%connectMesh => connectMesh3DCart
|
|
||||||
|
|
||||||
CASE("2DCyl")
|
!Check the consistency between geometry and dimension
|
||||||
mesh%connectMesh => connectMesh2DCyl
|
SELECT CASE(mesh%dimen)
|
||||||
|
CASE(3)
|
||||||
|
IF (mesh%geometry /= 'Cart') THEN
|
||||||
|
CALL criticalError('No available geometry ' // mesh%geometry // ' in 3D', 'readGeometry')
|
||||||
|
|
||||||
CASE("2DCart")
|
END IF
|
||||||
mesh%connectMesh => connectMesh2DCart
|
|
||||||
|
|
||||||
CASE("1DRad")
|
CASE(2)
|
||||||
mesh%connectMesh => connectMesh1DRad
|
IF (mesh%geometry /= 'Cart' .AND. &
|
||||||
|
mesh%geometry /= 'Cyl') THEN
|
||||||
|
CALL criticalError('No available geometry ' // mesh%geometry // ' in 2D', 'readGeometry')
|
||||||
|
|
||||||
CASE("1DCart")
|
END IF
|
||||||
mesh%connectMesh => connectMesh1DCart
|
|
||||||
|
|
||||||
CASE("0D")
|
CASE(1)
|
||||||
mesh%connectMesh => NULL()
|
IF (mesh%geometry /= 'Cart' .AND. &
|
||||||
|
mesh%geometry /= 'Rad') THEN
|
||||||
|
CALL criticalError('No available geometry ' // mesh%geometry // ' in 1D', 'readGeometry')
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
!Get the type of mesh
|
||||||
|
CALL config%get(object // '.meshType', meshFormat, found)
|
||||||
|
SELECT CASE(meshFormat)
|
||||||
|
CASE ("gmsh2")
|
||||||
|
CALL initGmsh2(mesh)
|
||||||
|
IF (doubleMesh) THEN
|
||||||
|
CALL initGmsh2(meshColl)
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
!Reads the mesh file
|
||||||
|
CALL config%get(object // '.meshFile', meshFile, found)
|
||||||
|
pathMeshParticle = path // meshFile
|
||||||
|
CALL mesh%readMesh(pathMeshParticle)
|
||||||
|
DEALLOCATE(meshFile)
|
||||||
|
IF (doubleMesh) THEN
|
||||||
|
!Reads the mesh file for collisions
|
||||||
|
CALL config%get(object // '.meshCollisions', meshFile, found)
|
||||||
|
pathMeshColl = path // meshFile
|
||||||
|
CALL meshColl%readMesh(pathMeshColl)
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
|
CASE DEFAULT
|
||||||
|
CALL criticalError("Mesh dimension not recogniced", "readGeometry")
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
IF (ASSOCIATED(mesh%connectMesh)) CALL mesh%connectMesh
|
|
||||||
|
|
||||||
IF (doubleMesh) THEN
|
|
||||||
meshColl%connectMesh => mesh%connectMesh
|
|
||||||
CALL meshColl%connectMesh
|
|
||||||
|
|
||||||
END IF
|
|
||||||
|
|
||||||
!Builds the K matrix for the Particles mesh
|
!Builds the K matrix for the Particles mesh
|
||||||
CALL mesh%constructGlobalK()
|
CALL mesh%constructGlobalK()
|
||||||
|
|
@ -898,16 +956,6 @@ MODULE moduleInput
|
||||||
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
!Gest EM solver
|
|
||||||
CALL config%get('case.EMSolver', EMType, found)
|
|
||||||
CALL solver%initEM(EMType)
|
|
||||||
SELECT CASE(EMType)
|
|
||||||
CASE("Electrostatic")
|
|
||||||
!Reads BC
|
|
||||||
CALL readEMBoundary(config)
|
|
||||||
|
|
||||||
END SELECT
|
|
||||||
|
|
||||||
END SUBROUTINE readGeometry
|
END SUBROUTINE readGeometry
|
||||||
|
|
||||||
SUBROUTINE readProbes(config)
|
SUBROUTINE readProbes(config)
|
||||||
|
|
@ -1010,7 +1058,6 @@ MODULE moduleInput
|
||||||
|
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
!TODO: Improve this
|
|
||||||
IF (ALLOCATED(boundEM)) THEN
|
IF (ALLOCATED(boundEM)) THEN
|
||||||
DO e = 1, mesh%numEdges
|
DO e = 1, mesh%numEdges
|
||||||
IF (ANY(mesh%edges(e)%obj%physicalSurface == boundEM(:)%physicalSurface)) THEN
|
IF (ANY(mesh%edges(e)%obj%physicalSurface == boundEM(:)%physicalSurface)) THEN
|
||||||
|
|
@ -1026,7 +1073,10 @@ MODULE moduleInput
|
||||||
|
|
||||||
!Compute the PLU factorization of K once boundary conditions have been read
|
!Compute the PLU factorization of K once boundary conditions have been read
|
||||||
CALL dgetrf(mesh%numNodes, mesh%numNodes, mesh%K, mesh%numNodes, mesh%IPIV, info)
|
CALL dgetrf(mesh%numNodes, mesh%numNodes, mesh%K, mesh%numNodes, mesh%IPIV, info)
|
||||||
IF (info /= 0) CALL criticalError('Factorization of K matrix failed', 'readEMBoundary')
|
IF (info /= 0) THEN
|
||||||
|
CALL criticalError('Factorization of K matrix failed', 'readEMBoundary')
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
END SUBROUTINE readEMBoundary
|
END SUBROUTINE readEMBoundary
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,53 +60,90 @@ MODULE moduleSolver
|
||||||
!Init Pusher
|
!Init Pusher
|
||||||
SUBROUTINE initPusher(self, pusherType, tau, tauSp)
|
SUBROUTINE initPusher(self, pusherType, tau, tauSp)
|
||||||
USE moduleErrors
|
USE moduleErrors
|
||||||
|
USE moduleMesh, ONLY: mesh
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
|
||||||
CLASS(pusherGeneric), INTENT(out):: self
|
CLASS(pusherGeneric), INTENT(out):: self
|
||||||
CHARACTER(:), ALLOCATABLE:: pusherType
|
CHARACTER(:), ALLOCATABLE:: pusherType
|
||||||
REAL(8):: tau, tauSp
|
REAL(8):: tau, tauSp
|
||||||
|
|
||||||
SELECT CASE(pusherType)
|
!TODO: Reorganize if Cart pushers are combined
|
||||||
!3D Cartesian
|
SELECT CASE(mesh%dimen)
|
||||||
CASE('3DCartNeutral')
|
CASE(0)
|
||||||
self%pushParticle => push3DCartNeutral
|
|
||||||
|
|
||||||
CASE('3DCartCharged')
|
|
||||||
self%pushParticle => push3DCartCharged
|
|
||||||
|
|
||||||
!2D Cylindrical
|
|
||||||
CASE('2DCylNeutral')
|
|
||||||
self%pushParticle => push2DCylNeutral
|
|
||||||
|
|
||||||
CASE('2DCylCharged')
|
|
||||||
self%pushParticle => push2DCylCharged
|
|
||||||
|
|
||||||
!2D Cartesian
|
|
||||||
CASE('2DCartNeutral')
|
|
||||||
self%pushParticle => push2DCartNeutral
|
|
||||||
|
|
||||||
CASE('2DCartCharged')
|
|
||||||
self%pushParticle => push2DCartCharged
|
|
||||||
|
|
||||||
!1D Cartesian
|
|
||||||
CASE('1DCartNeutral')
|
|
||||||
self%pushParticle => push1DCartNeutral
|
|
||||||
|
|
||||||
CASE('1DCartCharged')
|
|
||||||
self%pushParticle => push1DCartCharged
|
|
||||||
|
|
||||||
!1D Radial
|
|
||||||
CASE('1DRadNeutral')
|
|
||||||
self%pushParticle => push1DRadNeutral
|
|
||||||
|
|
||||||
CASE('1DRadCharged')
|
|
||||||
self%pushParticle => push1DRadCharged
|
|
||||||
|
|
||||||
CASE('0D')
|
|
||||||
self%pushParticle => push0D
|
self%pushParticle => push0D
|
||||||
|
|
||||||
CASE DEFAULT
|
CASE(3)
|
||||||
CALL criticalError('Pusher ' // pusherType // ' not found','initPusher')
|
SELECT CASE(pusherType)
|
||||||
|
CASE('Neutral')
|
||||||
|
self%pushParticle => push3DCartNeutral
|
||||||
|
|
||||||
|
CASE('Electrostatic')
|
||||||
|
self%pushParticle => push3DCartCharged
|
||||||
|
|
||||||
|
CASE DEFAULT
|
||||||
|
CALL criticalError('Pusher ' // pusherType // ' not found for 3D','initPusher')
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
CASE(2)
|
||||||
|
SELECT CASE(mesh%geometry)
|
||||||
|
CASE('Cyl')
|
||||||
|
SELECT CASE(pusherType)
|
||||||
|
CASE('Neutral')
|
||||||
|
self%pushParticle => push2DCylNeutral
|
||||||
|
|
||||||
|
CASE('Electrostatic')
|
||||||
|
self%pushParticle => push2DCylCharged
|
||||||
|
|
||||||
|
CASE DEFAULT
|
||||||
|
CALL criticalError('Pusher ' // pusherType // ' not found for 2D Cyl','initPusher')
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
CASE ('Cart')
|
||||||
|
SELECT CASE(pusherType)
|
||||||
|
CASE('Neutral')
|
||||||
|
self%pushParticle => push2DCartNeutral
|
||||||
|
|
||||||
|
CASE('Electrostatic')
|
||||||
|
self%pushParticle => push2DCartCharged
|
||||||
|
|
||||||
|
CASE DEFAULT
|
||||||
|
CALL criticalError('Pusher ' // pusherType // ' not found for 2D Cart','initPusher')
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
CASE(1)
|
||||||
|
SELECT CASE(mesh%geometry)
|
||||||
|
CASE('Rad')
|
||||||
|
SELECT CASE(pusherType)
|
||||||
|
CASE('Neutral')
|
||||||
|
self%pushParticle => push1DRadNeutral
|
||||||
|
|
||||||
|
CASE('Electrostatic')
|
||||||
|
self%pushParticle => push1DRadCharged
|
||||||
|
|
||||||
|
CASE DEFAULT
|
||||||
|
CALL criticalError('Pusher ' // pusherType // ' not found for 1D Rad','initPusher')
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
CASE('Cart')
|
||||||
|
SELECT CASE(pusherType)
|
||||||
|
CASE('Neutral')
|
||||||
|
self%pushParticle => push1DCartNeutral
|
||||||
|
|
||||||
|
CASE('Electrostatic')
|
||||||
|
self%pushParticle => push1DCartCharged
|
||||||
|
|
||||||
|
CASE DEFAULT
|
||||||
|
CALL criticalError('Pusher ' // pusherType // ' not found for 1D Cart','initPusher')
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
|
|
@ -172,7 +209,7 @@ MODULE moduleSolver
|
||||||
|
|
||||||
END SUBROUTINE doPushes
|
END SUBROUTINE doPushes
|
||||||
|
|
||||||
!Push neutral particles in 3D cartesian coordinates
|
!Push neutral particles in cartesian coordinates
|
||||||
PURE SUBROUTINE push3DCartNeutral(part, tauIn)
|
PURE SUBROUTINE push3DCartNeutral(part, tauIn)
|
||||||
USE moduleSPecies
|
USE moduleSPecies
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
|
@ -195,8 +232,6 @@ MODULE moduleSolver
|
||||||
part_temp%v(3) = part%v(3)
|
part_temp%v(3) = part%v(3)
|
||||||
part_temp%r(3) = part%r(3) + part_temp%v(3)*tauIn
|
part_temp%r(3) = part%r(3) + part_temp%v(3)*tauIn
|
||||||
|
|
||||||
part_temp%n_in = .FALSE.
|
|
||||||
|
|
||||||
part = part_temp
|
part = part_temp
|
||||||
|
|
||||||
END SUBROUTINE push3DCartNeutral
|
END SUBROUTINE push3DCartNeutral
|
||||||
|
|
@ -228,8 +263,6 @@ MODULE moduleSolver
|
||||||
part_temp%v(3) = part%v(3) + qmEFt(3)
|
part_temp%v(3) = part%v(3) + qmEFt(3)
|
||||||
part_temp%r(3) = part%r(3) + part_temp%v(3)*tauIn
|
part_temp%r(3) = part%r(3) + part_temp%v(3)*tauIn
|
||||||
|
|
||||||
part_temp%n_in = .FALSE.
|
|
||||||
|
|
||||||
part = part_temp
|
part = part_temp
|
||||||
|
|
||||||
END SUBROUTINE push3DCartCharged
|
END SUBROUTINE push3DCartCharged
|
||||||
|
|
@ -265,7 +298,7 @@ MODULE moduleSolver
|
||||||
END IF
|
END IF
|
||||||
part_temp%v(2) = cos_alpha*v_p_oh_star(2)+sin_alpha*v_p_oh_star(3)
|
part_temp%v(2) = cos_alpha*v_p_oh_star(2)+sin_alpha*v_p_oh_star(3)
|
||||||
part_temp%v(3) = -sin_alpha*v_p_oh_star(2)+cos_alpha*v_p_oh_star(3)
|
part_temp%v(3) = -sin_alpha*v_p_oh_star(2)+cos_alpha*v_p_oh_star(3)
|
||||||
part_temp%n_in = .FALSE. !Assume particle is outside until cell is found
|
|
||||||
!Copy temporal particle to particle
|
!Copy temporal particle to particle
|
||||||
part=part_temp
|
part=part_temp
|
||||||
|
|
||||||
|
|
@ -306,7 +339,7 @@ MODULE moduleSolver
|
||||||
END IF
|
END IF
|
||||||
part_temp%v(2) = cos_alpha*v_p_oh_star(2)+sin_alpha*v_p_oh_star(3)
|
part_temp%v(2) = cos_alpha*v_p_oh_star(2)+sin_alpha*v_p_oh_star(3)
|
||||||
part_temp%v(3) = -sin_alpha*v_p_oh_star(2)+cos_alpha*v_p_oh_star(3)
|
part_temp%v(3) = -sin_alpha*v_p_oh_star(2)+cos_alpha*v_p_oh_star(3)
|
||||||
part_temp%n_in = .FALSE. !Assume particle is outside until cell is found
|
|
||||||
!Copy temporal particle to particle
|
!Copy temporal particle to particle
|
||||||
part=part_temp
|
part=part_temp
|
||||||
|
|
||||||
|
|
@ -331,8 +364,6 @@ MODULE moduleSolver
|
||||||
part_temp%v(2) = part%v(2)
|
part_temp%v(2) = part%v(2)
|
||||||
part_temp%r(2) = part%r(2) + part_temp%v(2)*tauIn
|
part_temp%r(2) = part%r(2) + part_temp%v(2)*tauIn
|
||||||
|
|
||||||
part_temp%n_in = .FALSE.
|
|
||||||
|
|
||||||
part = part_temp
|
part = part_temp
|
||||||
|
|
||||||
END SUBROUTINE push2DCartNeutral
|
END SUBROUTINE push2DCartNeutral
|
||||||
|
|
@ -360,8 +391,6 @@ MODULE moduleSolver
|
||||||
part_temp%v(2) = part%v(2) + qmEFt(2)
|
part_temp%v(2) = part%v(2) + qmEFt(2)
|
||||||
part_temp%r(2) = part%r(2) + part_temp%v(2)*tauIn
|
part_temp%r(2) = part%r(2) + part_temp%v(2)*tauIn
|
||||||
|
|
||||||
part_temp%n_in = .FALSE.
|
|
||||||
|
|
||||||
part = part_temp
|
part = part_temp
|
||||||
|
|
||||||
END SUBROUTINE push2DCartCharged
|
END SUBROUTINE push2DCartCharged
|
||||||
|
|
@ -382,8 +411,6 @@ MODULE moduleSolver
|
||||||
part_temp%v(1) = part%v(1)
|
part_temp%v(1) = part%v(1)
|
||||||
part_temp%r(1) = part%r(1) + part_temp%v(1)*tauIn
|
part_temp%r(1) = part%r(1) + part_temp%v(1)*tauIn
|
||||||
|
|
||||||
part_temp%n_in = .FALSE.
|
|
||||||
|
|
||||||
part = part_temp
|
part = part_temp
|
||||||
|
|
||||||
END SUBROUTINE push1DCartNeutral
|
END SUBROUTINE push1DCartNeutral
|
||||||
|
|
@ -407,8 +434,6 @@ MODULE moduleSolver
|
||||||
part_temp%v(1) = part%v(1) + qmEFt(1)
|
part_temp%v(1) = part%v(1) + qmEFt(1)
|
||||||
part_temp%r(1) = part%r(1) + part_temp%v(1)*tauIn
|
part_temp%r(1) = part%r(1) + part_temp%v(1)*tauIn
|
||||||
|
|
||||||
part_temp%n_in = .FALSE.
|
|
||||||
|
|
||||||
part = part_temp
|
part = part_temp
|
||||||
|
|
||||||
END SUBROUTINE push1DCartCharged
|
END SUBROUTINE push1DCartCharged
|
||||||
|
|
@ -442,7 +467,7 @@ MODULE moduleSolver
|
||||||
END IF
|
END IF
|
||||||
part_temp%v(1) = cos_alpha*v_p_oh_star(1)+sin_alpha*v_p_oh_star(2)
|
part_temp%v(1) = cos_alpha*v_p_oh_star(1)+sin_alpha*v_p_oh_star(2)
|
||||||
part_temp%v(2) = -sin_alpha*v_p_oh_star(1)+cos_alpha*v_p_oh_star(2)
|
part_temp%v(2) = -sin_alpha*v_p_oh_star(1)+cos_alpha*v_p_oh_star(2)
|
||||||
part_temp%n_in = .FALSE. !Assume particle is outside until cell is found
|
|
||||||
!Copy temporal particle to particle
|
!Copy temporal particle to particle
|
||||||
part=part_temp
|
part=part_temp
|
||||||
|
|
||||||
|
|
@ -480,7 +505,7 @@ MODULE moduleSolver
|
||||||
END IF
|
END IF
|
||||||
part_temp%v(1) = cos_alpha*v_p_oh_star(1)+sin_alpha*v_p_oh_star(2)
|
part_temp%v(1) = cos_alpha*v_p_oh_star(1)+sin_alpha*v_p_oh_star(2)
|
||||||
part_temp%v(2) = -sin_alpha*v_p_oh_star(1)+cos_alpha*v_p_oh_star(2)
|
part_temp%v(2) = -sin_alpha*v_p_oh_star(1)+cos_alpha*v_p_oh_star(2)
|
||||||
part_temp%n_in = .FALSE. !Assume particle is outside until cell is found
|
|
||||||
!Copy temporal particle to particle
|
!Copy temporal particle to particle
|
||||||
part=part_temp
|
part=part_temp
|
||||||
|
|
||||||
|
|
@ -800,6 +825,9 @@ MODULE moduleSolver
|
||||||
TYPE(particle), INTENT(inout):: part
|
TYPE(particle), INTENT(inout):: part
|
||||||
CLASS(meshVol), POINTER:: volOld, volNew
|
CLASS(meshVol), POINTER:: volOld, volNew
|
||||||
|
|
||||||
|
!Assume that particle is outside the domain
|
||||||
|
part%n_in = .FALSE.
|
||||||
|
|
||||||
volOld => mesh%vols(part%vol)%obj
|
volOld => mesh%vols(part%vol)%obj
|
||||||
CALL volOld%findCell(part)
|
CALL volOld%findCell(part)
|
||||||
CALL findCellColl(part)
|
CALL findCellColl(part)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue