From 21184e91d36579edead3f0f1944e3cede270987e Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Mon, 17 Jul 2023 12:02:24 +0200 Subject: [PATCH 01/84] Type for SEE Implementation of the type for Secondary Electron Emission (SEE) --- src/modules/moduleBoundary.f90 | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/modules/moduleBoundary.f90 b/src/modules/moduleBoundary.f90 index 83c815c..9fb212f 100644 --- a/src/modules/moduleBoundary.f90 +++ b/src/modules/moduleBoundary.f90 @@ -46,6 +46,14 @@ MODULE moduleBoundary END TYPE boundaryIonization + !Secondary electron emission (by ion impact) + TYPE, PUBLIC, EXTENDS(boundaryGeneric):: boundarySEE + !Yield as a function of ion energy + TYPE(table1D):: yield + CONTAINS + + END TYPE boundarySEE + !Symmetry axis TYPE, PUBLIC, EXTENDS(boundaryGeneric):: boundaryAxis CONTAINS @@ -137,4 +145,14 @@ MODULE moduleBoundary END SUBROUTINE initIonization + SUBROUTINE initSEE(boundary, tableFile) + IMPLICIT NONE + + CLASS(boundaryGeneric), ALLOCATABLE, INTENT(out):: boundary + CHARACTER(:), ALLOCATABLE, INTENT(in):: tableFile + + ALLOCATE(boundarySEE:: boundary) + + END SUBROUTINE initSEE + END MODULE moduleBoundary From e369bccf78ff5343c8df51a342daf8fe6f7ee92b Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Mon, 17 Jul 2023 13:58:57 +0200 Subject: [PATCH 02/84] Function to create electrons Still required to assign velocity: - In the direction normal to the surface - Which energy? --- src/modules/mesh/moduleMeshBoundary.f90 | 75 +++++++++++++++++++++++++ src/modules/moduleBoundary.f90 | 14 ++++- 2 files changed, 88 insertions(+), 1 deletion(-) diff --git a/src/modules/mesh/moduleMeshBoundary.f90 b/src/modules/mesh/moduleMeshBoundary.f90 index 4f72e10..34dc8a7 100644 --- a/src/modules/mesh/moduleMeshBoundary.f90 +++ b/src/modules/mesh/moduleMeshBoundary.f90 @@ -212,6 +212,79 @@ MODULE moduleMeshBoundary END SUBROUTINE symmetryAxis + SUBROUTINE secondaryEmission(edge, part) + USE moduleSpecies + IMPLICIT NONE + + CLASS(meshEdge), INTENT(inout):: edge + CLASS(particle), INTENT(inout):: part + REAL(8):: vRel, eRel + INTEGER:: yield + INTEGER:: p + REAL(8), DIMENSION(1:3):: rElectron, XiElectron!Position of new electrons + INTEGER:: cell + TYPE(particle), POINTER:: secondaryElectron + + SELECT TYPE(bound => edge%boundary%bTypes(part%species%n)%obj) + TYPE IS(boundarySEE) + !Get relative velocity + vRel = NORM2(part%v) + !Convert to relative energy + eRel = part%species%m*vRel**2*5.D-1 + + !Get number of secondary electrons macro-particles + yield = INT(part%weight*bound%yield%get(eRel) / bound%electron%weight) + + + !position of impacting ion + rElectron = edge%intersection(part%r) + XiElectron = mesh%cells(part%cell)%obj%phy2log(rElectron) + + !New cell of origin + IF (ASSOCIATED(edge%e1)) THEN + cell = edge%e1%n + + ELSEIF (ASSOCIATED(edge%e2)) THEN + cell = edge%e2%n + + END IF + + DO p = 1, yield + !Create new macro-particle + ALLOCATE(secondaryElectron) + + !Assign species to electron + secondaryElectron%species => bound%electron + + !Assign position to particle + secondaryElectron%r = rElectron + secondaryElectron%Xi = XiElectron + + !Assign cell to electron + secondaryElectron%cell = cell + + !Assign weight + secondaryElectron%weight = bound%electron%weight + + !Assume particle is inside the numerical domain + secondaryElectron%n_in = .TRUE. + + !Assign velocity + + !Add particle to list + CALL partSurfaces%setLock() + CALL partSurfaces%add(secondaryElectron) + CALL partSurfaces%unsetLock() + + END DO + + !Absorb impacting particle + CALL absorption(edge, part) + + END SELECT + + END SUBROUTINE secondaryEmission + !Points the boundary function to specific type SUBROUTINE pointBoundaryFunction(edge, s) USE moduleErrors @@ -239,6 +312,8 @@ MODULE moduleMeshBoundary TYPE IS(boundaryAxis) edge%fBoundary(s)%apply => symmetryAxis + TYPE IS(boundarySEE) + edge%fBoundary(s)%apply => secondaryEmission CLASS DEFAULT CALL criticalError("Boundary type not defined in this geometry", 'pointBoundaryFunction') diff --git a/src/modules/moduleBoundary.f90 b/src/modules/moduleBoundary.f90 index 9fb212f..bfdbd70 100644 --- a/src/modules/moduleBoundary.f90 +++ b/src/modules/moduleBoundary.f90 @@ -50,6 +50,7 @@ MODULE moduleBoundary TYPE, PUBLIC, EXTENDS(boundaryGeneric):: boundarySEE !Yield as a function of ion energy TYPE(table1D):: yield + CLASS(speciesGeneric), POINTER:: electron !Electron species for secondary emission CONTAINS END TYPE boundarySEE @@ -145,13 +146,24 @@ MODULE moduleBoundary END SUBROUTINE initIonization - SUBROUTINE initSEE(boundary, tableFile) + SUBROUTINE initSEE(boundary, tableFile, speciesID) + USE moduleRefParam + USE moduleConstParam + USE moduleSpecies IMPLICIT NONE CLASS(boundaryGeneric), ALLOCATABLE, INTENT(out):: boundary CHARACTER(:), ALLOCATABLE, INTENT(in):: tableFile + INTEGER:: speciesID ALLOCATE(boundarySEE:: boundary) + SELECT TYPE(boundary) + TYPE IS(boundarySEE) + CALL boundary%yield%init(tableFile) + CALL boundary%yield%convert(eV2J/(m_ref*v_ref**2), 1.D0) + boundary%electron => species(speciesID)%obj + + END SELECT END SUBROUTINE initSEE From 0f7d9919ec1ab769609b1f61c3e5397b4e8a83a0 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Mon, 17 Jul 2023 16:18:51 +0200 Subject: [PATCH 03/84] Ignore backups of bibliography Sorry that this change is in this branch, but I just noticed that the backups from jabref were not being ignored. --- doc/user-manual/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/user-manual/.gitignore b/doc/user-manual/.gitignore index b2ba4d5..61ad7e0 100644 --- a/doc/user-manual/.gitignore +++ b/doc/user-manual/.gitignore @@ -19,3 +19,4 @@ fpakc_UserManual-blx.bib *.gls *.ist fpakc_UserManual.run.xml +*.bib.sav From 38fa37c9957cc152439bbe9ab58f40b72167ef04 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Mon, 17 Jul 2023 16:29:52 +0200 Subject: [PATCH 04/84] Dummy velocity for testing I have set the velocity of the particle to be a dummy Maxwellian distribution to start testing things. Also I added a constant yield table for testing. Next step is to do the user input and run some tests. --- data/see/constant.dat | 4 ++++ src/modules/mesh/moduleMeshBoundary.f90 | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 data/see/constant.dat diff --git a/data/see/constant.dat b/data/see/constant.dat new file mode 100644 index 0000000..060c8ad --- /dev/null +++ b/data/see/constant.dat @@ -0,0 +1,4 @@ +#Relative energy (eV) yield () +0.000 1.000E-01 +1.000 1.000E-01 + diff --git a/src/modules/mesh/moduleMeshBoundary.f90 b/src/modules/mesh/moduleMeshBoundary.f90 index 34dc8a7..ffd1af9 100644 --- a/src/modules/mesh/moduleMeshBoundary.f90 +++ b/src/modules/mesh/moduleMeshBoundary.f90 @@ -193,7 +193,7 @@ MODULE moduleMeshBoundary END SELECT - !Removes ionizing electron regardless the number of pair created + !Removes ionizing electron regardless the number of pairs created part%n_in = .FALSE. END SUBROUTINE ionization @@ -214,6 +214,7 @@ MODULE moduleMeshBoundary SUBROUTINE secondaryEmission(edge, part) USE moduleSpecies + USE moduleRandom IMPLICIT NONE CLASS(meshEdge), INTENT(inout):: edge @@ -270,6 +271,7 @@ MODULE moduleMeshBoundary secondaryElectron%n_in = .TRUE. !Assign velocity + secondaryElectron%v = 2.D0 * edge%normal + 1.D-1 * (/ randomMaxwellian(), randomMaxwellian(), randomMaxwellian() /) !Add particle to list CALL partSurfaces%setLock() @@ -314,6 +316,7 @@ MODULE moduleMeshBoundary TYPE IS(boundarySEE) edge%fBoundary(s)%apply => secondaryEmission + CLASS DEFAULT CALL criticalError("Boundary type not defined in this geometry", 'pointBoundaryFunction') From cc3e28e5e7d86b9635b22a63dcc22d82dc69d1b3 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Mon, 17 Jul 2023 22:48:52 +0200 Subject: [PATCH 05/84] Input done The input is done and testing. WARNING: Velocity of secondary electrons is still a dummy one! --- src/modules/init/moduleInput.f90 | 11 ++++++++++- src/modules/mesh/moduleMeshBoundary.f90 | 21 +++++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 9891806..c867e23 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -806,7 +806,7 @@ MODULE moduleInput REAL(8):: effTime REAL(8):: eThreshold !Energy threshold INTEGER:: speciesID - CHARACTER(:), ALLOCATABLE:: speciesName, crossSection + CHARACTER(:), ALLOCATABLE:: speciesName, crossSection, yield LOGICAL:: found INTEGER:: nTypes @@ -872,6 +872,15 @@ MODULE moduleInput CALL initWallTemperature(boundary(i)%bTypes(s)%obj, Tw, cw) + CASE('secondaryEmission') + CALL config%get(object // '.yield', yield, found) + IF (.NOT. found) CALL criticalError("missing parameter 'yield' for secondary emission", 'readBoundary') + CALL config%get(object // '.electron', speciesName, found) + IF (.NOT. found) CALL criticalError("missing parameter 'electron' for secondary emission", 'readBoundary') + speciesID = speciesName2Index(speciesName) + + CALL initSEE(boundary(i)%bTypes(s)%obj, yield, speciesID) + CASE('axis') ALLOCATE(boundaryAxis:: boundary(i)%bTypes(s)%obj) diff --git a/src/modules/mesh/moduleMeshBoundary.f90 b/src/modules/mesh/moduleMeshBoundary.f90 index ffd1af9..90420c6 100644 --- a/src/modules/mesh/moduleMeshBoundary.f90 +++ b/src/modules/mesh/moduleMeshBoundary.f90 @@ -220,7 +220,9 @@ MODULE moduleMeshBoundary CLASS(meshEdge), INTENT(inout):: edge CLASS(particle), INTENT(inout):: part REAL(8):: vRel, eRel - INTEGER:: yield + REAL(8):: yield + INTEGER:: nNewElectrons + REAL(8), ALLOCATABLE:: weight(:) INTEGER:: p REAL(8), DIMENSION(1:3):: rElectron, XiElectron!Position of new electrons INTEGER:: cell @@ -234,9 +236,20 @@ MODULE moduleMeshBoundary eRel = part%species%m*vRel**2*5.D-1 !Get number of secondary electrons macro-particles - yield = INT(part%weight*bound%yield%get(eRel) / bound%electron%weight) + yield = part%weight*bound%yield%get(eRel) + nNewElectrons = FLOOR(yield / bound%electron%weight) + IF (REAL(nNewElectrons) * bound%electron%weight < yield) THEN + nNewElectrons = nNewElectrons + 1 + ALLOCATE(weight(1:nNewElectrons)) + weight(1:nNewElectrons-1) = bound%electron%weight + weight(nNewElectrons) = yield - SUM(weight(1:nNewElectrons-1)) + ELSE + ALLOCATE(weight(1:nNewElectrons)) + weight(1:nNewElectrons) = bound%electron%weight + END IF + !position of impacting ion rElectron = edge%intersection(part%r) XiElectron = mesh%cells(part%cell)%obj%phy2log(rElectron) @@ -250,7 +263,7 @@ MODULE moduleMeshBoundary END IF - DO p = 1, yield + DO p = 1, nNewElectrons !Create new macro-particle ALLOCATE(secondaryElectron) @@ -265,7 +278,7 @@ MODULE moduleMeshBoundary secondaryElectron%cell = cell !Assign weight - secondaryElectron%weight = bound%electron%weight + secondaryElectron%weight = weight(p) !Assume particle is inside the numerical domain secondaryElectron%n_in = .TRUE. From e1009a21df141e89f758eb2f57656886bf69ea1e Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Tue, 18 Jul 2023 15:35:16 +0200 Subject: [PATCH 06/84] Correction due to angle Moving forward to a complete model for SEE. Now the yield has a correction for the incident angle on the surface (still to check if this is correct) Velocity distribution is still a dummy one. --- src/modules/common/moduleTable.f90 | 3 + src/modules/mesh/moduleMeshBoundary.f90 | 126 ++++++++++++++---------- src/modules/moduleBoundary.f90 | 12 +++ 3 files changed, 89 insertions(+), 52 deletions(-) diff --git a/src/modules/common/moduleTable.f90 b/src/modules/common/moduleTable.f90 index e4da335..ac5cbc7 100644 --- a/src/modules/common/moduleTable.f90 +++ b/src/modules/common/moduleTable.f90 @@ -30,6 +30,8 @@ MODULE moduleTable READ(id, '(A)', iostat = stat) dummy !If EOF or error, exit file IF (stat /= 0) EXIT + !If empty line, exit file + IF (dummy == "") EXIT !Skip comment IF (INDEX(dummy,'#') /= 0) CYCLE !Add row @@ -55,6 +57,7 @@ MODULE moduleTable !TODO: Make this a function IF (INDEX(dummy,'#') /= 0) CYCLE IF (stat /= 0) EXIT + IF (dummy == "") EXIT !Add data !TODO: substitute with extracting information from dummy BACKSPACE(id) diff --git a/src/modules/mesh/moduleMeshBoundary.f90 b/src/modules/mesh/moduleMeshBoundary.f90 index 90420c6..d130a8a 100644 --- a/src/modules/mesh/moduleMeshBoundary.f90 +++ b/src/modules/mesh/moduleMeshBoundary.f90 @@ -212,19 +212,24 @@ MODULE moduleMeshBoundary END SUBROUTINE symmetryAxis + !Secondary emission of electrons by impacting particle. SUBROUTINE secondaryEmission(edge, part) USE moduleSpecies USE moduleRandom + USE moduleConstParam IMPLICIT NONE CLASS(meshEdge), INTENT(inout):: edge CLASS(particle), INTENT(inout):: part REAL(8):: vRel, eRel + REAL(8), DIMENSION(1:3):: rElectron, XiElectron!Position of new electrons (impacting particle) + REAL(8), DIMENSION(1:3):: rIncident !Vector from imapcting particle position to particle position + REAL(8):: theta !incident angle REAL(8):: yield + REAL(8):: energy !incident energy corrected by threshold and INTEGER:: nNewElectrons REAL(8), ALLOCATABLE:: weight(:) INTEGER:: p - REAL(8), DIMENSION(1:3):: rElectron, XiElectron!Position of new electrons INTEGER:: cell TYPE(particle), POINTER:: secondaryElectron @@ -235,64 +240,81 @@ MODULE moduleMeshBoundary !Convert to relative energy eRel = part%species%m*vRel**2*5.D-1 - !Get number of secondary electrons macro-particles - yield = part%weight*bound%yield%get(eRel) - nNewElectrons = FLOOR(yield / bound%electron%weight) - IF (REAL(nNewElectrons) * bound%electron%weight < yield) THEN - nNewElectrons = nNewElectrons + 1 - ALLOCATE(weight(1:nNewElectrons)) - weight(1:nNewElectrons-1) = bound%electron%weight - weight(nNewElectrons) = yield - SUM(weight(1:nNewElectrons-1)) + !If energy is abound threshold calculate secondary electrons + IF (eRel >= bound%energyThreshold) THEN - ELSE - ALLOCATE(weight(1:nNewElectrons)) - weight(1:nNewElectrons) = bound%electron%weight - - END IF + !position of impacting ion + rElectron = edge%intersection(part%r) + XiElectron = mesh%cells(part%cell)%obj%phy2log(rElectron) - !position of impacting ion - rElectron = edge%intersection(part%r) - XiElectron = mesh%cells(part%cell)%obj%phy2log(rElectron) + !Calculate incident angle + rIncident = part%r - rElectron + theta = ACOS(DOT_PRODUCT(rIncident, edge%normal) / (NORM2(rIncident) * NORM2(edge%normal))) - !New cell of origin - IF (ASSOCIATED(edge%e1)) THEN - cell = edge%e1%n + !Calculate incident energy + energy = (eRel - bound%energyThreshold) * PI2 / (PI2 + theta**2) + bound%energyThreshold - ELSEIF (ASSOCIATED(edge%e2)) THEN - cell = edge%e2%n + !Get number of secondary electrons particles + yield = part%weight*bound%yield%get(eRel) * (1.D0 * theta**2 / PI2) !Check equation! + + !Convert the number to macro-particles + nNewElectrons = FLOOR(yield / bound%electron%weight) + + !If the weight of new macro-particles is below the yield, correct adding a particle + IF (REAL(nNewElectrons) * bound%electron%weight < yield) THEN + nNewElectrons = nNewElectrons + 1 + ALLOCATE(weight(1:nNewElectrons)) + weight(1:nNewElectrons-1) = bound%electron%weight + weight(nNewElectrons) = yield - SUM(weight(1:nNewElectrons-1)) + + ELSE + ALLOCATE(weight(1:nNewElectrons)) + weight(1:nNewElectrons) = bound%electron%weight + + END IF + + !New cell of origin + IF (ASSOCIATED(edge%e1)) THEN + cell = edge%e1%n + + ELSEIF (ASSOCIATED(edge%e2)) THEN + cell = edge%e2%n + + END IF + + !Create the new electron macro-particles + DO p = 1, nNewElectrons + !Create new macro-particle + ALLOCATE(secondaryElectron) + + !Assign species to electron + secondaryElectron%species => bound%electron + + !Assign position to particle + secondaryElectron%r = rElectron + secondaryElectron%Xi = XiElectron + + !Assign cell to electron + secondaryElectron%cell = cell + + !Assign weight + secondaryElectron%weight = weight(p) + + !Assume particle is inside the numerical domain + secondaryElectron%n_in = .TRUE. + + !Assign velocity + secondaryElectron%v = 2.D0 * edge%normal + 1.D-1 * (/ randomMaxwellian(), randomMaxwellian(), randomMaxwellian() /) + + !Add particle to list + CALL partSurfaces%setLock() + CALL partSurfaces%add(secondaryElectron) + CALL partSurfaces%unsetLock() + + END DO END IF - DO p = 1, nNewElectrons - !Create new macro-particle - ALLOCATE(secondaryElectron) - - !Assign species to electron - secondaryElectron%species => bound%electron - - !Assign position to particle - secondaryElectron%r = rElectron - secondaryElectron%Xi = XiElectron - - !Assign cell to electron - secondaryElectron%cell = cell - - !Assign weight - secondaryElectron%weight = weight(p) - - !Assume particle is inside the numerical domain - secondaryElectron%n_in = .TRUE. - - !Assign velocity - secondaryElectron%v = 2.D0 * edge%normal + 1.D-1 * (/ randomMaxwellian(), randomMaxwellian(), randomMaxwellian() /) - - !Add particle to list - CALL partSurfaces%setLock() - CALL partSurfaces%add(secondaryElectron) - CALL partSurfaces%unsetLock() - - END DO - !Absorb impacting particle CALL absorption(edge, part) diff --git a/src/modules/moduleBoundary.f90 b/src/modules/moduleBoundary.f90 index bfdbd70..b3c1d12 100644 --- a/src/modules/moduleBoundary.f90 +++ b/src/modules/moduleBoundary.f90 @@ -51,6 +51,7 @@ MODULE moduleBoundary !Yield as a function of ion energy TYPE(table1D):: yield CLASS(speciesGeneric), POINTER:: electron !Electron species for secondary emission + REAL(8):: energyThreshold CONTAINS END TYPE boundarySEE @@ -155,6 +156,7 @@ MODULE moduleBoundary CLASS(boundaryGeneric), ALLOCATABLE, INTENT(out):: boundary CHARACTER(:), ALLOCATABLE, INTENT(in):: tableFile INTEGER:: speciesID + INTEGER:: i ALLOCATE(boundarySEE:: boundary) SELECT TYPE(boundary) @@ -162,6 +164,16 @@ MODULE moduleBoundary CALL boundary%yield%init(tableFile) CALL boundary%yield%convert(eV2J/(m_ref*v_ref**2), 1.D0) boundary%electron => species(speciesID)%obj + !Search for the threshold energy in the table + DO i = 1, SIZE(boundary%yield%f) + IF (boundary%yield%f(i) > 0.D0) THEN + boundary%energyThreshold = boundary%yield%x(i) + + EXIT + + END IF + + END DO END SELECT From 541a6ff97a5d4ac8749c113c2d68ffca3ce4dac6 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Sun, 30 Jul 2023 12:55:52 +0200 Subject: [PATCH 07/84] Correction to injection velocity Small correction to injection velocity. Still not fully satisfied with it. I have to find a way to ensure that velocity is injected in the right direction and fulfills the distribution functions in each direction regardless the direction of injection, mean velocity or distribution function. --- src/modules/common/moduleRandom.f90 | 18 ++++++++++++++++++ src/modules/moduleInject.f90 | 19 +++++++++---------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index cd553a8..657ca28 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -66,6 +66,24 @@ MODULE moduleRandom END FUNCTION randomMaxwellian + FUNCTION randomHalfMaxwellian() RESULT(rnd) + USE moduleConstParam, ONLY: PI + IMPLICIT NONE + + REAL(8):: rnd + REAL(8):: x, y + + rnd = 0.D0 + x = 0.D0 + DO WHILE (x == 0.D0) + CALL RANDOM_NUMBER(x) + END DO + y = random(-PI, PI) + + rnd = DSQRT(-2.D0*DLOG(x))*DCOS(y) + + END FUNCTION randomHalfMaxwellian + !Returns a random number weighted with the cumWeight array FUNCTION randomWeighted(cumWeight, sumWeight) RESULT(rnd) IMPLICIT NONE diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 4e57083..644cfa7 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -254,10 +254,7 @@ MODULE moduleInject REAL(8):: v v = 0.D0 - DO WHILE (v <= 0.D0) - v = self%vTh*randomMaxwellian() - - END DO + v = self%vTh*randomHalfMaxwellian() END FUNCTION randomVelHalfMaxwellian @@ -334,17 +331,19 @@ MODULE moduleInject direction = self%n - partInj(n)%v = 0.D0 - + !Sample initial velocity partInj(n)%v = self%vMod*direction + (/ self%v(1)%obj%randomVel(), & self%v(2)%obj%randomVel(), & self%v(3)%obj%randomVel() /) - !If velocity is not in the right direction, invert it - IF (DOT_PRODUCT(direction, partInj(n)%v) < 0.D0) THEN - partInj(n)%v = - partInj(n)%v + !For each direction, velocities have to agree with the direction of injection + DO i = 1, 3 + DO WHILE (partInj(n)%v(i)*direction(i) < 0) + partInj(n)%v(i) = self%vMod*direction(i) + self%v(i)%obj%randomVel() - END IF + END DO + + END DO !Obtain natural coordinates of particle in cell partInj(n)%Xi = mesh%cells(partInj(n)%cell)%obj%phy2log(partInj(n)%r) From b73c8531e852552ede1c421cc90d7068b109969b Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 6 Aug 2023 19:45:48 +0200 Subject: [PATCH 08/84] Fix an issue with different time steps Sometimes the division between number of steps and time step was not giving the right results. Nevertheless, this just indicates that the species have to be in separated arrays so that the assignment of particles in list, pushing and scattering can be dealt independently. Thus, this is the first step in creating separate arrays of particles per species. --- data/see/{constant.dat => constant_yield.dat} | 0 src/modules/mesh/moduleMesh.f90 | 3 +-- src/modules/solver/moduleSolver.f90 | 7 ++++++- 3 files changed, 7 insertions(+), 3 deletions(-) rename data/see/{constant.dat => constant_yield.dat} (100%) diff --git a/data/see/constant.dat b/data/see/constant_yield.dat similarity index 100% rename from data/see/constant.dat rename to data/see/constant_yield.dat diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index 7e30326..e8e38f7 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -816,9 +816,8 @@ MODULE moduleMesh IF (MOD(t, everyColl) == 0) THEN !Collisions need to be performed in this iteration - !$OMP DO SCHEDULE(DYNAMIC) PRIVATE(part_i, part_j, partTemp_i, partTemp_j) + !$OMP DO SCHEDULE(DYNAMIC) PRIVATE(part_i, part_j, partTemp_i, partTemp_j, cell) DO e=1, self%numCells - cell => self%cells(e)%obj !TODO: Simplify this, to many sublevels diff --git a/src/modules/solver/moduleSolver.f90 b/src/modules/solver/moduleSolver.f90 index e539fed..de544ba 100644 --- a/src/modules/solver/moduleSolver.f90 +++ b/src/modules/solver/moduleSolver.f90 @@ -123,7 +123,12 @@ MODULE moduleSolver END SELECT self%pushSpecies = .FALSE. - self%every = INT(tauSp/tau) + self%every = FLOOR(tauSp/tau) + !Correct value if not fulfilled + IF (tau*REAL(self%every) < tauSp) THEN + self%every = self%every + 1 + + END IF END SUBROUTINE initPusher From 286e858d66f6b18222af29faa2b17c357fe4b374 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 22 Sep 2023 18:18:46 +0200 Subject: [PATCH 09/84] Intermediate push I still have to figure out how to do this properly, but I am tired of working on my laptop. --- src/modules/init/moduleInput.f90 | 40 ++----- src/modules/mesh/moduleMesh.f90 | 6 +- src/modules/mesh/moduleMeshBoundary.f90 | 4 +- src/modules/moduleCollisions.f90 | 12 +- src/modules/moduleCoulomb.f90 | 10 +- src/modules/moduleInject.f90 | 20 ++-- src/modules/moduleSpecies.f90 | 74 ++++++++---- src/modules/output/moduleOutput.f90 | 4 +- src/modules/solver/moduleSolver.f90 | 133 ++++++++++++--------- src/modules/solver/pusher/modulePusher.f90 | 2 +- 10 files changed, 166 insertions(+), 139 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index c867e23..9f16195 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -339,10 +339,9 @@ MODULE moduleInput !Mean velocity and temperature at particle position REAL(8):: velocityXi(1:3), temperatureXi INTEGER:: nNewPart = 0.D0 - CLASS(meshCell), POINTER:: cell TYPE(particle), POINTER:: partNew + CLASS(meshCell), POINTER:: cell REAL(8):: vTh - TYPE(lNode), POINTER:: partCurr, partNext CALL config%info('solver.initial', found, n_children = nInitial) @@ -371,9 +370,12 @@ MODULE moduleInput !Calculate number of particles nNewPart = INT(densityCen * (mesh%cells(e)%obj%volume*Vol_ref) / species(sp)%obj%weight) - !Allocate new particles + !Allocate array of particles for this species + ALLOCATE(partOld(sp)%p(1:nNewPart)) + + !Create new particles DO p = 1, nNewPart - ALLOCATE(partNew) + partNew = partOld(sp)%p(p) partNew%species => species(sp)%obj partNew%r = mesh%cells(e)%obj%randPos() partNew%Xi = mesh%cells(e)%obj%phy2log(partNew%r) @@ -408,9 +410,6 @@ MODULE moduleInput partNew%weight = species(sp)%obj%weight - !Assign particle to temporal list of particles - CALL partInitial%add(partNew) - !Assign particle to list in volume IF (listInCells) THEN cell => meshforMCC%cells(partNew%cellColl)%obj @@ -430,30 +429,10 @@ MODULE moduleInput END DO + nPartOld(sp) = SIZE(partOld(sp)%p) + END DO - !Convert temporal list of particles into initial partOld array - !Deallocate the list of initial particles - nNewPart = partInitial%amount - IF (nNewPart > 0) THEN - ALLOCATE(partOld(1:nNewPart)) - partCurr => partInitial%head - DO p = 1, nNewPart - partNext => partCurr%next - partOld(p) = partCurr%part - DEALLOCATE(partCurr) - partCurr => partNext - - END DO - - IF (ASSOCIATED(partInitial%head)) NULLIFY(partInitial%head) - IF (ASSOCIATED(partInitial%tail)) NULLIFY(partInitial%tail) - partInitial%amount = 0 - - END IF - - nPartOld = SIZE(partOld) - END IF END SUBROUTINE readInitial @@ -600,7 +579,10 @@ MODULE moduleInput END DO + !Allocate the wrapper array that contains particles + ALLOCATE(partOld(1:nSpecies)) !Set number of particles to 0 for init state + ALLOCATE(nPartOld(1:nSpecies)) nPartOld = 0 !Initialize the lock for the non-analogue (NA) list of particles diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index e8e38f7..203047f 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -884,7 +884,7 @@ MODULE moduleMesh !Obtain the cross sections for the different processes !TODO: From here it might be a procedure in interactionMatrix vRel = NORM2(part_i%v-part_j%v) - rMass = reducedMass(part_i%weight*part_i%species%m, part_j%weight*part_j%species%m) + rMass = reducedMass(part_i%weight*part_i%species%mass, part_j%weight*part_j%species%mass) eRel = rMass*vRel**2 CALL interactionMatrix(k)%getSigmaVrel(vRel, eRel, sigmaVrelTotal, sigmaVrel) @@ -1079,7 +1079,7 @@ MODULE moduleMesh !Compute changes in velocity for each particle deltaV_ij(p,1:3) = MATMUL(rotation, W) + velocity - partTemp%part%v - mass_ij(p) = pair%sp_i%m*partTemp%part%weight + mass_ij(p) = pair%sp_i%mass*partTemp%part%weight p_ij(p,1:3) = mass_ij(p)*partTemp%part%v !Move to the next particle in the list @@ -1162,7 +1162,7 @@ MODULE moduleMesh !Compute changes in velocity for each particle deltaV_ji(p,1:3) = MATMUL(rotation, W) + velocity - partTemp%part%v - mass_ji(p) = pair%sp_j%m*partTemp%part%weight + mass_ji(p) = pair%sp_j%mass*partTemp%part%weight p_ji(p,1:3) = mass_ji(p)*partTemp%part%v !Move to the next particle in the list diff --git a/src/modules/mesh/moduleMeshBoundary.f90 b/src/modules/mesh/moduleMeshBoundary.f90 index d130a8a..e7e4d65 100644 --- a/src/modules/mesh/moduleMeshBoundary.f90 +++ b/src/modules/mesh/moduleMeshBoundary.f90 @@ -125,7 +125,7 @@ MODULE moduleMeshBoundary SELECT TYPE(bound => edge%boundary%bTypes(part%species%n)%obj) TYPE IS(boundaryIonization) - mRel = reducedMass(bound%m0, part%species%m) + mRel = reducedMass(bound%m0, part%species%mass) vRel = SUM(DABS(part%v-bound%v0)) eRel = mRel*vRel**2*5.D-1 @@ -238,7 +238,7 @@ MODULE moduleMeshBoundary !Get relative velocity vRel = NORM2(part%v) !Convert to relative energy - eRel = part%species%m*vRel**2*5.D-1 + eRel = part%species%mass*vRel**2*5.D-1 !If energy is abound threshold calculate secondary electrons IF (eRel >= bound%energyThreshold) THEN diff --git a/src/modules/moduleCollisions.f90 b/src/modules/moduleCollisions.f90 index ccca930..f01c20b 100644 --- a/src/modules/moduleCollisions.f90 +++ b/src/modules/moduleCollisions.f90 @@ -164,8 +164,8 @@ MODULE moduleCollisions self%amount = amount - mass_i = species(i)%obj%m - mass_j = species(j)%obj%m + mass_i = species(i)%obj%mass + mass_j = species(j)%obj%mass ALLOCATE(self%collisions(1:self%amount)) @@ -227,8 +227,8 @@ MODULE moduleCollisions REAL(8):: m_i, m_j REAL(8), DIMENSION(1:3):: vCM, vp - m_i = part_i%species%m - m_j = part_j%species%m + m_i = part_i%species%mass + m_j = part_j%species%mass !Applies the collision vCM = velocityCM(part_i%weight*m_i, part_i%v, part_j%weight*m_j, part_j%v) vp = vRel*randomDirectionVHS() @@ -283,7 +283,7 @@ MODULE moduleCollisions END SELECT !momentum change per ionization process - collision%deltaV = sqrt(collision%eThreshold / collision%electron%m) + collision%deltaV = sqrt(collision%eThreshold / collision%electron%mass) END SELECT @@ -307,7 +307,7 @@ MODULE moduleCollisions REAL(8), DIMENSION(1:3):: vChange TYPE(particle), POINTER:: newElectron => NULL(), remainingNeutral => NULL() - rMass = reducedMass(part_i%weight*part_i%species%m, part_j%weight*part_j%species%m) + rMass = reducedMass(part_i%weight*part_i%species%mass, part_j%weight*part_j%species%mass) eRel = rMass*vRel**2 !Relative energy must be higher than threshold IF (eRel > self%eThreshold) THEN diff --git a/src/modules/moduleCoulomb.f90 b/src/modules/moduleCoulomb.f90 index 166b6b2..da03ad8 100644 --- a/src/modules/moduleCoulomb.f90 +++ b/src/modules/moduleCoulomb.f90 @@ -61,7 +61,7 @@ MODULE moduleCoulomb self%sp_i => species(i)%obj self%sp_j => species(j)%obj - self%one_plus_massRatio_ij = 1.D0 + self%sp_i%m/self%sp_j%m + self%one_plus_massRatio_ij = 1.D0 + self%sp_i%mass/self%sp_j%mass Z_i = 0.D0 Z_j = 0.D0 @@ -87,11 +87,11 @@ MODULE moduleCoulomb scaleFactor = (n_ref * qe**4 * ti_ref) / (eps_0**2 * m_ref**2 * v_ref**3) - self%A_i = Z_i**2*Z_j**2*self%lnCoulomb / (2.D0 * PI**2 * self%sp_i%m**2) * scaleFactor !Missing density because it's cell dependent - self%A_j = Z_j**2*Z_i**2*self%lnCoulomb / (2.D0 * PI**2 * self%sp_j%m**2) * scaleFactor !Missing density because it's cell dependent + self%A_i = Z_i**2*Z_j**2*self%lnCoulomb / (2.D0 * PI**2 * self%sp_i%mass**2) * scaleFactor !Missing density because it's cell dependent + self%A_j = Z_j**2*Z_i**2*self%lnCoulomb / (2.D0 * PI**2 * self%sp_j%mass**2) * scaleFactor !Missing density because it's cell dependent - self%l2_j = self%sp_j%m / 2.D0 !Missing temperature because it's cell dependent - self%l2_i = self%sp_i%m / 2.D0 !Missing temperature because it's cell dependent + self%l2_j = self%sp_j%mass / 2.D0 !Missing temperature because it's cell dependent + self%l2_i = self%sp_i%mass / 2.D0 !Missing temperature because it's cell dependent END SUBROUTINE initInteractionCoulomb diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 644cfa7..b5babfb 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -179,16 +179,21 @@ MODULE moduleInject IMPLICIT NONE INTEGER:: i + INTEGER, DIMENSION(1:nInject):: nMin, nMax !$OMP SINGLE nPartInj = 0 DO i = 1, nInject IF (solver%pusher(inject(i)%species%n)%pushSpecies) THEN + nMin(i) = nPartInj + 1 nPartInj = nPartInj + inject(i)%nParticles + nMax(i) = nPartInj END IF END DO + PRINT *, nMin + PRINT *, nMax IF (ALLOCATED(partInj)) DEALLOCATE(partInj) ALLOCATE(partInj(1:nPartInj)) @@ -196,7 +201,7 @@ MODULE moduleInject DO i=1, nInject IF (solver%pusher(inject(i)%species%n)%pushSpecies) THEN - CALL inject(i)%addParticles() + CALL inject(i)%addParticles(nMin(i), nMax(i)) END IF END DO @@ -279,8 +284,8 @@ MODULE moduleInject IMPLICIT NONE CLASS(injectGeneric), INTENT(in):: self + INTEGER, INTENT(in):: nMin, nMax !Min and Max index in partInj array INTEGER:: randomX - INTEGER, SAVE:: nMin, nMax !Min and Max index in partInj array INTEGER:: i INTEGER:: n, sp CLASS(meshEdge), POINTER:: randomEdge @@ -288,17 +293,6 @@ MODULE moduleInject !Insert particles !$OMP SINGLE - nMin = 0 - DO i = 1, self%id -1 - IF (solver%pusher(inject(i)%species%n)%pushSpecies) THEN - nMin = nMin + inject(i)%nParticles - - END IF - - END DO - - nMin = nMin + 1 - nMax = nMin + self%nParticles - 1 !Assign weight to particle. partInj(nMin:nMax)%weight = self%species%weight !Particle is considered to be outside the domain diff --git a/src/modules/moduleSpecies.f90 b/src/modules/moduleSpecies.f90 index ab08f08..e1b552b 100644 --- a/src/modules/moduleSpecies.f90 +++ b/src/modules/moduleSpecies.f90 @@ -4,12 +4,56 @@ MODULE moduleSpecies USE OMP_LIB IMPLICIT NONE + !Basic type that defines a macro-particle + TYPE:: particle + REAL(8):: r(1:3) !Position + REAL(8):: v(1:3) !Velocity + CLASS(speciesGeneric), POINTER:: species !Pointer to species associated with this particle + INTEGER:: cell !Index of element in which the particle is located. TODO: Make these pointers + INTEGER:: cellColl !Index of element in which the particle is located in the Collision Mesh + REAL(8):: Xi(1:3) !Logical coordinates of particle in element e_p. + LOGICAL:: n_in !Flag that indicates if a particle is in the domain + REAL(8):: weight=0.D0 !weight of particle + + END TYPE particle + + !Wrapper to store the particles per species + TYPE:: particleArray + TYPE(particle), ALLOCATABLE, DIMENSION(:):: p + + END TYPE particleArray + + !Array of pointers for the species to be pushed + TYPE:: particleArray_pointer + TYPE(particle), POINTER, DIMENSION(:):: p + + END TYPE particleArray_pointer + + !Number of old particles + INTEGER, ALLOCATABLE, DIMENSION(:):: nPartOld + INTEGER:: nPartOldTotal + !Number of injected particles + INTEGER:: nPartInj + !Arrays that contain the particles + TYPE(particle), ALLOCATABLE, TARGET, DIMENSION(:):: partInj !array of inject particles + TYPE(particleArray), ALLOCATABLE, TARGET, DIMENSION(:):: partOld !array of particles from previous iteration + TYPE(particleArray_pointer), ALLOCATABLE, DIMENSION(:):: particlesToPush !particles pushed in each iteration + + INTEGER:: nSpeciesToPush + INTEGER, ALLOCATABLE, DIMENSION(:):: nPartOldToPush + + !Generic species type TYPE, ABSTRACT:: speciesGeneric - CHARACTER(:), ALLOCATABLE:: name - REAL(8):: m=0.D0, weight=0.D0, qm=0.D0 - INTEGER:: n=0 + INTEGER:: n=0 !Index of species + CHARACTER(:), ALLOCATABLE:: name !Name of species + !Mass, default weight of species and charge over mass + REAL(8):: mass=0.D0, weight=0.D0, qm=0.D0 + INTEGER:: every !How many interations between advancing the species + LOGICAL:: pushSpecies !Boolean to indicate if the species is moved in the iteration + END TYPE speciesGeneric + !Neutral species TYPE, EXTENDS(speciesGeneric):: speciesNeutral CLASS(speciesGeneric), POINTER:: ion => NULL() CONTAINS @@ -17,6 +61,7 @@ MODULE moduleSpecies END TYPE speciesNeutral + !Charged species TYPE, EXTENDS(speciesGeneric):: speciesCharged REAL(8):: q=0.D0 CLASS(speciesGeneric), POINTER:: ion => NULL(), neutral => NULL() @@ -26,34 +71,17 @@ MODULE moduleSpecies END TYPE speciesCharged + !Wrapper for species TYPE:: speciesCont CLASS(speciesGeneric), ALLOCATABLE:: obj END TYPE + !Number of species INTEGER:: nSpecies + !Array for species TYPE(speciesCont), ALLOCATABLE, TARGET:: species(:) - TYPE particle - REAL(8):: r(1:3) !Position - REAL(8):: v(1:3) !Velocity - CLASS(speciesGeneric), POINTER:: species !Pointer to species associated with this particle - INTEGER:: cell !Index of element in which the particle is located - INTEGER:: cellColl !Index of element in which the particle is located in the Collision Mesh - REAL(8):: Xi(1:3) !Logical coordinates of particle in element e_p. - LOGICAL:: n_in !Flag that indicates if a particle is in the domain - REAL(8):: weight=0.D0 !weight of particle - - END TYPE particle - - !Number of old particles - INTEGER:: nPartOld - !Number of injected particles - INTEGER:: nPartInj - !Arrays that contain the particles - TYPE(particle), ALLOCATABLE, DIMENSION(:), TARGET:: partOld !array of particles from previous iteration - TYPE(particle), ALLOCATABLE, DIMENSION(:), TARGET:: partInj !array of inject particles - CONTAINS FUNCTION speciesName2Index(speciesName) RESULT(sp) USE moduleErrors diff --git a/src/modules/output/moduleOutput.f90 b/src/modules/output/moduleOutput.f90 index 18fbb7f..2cb94f6 100644 --- a/src/modules/output/moduleOutput.f90 +++ b/src/modules/output/moduleOutput.f90 @@ -148,8 +148,8 @@ MODULE moduleOutput formatValues%density = rawValues%den*tempVol formatValues%velocity(:) = tempVel IF (tensorTrace(tensorTemp) > 0.D0) THEN - formatValues%pressure = speciesIn%m*tensorTrace(tensorTemp)*tempVol/3.D0 - formatValues%temperature = formatValues%pressure/(formatValues%density*kb) + formatValues%pressure = speciesIn%mass*tensorTrace(tensorTemp)*tempVol/3.D0 + formatValues%temperature = formatValues%pressure/(formatValues%density*kb) END IF END IF diff --git a/src/modules/solver/moduleSolver.f90 b/src/modules/solver/moduleSolver.f90 index de544ba..96e3f78 100644 --- a/src/modules/solver/moduleSolver.f90 +++ b/src/modules/solver/moduleSolver.f90 @@ -3,7 +3,7 @@ MODULE moduleSolver !Generic type for pusher of particles TYPE, PUBLIC:: pusherGeneric - PROCEDURE(push_interafece), POINTER, NOPASS:: pushParticle => NULL() + PROCEDURE(push_interface), POINTER, NOPASS:: pushParticle => NULL() !Boolean to indicate if the species is moved in the iteration LOGICAL:: pushSpecies !How many interations between advancing the species @@ -29,13 +29,13 @@ MODULE moduleSolver INTERFACE !Push a particle - PURE SUBROUTINE push_interafece(part, tauIn) + PURE SUBROUTINE push_interface(part, tauIn) USE moduleSpecies TYPE(particle), INTENT(inout):: part REAL(8), INTENT(in):: tauIn - END SUBROUTINE push_interafece + END SUBROUTINE push_interface !Solve the electromagnetic field SUBROUTINE solveEM_interface() @@ -169,24 +169,75 @@ MODULE moduleSolver USE moduleMesh IMPLICIT NONE - INTEGER:: n - INTEGER:: sp + INTEGER:: p + INTEGER:: s, sp + INTEGER:: e - !$OMP DO - DO n = 1, nPartOld - !Select species type - sp = partOld(n)%species%n + !$OMP SINGLE + !Allocate the array of particles to push + nSpeciesToPush = COUNT(solver%pusher(:)%pushSpecies) + ALLOCATE(particlesToPush(1:nSpeciesToPush)) + ALLOCATE(nPartOldToPush(1:nSpeciesToPush)) + !Point the arrays to the location of the particles + sp = 0 + DO s = 1, nSpecies !Checks if the species sp is update this iteration IF (solver%pusher(sp)%pushSpecies) THEN - !Push particle - CALL solver%pusher(sp)%pushParticle(partOld(n), tau(sp)) - !Find cell in wich particle reside - CALL solver%updateParticleCell(partOld(n)) + sp = sp + 1 + particlesToPush(sp)%p = partOld(s)%p + nPartOldToPush(sp) = nPartOld(s) END IF END DO - !$OMP END DO + + !Delete list of particles in cells for collisions if the particle is pushed + IF (listInCells) THEN + DO e = 1, mesh%numCells + DO s = 1, nSpecies + IF (solver%pusher(s)%pushSpecies) THEN + CALL mesh%cells(e)%obj%listPart_in(s)%erase() + mesh%cells(e)%obj%totalWeight(s) = 0.D0 + + END IF + + END DO + + END DO + + END IF + + !Erase the list of particles inside the cell in coll mesh if the particle is pushed + IF (doubleMesh) THEN + DO e = 1, meshColl%numCells + DO s = 1, nSpecies + IF (solver%pusher(s)%pushSpecies) THEN + CALL meshColl%cells(e)%obj%listPart_in(s)%erase() + meshColl%cells(e)%obj%totalWeight(s) = 0.D0 + + END IF + + END DO + + END DO + + END IF + !$OMP END SINGLE + + !Now, push particles + !$OMP DO + DO sp = 1, nSpeciesToPush + DO p = 1, nPartOldToPush(sp) + !Push particle + CALL solver%pusher(sp)%pushParticle(particlesToPush(sp)%p(p), tau(sp)) + !Find cell in which particle reside + CALL solver%updateParticleCell(particlesToPush(sp)%p(p)) + + END DO + + END DO + !$END OMP DO + END SUBROUTINE doPushes @@ -247,7 +298,10 @@ MODULE moduleSolver !$OMP SECTION nOldIn = 0 IF (ALLOCATED(partOld)) THEN - nOldIn = COUNT(partOld%n_in) + DO s = 1, nSpecies + nOldIn = nOldin + COUNT(partOld(s)%p(:)%n_in) + + END DO END IF !$OMP SECTION @@ -324,40 +378,6 @@ MODULE moduleSolver END DO - !$OMP SECTION - !Erase the list of particles inside the cell if particles have been pushed - IF (listInCells) THEN - DO s = 1, nSpecies - DO e = 1, mesh%numCells - IF (solver%pusher(s)%pushSpecies) THEN - CALL mesh%cells(e)%obj%listPart_in(s)%erase() - mesh%cells(e)%obj%totalWeight(s) = 0.D0 - - END IF - - END DO - - END DO - - END IF - - !$OMP SECTION - !Erase the list of particles inside the cell in coll mesh - IF (doubleMesh) THEN - DO s = 1, nSpecies - DO e = 1, meshColl%numCells - IF (solver%pusher(s)%pushSpecies) THEN - CALL meshColl%cells(e)%obj%listPart_in(s)%erase() - meshColl%cells(e)%obj%totalWeight(s) = 0.D0 - - END IF - - END DO - - END DO - - END IF - !$OMP END SECTIONS !$OMP SINGLE @@ -372,14 +392,17 @@ MODULE moduleSolver USE moduleMesh IMPLICIT NONE - INTEGER:: n + INTEGER:: n, sp CLASS(meshCell), POINTER:: cell !Loops over the particles to scatter them !$OMP DO - DO n = 1, nPartOld - cell => mesh%cells(partOld(n)%cell)%obj - CALL cell%scatter(cell%nNodes, partOld(n)) + DO sp = 1, nSpeciesToPush + DO n = 1, nPartOldToPush(sp) + cell => mesh%cells(particlesToPush(sp)%p(n)%cell)%obj + CALL cell%scatter(cell%nNodes, particlesToPush(sp)%p(n)) + + END DO END DO !$OMP END DO @@ -549,8 +572,8 @@ MODULE moduleSolver END IF - IF (nPartOld > 0) THEN - WRITE(*, "(5X,A21,F8.1,A2)") "avg t/particle: ", 1.D9*tStep/DBLE(nPartOld), "ns" + IF (nPartOldTotal > 0) THEN + WRITE(*, "(5X,A21,F8.1,A2)") "avg t/particle: ", 1.D9*tStep/DBLE(nPartOldTotal), "ns" END IF WRITE(*,*) diff --git a/src/modules/solver/pusher/modulePusher.f90 b/src/modules/solver/pusher/modulePusher.f90 index f75c733..4c7e372 100644 --- a/src/modules/solver/pusher/modulePusher.f90 +++ b/src/modules/solver/pusher/modulePusher.f90 @@ -14,7 +14,7 @@ MODULE modulePusher END SUBROUTINE pushCartNeutral PURE SUBROUTINE pushCartElectrostatic(part, tauIn) - USE moduleSPecies + USE moduleSpecies USE moduleMesh IMPLICIT NONE From 0c4972384851536ca9e5bb5709b7ae1ed9bc6607 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Tue, 21 Nov 2023 09:23:18 +0100 Subject: [PATCH 10/84] NOT WORKING I need to fix something in another place and make some test, so this commit does not comile. --- src/modules/moduleSpecies.f90 | 34 ++++++++++++++--------------- src/modules/output/moduleOutput.f90 | 2 +- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/modules/moduleSpecies.f90 b/src/modules/moduleSpecies.f90 index e1b552b..d039247 100644 --- a/src/modules/moduleSpecies.f90 +++ b/src/modules/moduleSpecies.f90 @@ -8,10 +8,10 @@ MODULE moduleSpecies TYPE:: particle REAL(8):: r(1:3) !Position REAL(8):: v(1:3) !Velocity - CLASS(speciesGeneric), POINTER:: species !Pointer to species associated with this particle - INTEGER:: cell !Index of element in which the particle is located. TODO: Make these pointers + CLASS(speciesGeneric), POINTER:: species !Pointer to particle's species + INTEGER:: cell !Index of element in which the particle is located TODO: Make these pointers INTEGER:: cellColl !Index of element in which the particle is located in the Collision Mesh - REAL(8):: Xi(1:3) !Logical coordinates of particle in element e_p. + REAL(8):: Xi(1:3) !Logical coordinates of particle in cell LOGICAL:: n_in !Flag that indicates if a particle is in the domain REAL(8):: weight=0.D0 !weight of particle @@ -23,24 +23,22 @@ MODULE moduleSpecies END TYPE particleArray - !Array of pointers for the species to be pushed - TYPE:: particleArray_pointer - TYPE(particle), POINTER, DIMENSION(:):: p + !Array of pointers for the particles to be pushed + TYPE:: particlePointer + TYPE(particle), POINTER:: p - END TYPE particleArray_pointer + END TYPE particlePointer - !Number of old particles - INTEGER, ALLOCATABLE, DIMENSION(:):: nPartOld - INTEGER:: nPartOldTotal - !Number of injected particles - INTEGER:: nPartInj !Arrays that contain the particles - TYPE(particle), ALLOCATABLE, TARGET, DIMENSION(:):: partInj !array of inject particles - TYPE(particleArray), ALLOCATABLE, TARGET, DIMENSION(:):: partOld !array of particles from previous iteration - TYPE(particleArray_pointer), ALLOCATABLE, DIMENSION(:):: particlesToPush !particles pushed in each iteration - - INTEGER:: nSpeciesToPush - INTEGER, ALLOCATABLE, DIMENSION(:):: nPartOldToPush + TYPE(particleArray), ALLOCATABLE, TARGET, DIMENSION(:):: particles !array of particles in the domain + TYPE(particle), ALLOCATABLE, TARGET, DIMENSION(:):: particlesInjection !array of inject particles + TYPE(particlePointer), ALLOCATABLE, DIMENSION(:):: particlesToPush !particles pushed in each iteration + !Integers to track number of particles in domain + INTEGER, ALLOCATABLE, DIMENSION(:):: nParticles + INTEGER:: nParticlesTotal + !Number of injected particles + INTEGER, ALLOCATABLE, DIMENSION(:):: nParticlesInject + INTEGER:: nPariclesInjectTotal !Generic species type TYPE, ABSTRACT:: speciesGeneric diff --git a/src/modules/output/moduleOutput.f90 b/src/modules/output/moduleOutput.f90 index 2cb94f6..16ed1b4 100644 --- a/src/modules/output/moduleOutput.f90 +++ b/src/modules/output/moduleOutput.f90 @@ -187,7 +187,7 @@ MODULE moduleOutput OPEN(20, file = path // folder // '/' // fileName, position = 'append', action = 'write') - WRITE (20, "(I10, I10, 7(ES20.6E3))") t, nPartOld, tStep, tPush, tReset, tColl, tCoul, tWeight, tEMField + WRITE (20, "(I10, I10, 7(ES20.6E3))") t, nParticlesTotal, tStep, tPush, tReset, tColl, tCoul, tWeight, tEMField CLOSE(20) From 4585390b5018340fc27008108a7e2e0b6aec1351 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Tue, 21 Nov 2023 09:53:36 +0100 Subject: [PATCH 11/84] Fixing issue Fixing an issue with reading tables led me to other issues with collisions that I think are fixed right now. I am testing with the 1D ionization model for ALPHIE and things seems to be working properly. --- src/modules/common/moduleTable.f90 | 2 +- src/modules/mesh/moduleMesh.f90 | 2 ++ src/modules/moduleCollisions.f90 | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/common/moduleTable.f90 b/src/modules/common/moduleTable.f90 index e4da335..2dc1c75 100644 --- a/src/modules/common/moduleTable.f90 +++ b/src/modules/common/moduleTable.f90 @@ -93,7 +93,7 @@ MODULE moduleTable f = self%fMax ELSE - i = MINLOC(x - self%x, 1) + i = MINLOC(ABS(x - self%x), 1) deltaX = x - self%x(i) IF (deltaX < 0 ) THEN i = i - 1 diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index 7e30326..e96ff2a 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -911,7 +911,9 @@ MODULE moduleMesh !Loop over collisions DO c = 1, interactionMatrix(k)%amount IF (rnd_real <= probabilityColl(c)) THEN + !$OMP CRITICAL CALL interactionMatrix(k)%collisions(c)%obj%collide(part_i, part_j, vRel) + !$OMP END CRITICAL !If collisions are gonna be output, count the collision IF (collOutput) THEN diff --git a/src/modules/moduleCollisions.f90 b/src/modules/moduleCollisions.f90 index ccca930..fec4c8d 100644 --- a/src/modules/moduleCollisions.f90 +++ b/src/modules/moduleCollisions.f90 @@ -362,7 +362,7 @@ MODULE moduleCollisions CALL sp%ionize(neutral) CLASS DEFAULT - ! CALL criticalError(sp%name // " is not a neutral", 'collideBinaryIonization') + CALL criticalError(sp%name // " is not a neutral", 'collideBinaryIonization') RETURN END SELECT From e41b448ef83cad310ad1dae677c9bc10b55888fc Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Fri, 24 Nov 2023 10:30:50 +0100 Subject: [PATCH 12/84] Different species for secondary electrons The option to have a different species than the impacting electron for secondary electrons from ionization is introduced. --- doc/user-manual/fpakc_UserManual.pdf | Bin 185259 -> 185542 bytes doc/user-manual/fpakc_UserManual.tex | 5 ++++ src/modules/init/moduleInput.f90 | 14 +++++++++--- src/modules/moduleCollisions.f90 | 33 +++++++++++++++++++++++---- 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index c099b01f29ab35ef115ef44b47a742d9d5fd0be6..c424f5016355cf3dd5bdebf5cb23ee291f1c5145 100644 GIT binary patch delta 15413 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 D;J-Sn delta 15128 zcmai4cRZKv_m4`_unCb(6rcOEKa{<<5<*s)S=lSMG(=XBkt9-xtVD>&iX=ixMrH{` zND+S5=Xt)*^W?sJy?*{Euk*UD>+Eyh=iHidcjRU7i2DYg-mA`3^Qtg;ROh*GWo4dK zuL5RIu!pfgc-(nI;jN{4ZyCzYgq*Fp|K(j;bHUacQ?;mj_de&T_vWo;lwS&zT<@Fz z{`Tyro6)Ci_dUn*B~;G{g`|I79$Lw6|IYY9;QHtHqu<}I2Y0P5oEATOxyej>_2pR; zfn2}38*#HOcC07iFYYk|`|4L${9=WUV`Sy~W8lFjUqUJ-2Yp*S>h#wuM%Q*FREJR_ zbV3iGOFL5_?;GQZO<9iH%k@ddyM1$Nra}Jx+#?eDQ7ue68jC%{Kcz(|inG0C>)odJ z&i{UbHOm2ZQVElbZM^MWVdmwPFvTExjzT&n9f{-7E^Oc52*ZVQ!W6S_{C0>K&l%Me7Xp^e<%-=$}UYj!Rnb07u5g5^QM#!WhF(CNjX&z2bdU{fHw3A|`eUI@zPhkNw z=H@;391ouU=ASY6JyoXq*`uCMAC6xlMU*&l6!cl%+9&K{24@8W8itofOdPPCVN=yig!xlxY|lpX;wCzDL;R-kq8&4W}9#pyL#Q z1FHtjq?)=j^$8t)a#wZ_K+`G+Kpot0%kax#CU<$OJ1kr z9UqmX{zx8wQo81GjfE#_vTT80JW#3gg=uf3%VwT>QsJRfJqL?2>Y55`E9uOo>fO#I zN(olmy`t})V12_3&&=`7$KTToJr;3YwCdy|5w5&DL1vj4qn$1O&Gh{<++* za$37X&rK~?ExN~W^(HR}ek$EjV3RmVqZngy^@g8@-dL%!(>J)~@B_I6rIiYjCfDY- zsvaQYApz@|mNRBODLgO6h1pF*xQI2IsCmfjPMvq+0O_<7QqqgW>>xd6tr>v)qHxvfhoM@4wBGKl7!Hi&o8>KGx<7 z;VEXd#!1&d6?}PhGoxRe-i1b6e-5>TTa5LoXT+q&F^Ylh^*=b;VfEReTZS^QXNJ~xNIl_T3)kXXV@`a6|rQO98z%j;J-Gnj=6n(_%-wx*K=##rF&2R2Yn-GvlzR|%5IaV zBL>f$o3fctNITqY+F9SBbYvYKab1$<6+fwG=XT1=+tbd*l>z+bZtKiIAoFARslPyY zBJun%UHLE_P0}8it(m!J{(_t>UlseU%rBgSZH)qZm1qO(IcsvhuZX?@WWe|+9o@?xLXviq;4cX=;oKN`EjeNP5*<`^j< z{ezTu{maDXt}HF5-OI%scnC3!fjqWMPC?(C=g(#@r?Ens4saFuP*Xyiy#89`q?Wqe zkfYG7nw!2J^wsTYyr2eG_2-)DIaN*9D*0FXvCCvBHw(JMsJE30JxtB6Sb4E5Y!S@90ltXiUZRer*^d<48dGU_EKjWxvwYXydzcu2D3$ig5g35dBI`uR&H+V#6)V z5=~5&rXo4F#4s3N^M2o_sKJxu_W8iU$9LcD5v^!GZ(exDdQ@e$DLU{>yVoPTyXOAi z;s;)Bzj*7+F3jjf3z#=W zw@-El(+3`CuaZwsTOrh47HbRT)qJ8NwRq}M!=V=<7us048DQmh0bFqQ2_H5&GdYEq zJpFgR(realwKfYfqrE!PkSu;}CNk7vp*=25Y|&pnJpJ6JaF*QZ3r`o`8Y#ZRcZ*AA z9t}1wJGL{Rb|Ge7^gQ%7^$=Yd`)j?c81oRhHyH1bfoi3G z^|2)89Pc9Y*tf*a@ltVqk3R0<`M`9;PvN0)r!%qF6tn`XQk$pvWEQdFN4iU^KfR|o zca(+~3i;TkO?}MSsl%LXDqzW~mL3~1v3YQd*a?*qpIPfxZadhS>lMfT$rwgnMM*(v zK8A!e%UjKv=jQSb(HV+=suf7+XkTvFWfeTVY1&t&(JQ$-w*`lM+GvY(bek84tB`0zx*3py&PkZ@i^Vad6sSgG{K$5@=MWbo+aq6ZJ75(|}+ zZa#eQVcf1kQ)Fx!-?d=x!EvO4_S-S{ERWEt>?l2>vAidix02w6vy%Z%##2w~!s2L~ z)SQOctRBpz_lwp^CQlVEk0$e*x;!jD{rG;^@_@(nPV#qO&Ci++jWX%aCu!75&RyJp zG%%gz>L{n~+BaE)z*Hs+(W0=ZM*H?_#*7*^PXrnt%|)k-?pjdZEiM@Z<$m9R+svD3 zFVNw8es!MXS8)a_Ev)`B0SY^wuW`&gKQmuc-zL?#rrb*+&Pl3XUgI`RV&0E!yc*{` zeJ{xDlZXkXbWe6m% zV2~;J=>hQkg_RQm> zddIlk!)~5lIH2VaVRPi7lLQ0%1CiHiX?rudqBh^WdW6}KI9DFmAY$`@d*DS1#e)5t zkA}JKYV`f=XXg~oKb$N&GCyMZnfUDAwi4eTFzWa^bIT2n=+~y)fyGyTy|}+JH@-#B0=^wz6(LWxo9-;gM2oZ%O1; zj_t1;_H`I;nGQ00Agehaus!eOnr4izOl!`5u4{wr(~B9i*WaIwpM+~SNj0jzStBuf zdF1L4vuhT41S1o4yA7GcaO8IHw@a00gV#^Z`_KEHuB`~Ky2E=|+##aa^>A*jT4hA# zytUU?YVtGy0`apm;=lY??<*P1U>viAfJ`;LI;zkMAGo9;R6Y0Bx zO^%&%>!h3A+)-Qnpm!C{l@ACg{oWlM?{((~Tp$%ay{?|4t*w7px1b=Y>#VA|IZ-fn zPV05h-ZyJdxw4Q^|K?)j1PfD_V9W3M=bN+e9r4EkRfbk))7;pOa4X6s>nJsMd&Gb9 zY71aBrF(yUEs*Ama*y{%NPo518mnfw_AoC>XrE}lMNR3Av(_Ie@ZAp4xhB`@+&gl@ zeA_45GVOmQU%4`TFIJ}Sm`JmPh5b*WMa_#P5xGeQ^Q9N}dNt(Q%_=@TW}mv`+q$Vh zqR0qyU4_Q<(sZP=L(b)V_0l(fPZI?dH8nT!^DE#5RE8!;d%XiPJ`sv)Y4|4@@9unr zwV`j-j!BN8c@jiPz*xiI`kd-5`C5KW65^Ov%bY7HD0#`40DLBn-VwOurvaoLn&zVSJ_>7gKQNZkeM{ zXV3MI$?5|3FGG#o<#x$6$4&5jl`nI{OUYj}D}7(eEi*YzTf-vO3=_Uz_L7~;rYXyc zeDYO6q`>Dw_Az_wvBb%OvjSL4c4Zwl*1!klK8C~lwuyL}W;+urZkH)eGQ1cpee757 zDNtZ~DZ0A)wQ@#lQmNm0(N>ZQf9Z7_L4Nx$=Da654+~T5N)-KKnP^!S9a*IHR_((F zF(W=_T1W%?s*22l47DOnv|1BnUPl-dZ@*-bFMc+mm$Ai5&QqnFW8mi2RQ_#xl6Ged zwI0ew*$S2GV`@ID@vSnAd6sgI6r3~O%#|xO$fcUXxc`RT?%isn5%@)|ts!havnAv12JXVmb2xn!;2DB1DiP{c9C|I zc9(W{vy=9)^K^1QCG9Eg<>W8z?dWM|C++R$F6|@jn>2@~+0Jrdy1`fG{`Twu!CzeSiy zia9R)$v1uhfzYi1KXQ&(vE^OA@ALlkqaNQLvjMZ-vY=(2<@xD%+uh1nn!lvryzJXk zg5af)rK%xymKwP&n((#Pmy;iVVEX$0#WSxgOqaU9B`rDNkX`WkeLu8ohnA{SV$TwI zd*siR+{-M_W@foI<`pTFa6i~b&8$+5C?;aSv6rKatie&@VUz4qp;XYWp*dj(wcPNo z5Iimva;oKxf%*=ur)nw_IdAu3(RZ$_}D7-_f+ha0I&wm%d2bl&TPy6o$CSpaexApxb`Q8D?!UcO;-{sk zIvAougzn#)$VVM#m5IF-os)qN-Yl3yu^JsxHti^{azd8WIox<6q~=E1h= zDdq|P=UsjmdY>jnd5PbeEWBS+8<^wLrDaen<-gU)9=iNB)9uSaol)bXrjhCUTP(wR z_o}acVlwj^>*9H;GD?^@ zsQ5Ds42?SsyRR4Wa_;s_Jh2UX`dq=q8ytFji|RxVk!DvyJHwU8^Fhj2yE7Zu-7j#( zrrCCq*lvxx`s{2~CLc-)+oLhn=55c&aVymL)1{?DeCpc!Hu35R6b!ynR!yAd8HrQS zW#-=HJ4|78V#c!w&=1&t?t{%3t#Yysv$?-k=5Vwj3G0;V@M4ci-lmV#RXaJX{a9er zN+#dQqgxdgcbe=oRY~Z+r+Yh02ctNBC(b5E`hEIE%i5<~jiz2Utrjslx2>2pUJZNW z`^6!nL;2R@*ohO@>ANmiRhwGfe9l7iBzc@M-#wr>Bw6L6i+Pn{Rhh3!9qh|3d$2=W zcF5^f$Em5KCQ(iOKPKAMpNB7g>%7E}KhrB$a#g+HHt(I2t}Me&r%tMT-YvYC?I%VQ zq2cAIh9b*9^R~Y+{%FlTJ+U`D#+)uRWIg{-vUY}t($A8{q6Eut)yw^2>f2(>-`#gT z;S_$ZEEa#Zao5L!>=93`1y6Dh+@`h*Iyap1e$;P)Po2hba?SFgsj|?Z+ry~ss(i1P zFRIY1koGJ!p1f}SgOp#TAY@y*#;mqY*N6N0(laxA|LrE*thYN$yM}S++#LQ)^M1?E z5ykDEknk77=k(p&JP!>%D5r;J9k-T{+;5OG7NOuUd7xHN|5)tN-ejxWgxPQK`P}SF z+rs61Ba9+15N$3+d+(5A8QyL~Jlea-J|~msy8_J>X{{?BIaaBq6Jk?}Dzwp#`@g_H zo>kG?V^}O3?YF5OqPs^>J7`c6ytA?E_Gi#NVr={Sb2w$A5eUaQ-e@^|T z*BzX5_`S1T7Q%}0F@n!5Pv%P;WQJQ#j+Af~z82n`_RDjdS^M!^Ey<%-!raYdKA7ax zJ(R#bxgQok<2ah~wD0OWy<1gLf>KM25dj_MZN>RCj+>UNt|ZlXCoRl;o><-%qew6c zaF5Sua|{(Uv$A@7FkZ9MW>cx3R_H|8 z_{aw^Z$D4u-)aw(?H~=?>B>!u8=R4`wCSLoX}X-kDYszrpyKJP#z%ynx@-k2^^n=t zKD+lE9!KL?4~>S5xW(_&?%)|U+&KZS-7#jIfpdD|a*WevX}o_Wsa^TuIPmOB+1J8d zGA(tdbEa>o4zV)el*8XGY!hzr$O7CYEhGzhY`@@_gS~+7l^~x!ubd7q_=2C+fcpm~X$XkgDiz zkyb6b|D2>`Ax4qQHJ@nQ8+|rL{LPMMhrcx)-X6(k+s|Ef<5gD<`;1I@)yu)*0lNpT zzmD@z$d{Z|-QR`Eo%~QaH&t59+bh&JVgvK$e>iG&RE@`W6D!8g%KvNRnq88Y-m_gl zK4dv$E$x_(#VC!={P42pR5|W_`M@%LQv+mi{*`%qndPBQA5;8o=IF(qCbB8*)gp#O z_Quae`lV6>r)2{>ed!LVtH8%B6K~g@xpYRsjxY62-?e4Ijzi;2*`7_R@}&k&;}
$bJkFhVX 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 MgNTT#z8b^-0qDJ%_W%F@ diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index fccf4a0..2b8fa8e 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -764,6 +764,11 @@ make \item \textbf{electron}: Character. Name of species designed as electrons. Only valid for \textbf{ionization} and \textbf{recombination} processes. + \item \textbf{electronSecondary}: Character. + Optional. + Name of species designed as secondary electrons. + If none provided, \textbf{electron} is used. + Only valid for \textbf{ionization}. \end{itemize} \end{itemize} \item \textbf{Coulomb}: Array of objects. diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 9891806..46b627b 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -634,7 +634,7 @@ MODULE moduleInput INTEGER:: i, k, ij INTEGER:: pt_i, pt_j REAL(8):: energyThreshold, energyBinding - CHARACTER(:), ALLOCATABLE:: electron + CHARACTER(:), ALLOCATABLE:: electron, electronSecondary INTEGER:: e CLASS(meshCell), POINTER:: cell @@ -711,8 +711,16 @@ MODULE moduleInput IF (.NOT. found) CALL criticalError('energyThreshold not found for collision' // object, 'readInteractions') CALL config%get(object // '.electron', electron, found) IF (.NOT. found) CALL criticalError('electron not found for collision' // object, 'readInteractions') - CALL initBinaryIonization(interactionMatrix(ij)%collisions(k)%obj, & - crossSecFilePath, energyThreshold, electron) + CALL config%get(object // '.electronSecondary', electronSecondary, found) + IF (found) THEN + CALL initBinaryIonization(interactionMatrix(ij)%collisions(k)%obj, & + crossSecFilePath, energyThreshold, electron, electronSecondary) + + ELSE + CALL initBinaryIonization(interactionMatrix(ij)%collisions(k)%obj, & + crossSecFilePath, energyThreshold, electron) + + END IF CASE ('recombination') !Electorn impact ionization diff --git a/src/modules/moduleCollisions.f90 b/src/modules/moduleCollisions.f90 index fec4c8d..d9a6ef2 100644 --- a/src/modules/moduleCollisions.f90 +++ b/src/modules/moduleCollisions.f90 @@ -43,7 +43,8 @@ MODULE moduleCollisions TYPE, EXTENDS(collisionBinary):: collisionBinaryIonization REAL(8):: eThreshold !Minimum energy (non-dimensional units) required for ionization REAL(8):: deltaV !Change in velocity due to exchange of eThreshold - CLASS(speciesCharged), POINTER:: electron !Pointer to species considerer as electrons + CLASS(speciesCharged), POINTER:: electron !Pointer to species considerer as electrons + CLASS(speciesCharged), POINTER:: electronSecondary !Pointer to species considerer as secondary electron CONTAINS PROCEDURE, PASS:: collide => collideBinaryIonization @@ -241,7 +242,7 @@ MODULE moduleCollisions !ELECTRON IMPACT IONIZATION !Inits electron impact ionization - SUBROUTINE initBinaryIonization(collision, crossSectionFilename, energyThreshold, electron) + SUBROUTINE initBinaryIonization(collision, crossSectionFilename, energyThreshold, electron, electronSecondary) USE moduleTable USE moduleRefParam USE moduleConstParam @@ -253,7 +254,8 @@ MODULE moduleCollisions CHARACTER(:), ALLOCATABLE, INTENT(in):: crossSectionFilename REAL(8), INTENT(in):: energyThreshold CHARACTER(:), ALLOCATABLE, INTENT(in):: electron - INTEGER:: electronIndex + CHARACTER(:), ALLOCATABLE, OPTIONAL, INTENT(in):: electronSecondary + INTEGER:: electronIndex, electronSecondaryIndex ALLOCATE(collisionBinaryIonization:: collision) @@ -278,10 +280,27 @@ MODULE moduleCollisions CLASS DEFAULT CALL criticalError("Species " // sp%name // " chosen for " // & - "secondary electron is not a charged species", 'initBinaryIonization') + "impacting electron is not a charged species", 'initBinaryIonization') END SELECT + IF (PRESENT(electronSecondary)) THEN + electronSecondaryIndex = speciesName2Index(electronSecondary) + SELECT TYPE(sp => species(electronSecondaryIndex)%obj) + TYPE IS(speciesCharged) + collision%electronSecondary => sp + + CLASS DEFAULT + CALL criticalError("Species " // sp%name // " chosen for " // & + "secondary electron is not a charged species", 'initBinaryIonization') + + END SELECT + + ELSE + collision%electronSecondary => NULL() + + END IF + !momentum change per ionization process collision%deltaV = sqrt(collision%eThreshold / collision%electron%m) @@ -336,6 +355,12 @@ MODULE moduleCollisions !Copy basic information from primary electron newElectron = electron + !If secondary electron species indicates, convert + IF (ASSOCIATED(self%electronSecondary)) THEN + newElectron%species => self%electronSecondary + + END IF + !Secondary electorn gains energy from ionization newElectron%v = vChange From d86b3a3417282cc65f26dcb3396de9194b77abf0 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 28 Mar 2024 09:45:46 +0100 Subject: [PATCH 13/84] Implementing injection with current density WARNING: This current denstiy will be multiplied by the reference length, no the surface area that is being used for injection! New units in the injection of particles 'Am2' to inject a density current. Manual has been modified accordingly. Reference parameters are now also printed in the case folder. --- doc/user-manual/fpakc_UserManual.pdf | Bin 185542 -> 185817 bytes doc/user-manual/fpakc_UserManual.tex | 102 ++++++++++++------------ src/fpakc.f90 | 4 + src/modules/init/moduleInput.f90 | 63 ++++++++++----- src/modules/mesh/moduleMeshBoundary.f90 | 8 +- src/modules/moduleBoundary.f90 | 24 +++++- src/modules/moduleInject.f90 | 4 + src/modules/solver/moduleSolver.f90 | 5 -- 8 files changed, 133 insertions(+), 77 deletions(-) diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index c424f5016355cf3dd5bdebf5cb23ee291f1c5145..2453bb7a03988944220d03dbe093216dd6203ec1 100644 GIT binary patch delta 140047 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%0A363IdkVE@Dw&*F2UiMsZ=dN7w%}nEz~> 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 z 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

b)0on}vV0_O)@}by@`a!o`#r!J0B4cts_ki>O)> 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%0Ag}URIN;g}2A&FX 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↱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»HLZ!SX-<2a4DL diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index 2b8fa8e..daf42c3 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -72,7 +72,7 @@ The \Gls{fpakc} is a simulation tool that models species in plasma (ions, electrons and neutrals) following the trajectories of macro-particles as they move and interact between them and the boundaries of the domain. Particles properties are scattered into a finite element mesh in 1, 2 or three dimensions, with the possibility to choose different geometries. The official repository can be found at: \url{https://gitlab.com/JorgeGonz/fpakc.git}. - The code is currently in very early steps of development and further improvements are expected very soon. + The code is currently in the very early steps of development and further refinements are expected very soon. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Main Guidelines} @@ -86,11 +86,11 @@ \item \acrshort{fpakc} is coded in a \textit{understandable} way. This means that the code is required to be written in a clear way that is easy to understand and maintain. Variables and procedure names need to be self-understanding. - This ease the process of fixing bugs and improving the codes by a large team of developers. + This eases the process of fixing bugs and improving the codes by a large team of developers. For more information, please refer to the \acrshort{fpakc} Coding Style document. - \item \acrshort{fpakc} requires to be ease to use. + \item \acrshort{fpakc} requires being ease to use. Input files are required to be in a \textit{human} format, meaning that the different options can be easily understood without constant reference to the user guide. - \acrshort{fpakc} is aimed to be used in a wide range of applications and by a variety of scientist: from very established ones to newcomers to the field and also students. + \acrshort{fpakc} is aimed to be used in a wide range of applications and by various scientists: from well-established ones to newcomers to the field and also students. \end{enumerate} These are foundation stones of \acrshort{fpakc} and its development and should always be followed, at least for the releases in the official repository. @@ -105,16 +105,16 @@ \section{The Particle Method} \Gls{fpakc} uses macro-particles to simulate the dynamics of different plasma species (mainly ions, electrons and neutrals). These macro-particles could represent a large amount of real particles. - For now own, macro-particles will be referred as just particles by abusing of language. + For now own, macro-particles will be referred as just particles by abuse of language. During the initiation phase, the input and mesh file(s) are reading. If an initial distribution for a species is specified in the input file, particles to match that distribution are loaded into the cells. The general steps performed in each iteration are: \begin{enumerate} \item Firstly, new particles are introduced into the domain as specified in the input file. - \item Particles are then pushed accounting for possible acceleration by external forces. - During this process, if a particle changes cell it is found using the connectivity between elements. - If a particle encounters a boundary instead a new cell, the interaction between the boundary and the wall is computed. + \item Particles are then pushed, accounting for possible acceleration by external forces. + During this process, if a particle changes cell, it is found using the connectivity between elements. + If a particle encounters a boundary instead a new cell, the interaction between the boundary and the wall are computed. A particle may abandon the computational domain and is no longer accounted for. \item Next, collisions for the particles inside each cell are carried out. This may include different collision processes for each particle. @@ -124,10 +124,10 @@ \item Finally, particle properties are scattered among the mesh nodes. These properties are density, momentum and the stress tensor. \item If requested, the electromagnetic field is computed. - \item If the number of iteration requires writing output files, it is done after all steps for the particles is completed. + \item If the number of iteration requires writing output files, it is done after all steps for the particles are completed. \end{enumerate} - \Gls{fpakc} has the capability to configure all the behavior of the simulation via the input file. + \Gls{fpakc} has the capability to configure all the behaviour of the simulation via the input file. Parameters as injection, the kind of pusher used for each species, boundary conditions or collisions are user-input parameters and will be described in Chap.~\ref{ch:input_file}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -168,8 +168,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Find new cell} Once the position and velocity of the particle are updated, the new cell that contains the particle is searched. - This is done by a neighbor search, starting from the previous cell containing the particle. - In the process of finding the new cell, it is possible that a particle encounters a boundary. + This is done by a neighbour search, starting from the previous cell containing the particle. + In the process of finding the new cell, a particle might encounter a boundary. When the particle interacts with the boundary, the particle may continue its life in the simulation or might be eliminated from it. Once that the new cell is found or that the particle life has been terminated, the pushing is complete. If a secondary mesh is used for the Monte-Carlo Collision method, the new cell in that mesh in which the particle reside is also found by the same method, although no interaction with the boundaries is accounted for this step. @@ -178,7 +178,7 @@ \section{Variable Weighting Scheme\label{sec:weightingScheme}} One of the issues in particle simulations, specially for axial-symmetrical cases, is that due to the disparate volume of cells, specially close to the axis, the statistics in some cells is usually poor. To try to fix that, the possibility to include a Variable Weighting Scheme in the simulations is available in \Gls{fpakc}. - These schemes detect when a particle change cells and split it if necessary to improve statistics. + These schemes detect when a particle changes cells and split it if necessary to improve statistics. The use of a Variable Weighting Scheme is defined by the user in the input file. Beware that this can increase the number of particles in the simulation and increase computational time. @@ -189,16 +189,16 @@ \Gls{fpakc} distinguish between two types of interactions: \acrfull{mcc} and \acrfull{cs}. \acrshort{mcc} refers to the process in which two particles interact in short range. These processes include, but are not limited to: elastic collisions, ionization/recombination, charge-exchange, excitation/de-excitation\ldots - A secondary mesh, with cell sizes in the range of the mean-free path, can be used for this type of collisions. + A secondary mesh, with cell sizes in the range of the mean-free path, can be used for this type of collision. \acrshort{cs} refers to the large range interaction that a charged species suffer do to the charge of other particles. The interactions between the different species is defined by the user. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{\acrlong{mcc}} - For each cell the maximum number of collisions between particle is computed. + For each cell, the maximum number of collisions between particle is computed. For each collision, a random pair of particles is chosen. A loop over all possible collisions for the pair of particles chosen is performed. - If a random number is above the probability of collision for that specific type, the collision take place. + If a random number is above the probability of collision for that specific type, the collision takes place. If not, the next type for the particle pair is checked. Below are described the type of collision process implemented in \acrshort{fpakc}: @@ -219,7 +219,7 @@ \item Recombination. When an electron and an ion interact, there is a possibility for them to be recombined into a neutral particle. - The photon emitted by this process is not modelled yet. + The photons emitted by this process are not modelled yet. \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -238,7 +238,7 @@ Once that the pushing is complete, the array of particles that remain inside the domain is copied to a new array. The new array containing only the particles inside the domain will be the one used in the next steps. In this section, particles are assigned to the list of particles inside each individual cell. - Unfortunately, this is done right now without parallelisation and is very CPU consuming. + Unfortunately, this is done right now without parallelization and is very CPU consuming. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Probing}\label{sec:probing} @@ -250,21 +250,21 @@ The user can decide the grid width and the number of points in each direction. The distribution function will be calculated and wrote with a time step decided by the user. - If a particle velocity resides outside of the velocity grid (in any direction), it wont be added to the tally of the distribution function. - Due to the limitation of only taking into account particles in the cell, and not neighbour particles, two probes for the same species at different positions but in the same cell will output the same results. - A more advance method taking into account distance between the particles and the probe position as well as particles in neighbour cells could be implemented to improve the statistics of the distribution function. + If a particle velocity resides outside the velocity grid (in any direction), it will not be added to the tally of the distribution function. + Due to the limitation of only considering particles in the cell, and not neighbour particles, two probes for the same species at different positions but in the same cell will output the same results. + A more advance method considering distance between the particles and the probe position as well as particles in neighbour cells could be implemented to improve the statistics of the distribution function. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Scattering} The properties of each particle are deposited in the nodes from the containing cell. - This process depend on the cell type, but in general, each node receive a proportional part of the particle properties as a function of the particle position inside the cell. - Figure \ref{fig:scatteringQuad} shows how a particle at a generic position $p(x_1, x_2)$ inside the cell is scattered to the four nodes. + This process depends on the cell type, but in general, each node receives a proportional part of the particle properties as a function of the particle position inside the cell. + The figure \ref{fig:scatteringQuad} shows how a particle at a generic position $p(x_1, x_2)$ inside the cell is scattered to the four nodes. \begin{wrapfigure}{l}{0.4\textwidth} \centering \includegraphics{figures/scatteringQuad} \caption{\label{fig:scatteringQuad}Example of how a particle is weighted in a quadrilateral cell.} \end{wrapfigure} - Each node receives a proportional part of the area formed by dividing the cell in for rectangles using as an additional vertex the particle position. + Each node receives a proportional part of the area formed by dividing the cell in for rectangles, using as an additional vertex the particle position. These properties are dimensionless, but they are converted to the correct units once the output is printed. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -273,11 +273,11 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Average scheme} - Particle-in-cell codes has an intrinsic statistical noise associated with them. + Particle-in-cell codes have an intrinsic statistical noise associated with them. Although this can be reduced by increasing the number of particles, this also increases the CPU requirements of the case. It is quite common that most cases reach a quasi-steady state after a number of iterations and time-average results can be obtained after to improve analysis, plotting and restarting the case using these time-average results as new species backgrounds. - Although this is possible to do once the simulation is finished with post-processing tools, this is limited to the amount of iterations printed. + Although this is possible to do once the simulation is finished with post-processing tools, this is limited to the number of iterations printed. \Gls{fpakc} implements a simple average scheme that, after a start time provided by the user, scores a mean and standard deviation of all the main species properties, and the electromagnetic field. This scheme is based on the Welford's online algorithm~\cite{welford1962note}. @@ -286,7 +286,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Installation} \section{Required Packages} - In order to properly compile \gls{fpakc}, the following packages are required. + To properly compile \gls{fpakc}, the following packages are required. \subsection{Gfortran} The \Gls{opensource} free compiler \Gls{gfortran}\cite{gfortranURL} from GCC is the basic way to compile \acrshort{fpakc}. It is distributed with all GNU/Linux distributions. @@ -369,7 +369,7 @@ make %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Case file} The required format for the case file is \Gls{json}. - \Gls{json} is a case-sensitive format, so input must be written with the correct capitalisation. + \Gls{json} is a case-sensitive format, so input must be written with the correct capitalization. The basic structure and options available for the case file are explained below. The order of the objects and variables is irrelevant, but the structure needs to be maintained. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -380,9 +380,9 @@ make \item \textbf{path}: Character. Path for the output files. This path is also used to locate the mesh input file. \item \textbf{folder}: Character. - Base name of the folder in wich output files are placed. + Base name of the folder in which output files are placed. The date and time is appended to this name. - If none is provided, only the date and time is writted as the folder name. + If none is provided, only the date and time is written as the folder name. \item \textbf{triggerOutput}: Integer. Determines the number of iterations between writing output files for macroscopic quantities. \item \textbf{cpuTime}: Logical. @@ -515,7 +515,7 @@ make \item \textbf{absorption}: Particle is eliminated from the domain. The particle is first moved into the edge and its properties are scattered among the edge nodes. \item \textbf{transparent}: Particle abandon the numerical domain. - \item \textbf{wallTemperature}: Reflective wall with cosntant temperature that exchange heat with particles. + \item \textbf{wallTemperature}: Reflective wall with constant temperature that exchange heat with particles. Required parameters are: \begin{itemize} \item \textbf{temperature}: Real. @@ -526,8 +526,8 @@ make Specific heat capacity of the material. \end{itemize} \item \textbf{ionization}: Per each particle crossing the surface with this type of boundary, a number of ionization events are calculated. - A pair of ion-electron is generated for each ionization event taking as a reference a neutral background. - Secondary electron is taken as same type as incident particle. + A pair of ion-electron is generated for each ionization event, taking as a reference a neutral background. + The secondary electron is taken as the same type as the incident particle. The available input is: \begin{itemize} \item \textbf{neutral}: Object. @@ -540,7 +540,7 @@ make \item \textbf{mass}: Real. Units in $\unit{kg}$. Mass of neutral species. - If missing, the mass of the ion is ussed + If missing, the mass of the ion is used \item \textbf{density}: Real. Units in $\unit{m^{-3}}$. Density of neutral background. @@ -558,18 +558,18 @@ make \end{itemize} \item \textbf{effectiveTime}: Real. Units in $\unit{s}$. - As the particle is no longer simulated once it crossed the boundary, this time represent the effective time in which the particle produces ionization processes in the neutral background. + As the particle is no longer simulated once it crossed the boundary, this time represents the effective time in which the particle produces ionization processes in the neutral background. Required parameter. \item \textbf{energyThreashold}: Real. Units in $\unit{eV}$. Ionization energy threshold for the simulated process. Required parameter. \item \textbf{crossSection}: Character. - Complete path to the cross section data for the ionization process. + Complete path to the cross-section data for the ionization process. \end{itemize} \item \textbf{axis}: Identifies the symmetry axis for 2D cylindrical simulations. - If for some reason a particle interact with this axis, it is reflected. + If , for some reason, a particle interacts with this axis, it is reflected. \end{itemize} \end{itemize} @@ -596,7 +596,7 @@ make %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{inject} The array \textbf{inject} specifies the injection of particles from different surfaces. - The injection of particles need to be associated to a physicalSurface in the mesh file. + The injection of particles needs to be associated to a physicalSurface in the mesh file. Multiple injections can be associated to the same surface. \begin{itemize} \item \textbf{name}: Character. @@ -610,7 +610,9 @@ make Available values are: \begin{itemize} \item \textbf{A}: Ampere. - \item \textbf{sccm}: Standard cubic centimeter. + \item \textbf{Am2}: Ampere per square meter. + This value will be multiplied by the square of the reference length to convert to A, it will not consider the surface area of injection. + \item \textbf{sccm}: Standard cubic centimetre. \item \textbf{part/s}: Particles (real) per second. \end{itemize} \item \textbf{v}: Real. @@ -627,7 +629,7 @@ make \begin{itemize} \item \textbf{Maxwellian}: Maxwellian distribution of temperature \textbf{T} and mean \textbf{v} times the value of \textbf{n} in the specified direction. \item \textbf{Half-Maxwellian}: Half-Maxwellian distribution of temperature \textbf{T} and mean \textbf{v} times the value of \textbf{n} in the specified direction. - Only takes into account the positive part of the half-Maxwellian. + Only considers the positive part of the half-Maxwellian. \item \textbf{Delta}: Dirac's delta distribution function. All particles are injected with velocity \textbf{v} times the value of \textbf{n} in the specified direction. \end{itemize} \item \textbf{T}: Real. @@ -651,7 +653,7 @@ make \item \textbf{radius}: Real. Reference atomic radius in $\unit{m}$. \item \textbf{crossSection}: Real. - Reference cross section in $\unit{m^2}$. + Reference cross-section in $\unit{m^2}$. If this value is present, radius is ignored. \end{itemize} @@ -677,8 +679,8 @@ make Indicates the type of pusher used for each species: \begin{itemize} \item \textbf{Neutral}: Pushes a particle without any external force. - \item \textbf{Electrostatic}: Pushes a particle including the effect of the electrostatic field. - \item \textbf{Electromagnetic}: Pushes particles accounting for the electromagnetic field. + \item \textbf{Electrostatic}: Pushes a particle, including the effect of the electrostatic field. + \item \textbf{Electromagnetic}: Pushes a particle, accounting for the electromagnetic field. \end{itemize} \item \textbf{WeightingScheme}: Character. Indicates the variable weighting scheme to be used in the simulation. @@ -726,11 +728,11 @@ make \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{interactions}\label{ssec:input_interactions} - This object determine the different interactions among species. + This object determines the different interactions among species. Acceptable values are: \begin{itemize} \item \textbf{folderCollisions}: Character. - Indicates the path to in which the cross section tables are allocated. + Indicates the path to in which the cross-section tables are allocated. \item \textbf{meshCollisions}: Character. Determines a specific mesh for \acrshort{mcc} processes. The file needs to be located in the folder \textbf{output.folder}. @@ -757,7 +759,7 @@ make Accepted values are \textbf{elastic}, \textbf{chargeExchange}, \textbf{ionization} and \textbf{recombination}. Please refer to Sec.~\ref{ssec:collisions} for a description of the different collision types. \item \textbf{crossSection}: Character. - File in \textbf{interactions.folderCollisions} that contains the cross section data as a 1D table of relative energy (in $\unit{eV}$) and cross section (in $\unit{m^-2}$). + File in \textbf{interactions.folderCollisions} that contains the cross-section data as a 1D table of relative energy (in $\unit{eV}$) and cross-section (in $\unit{m^-2}$). \item \textbf{energyThreshold}: Real. Energy threshold of the collisional process in $\unit{eV}$. Only valid for \textbf{ionization} and \textbf{recombination} processes. @@ -778,7 +780,7 @@ make \begin{itemize} \item \textbf{species\_i}, \textbf{species\_j}: Character. Define the two species involved in the collision processes. - Order is indiferent. + Order is indifferent. \end{itemize} \end{itemize} @@ -804,9 +806,9 @@ make %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{1D Emissive Cathode (1D\_Cathode)} - Emission from a 1D cathode in both, cartesian and radial coordinates. - Both cases insert the same amount of electrons from the minimum coordinate and have the same boundary conditions for particles and the electrostatic field. - This case is useful to ilustrate hoy \acrshort{fpakc} can deal with different geometries by just modifying some parameters in the input file. + Emission from a 1D cathode in both, Cartesian and radial coordinates. + Both cases insert the same number of electrons from the minimum coordinate and have the same boundary conditions for particles and the electrostatic field. + This case is useful to illustrate how \acrshort{fpakc} can deal with different geometries by just modifying some parameters in the input file. The same mesh file (\lstinline|mesh.msh|) is used for both cases. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/fpakc.f90 b/src/fpakc.f90 index e85f5f6..e90a5e0 100644 --- a/src/fpakc.f90 +++ b/src/fpakc.f90 @@ -27,6 +27,10 @@ PROGRAM fpakc !Reads the json configuration file CALL readConfig(inputFile) + + !Create output folder and initial files + CALL initOutput(inputFile) + !Do '0' iteration t = tInitial diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 46b627b..7a1b206 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -84,20 +84,6 @@ MODULE moduleInput CALL readParallel(config) CALL checkStatus(config, "readParallel") - !If everything is correct, creates the output folder - CALL EXECUTE_COMMAND_LINE('mkdir ' // path // folder ) - !Copies input file to output folder - CALL EXECUTE_COMMAND_LINE('cp ' // inputFile // ' ' // path // folder) - !Copies particle mesh - IF (mesh%dimen > 0) THEN - CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshParticle // ' ' // path // folder) - IF (doubleMesh) THEN - CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshColl // ' ' // path // folder) - - END IF - - END IF - END SUBROUTINE readConfig !Checks the status of the JSON case file and, if failed, exits the execution. @@ -813,8 +799,8 @@ MODULE moduleInput REAL(8), DIMENSION(:), ALLOCATABLE:: v0 REAL(8):: effTime REAL(8):: eThreshold !Energy threshold - INTEGER:: speciesID - CHARACTER(:), ALLOCATABLE:: speciesName, crossSection + INTEGER:: speciesID, electronSecondaryID + CHARACTER(:), ALLOCATABLE:: speciesName, crossSection, electronSecondary LOGICAL:: found INTEGER:: nTypes @@ -869,8 +855,17 @@ MODULE moduleInput CALL config%get(object // '.crossSection', crossSection, found) IF (.NOT. found) CALL criticalError("missing parameter 'crossSection' for neutrals in ionization", 'readBoundary') - CALL initIonization(boundary(i)%bTypes(s)%obj, species(s)%obj%m, m0, n0, v0, T0, & - speciesID, effTime, crossSection, eThreshold) + CALL config%get(object // '.electronSecondary', electronSecondary, found) + electronSecondaryID = speciesName2Index(electronSecondary) + IF (found) THEN + CALL initIonization(boundary(i)%bTypes(s)%obj, species(s)%obj%m, m0, n0, v0, T0, & + speciesID, effTime, crossSection, eThreshold,electronSecondaryID) + + ELSE + CALL initIonization(boundary(i)%bTypes(s)%obj, species(s)%obj%m, m0, n0, v0, T0, & + speciesID, effTime, crossSection, eThreshold) + + END IF CASE('wallTemperature') CALL config%get(object // '.temperature', Tw, found) @@ -1380,5 +1375,37 @@ MODULE moduleInput END SUBROUTINE readParallel + SUBROUTINE initOutput(inputFile) + USE moduleRefParam + USE moduleMesh, ONLY: mesh, doubleMesh, pathMeshParticle, pathMeshColl + USE moduleOutput, ONLY: path, folder + IMPLICIT NONE + + CHARACTER(:), ALLOCATABLE, INTENT(in):: inputFile + INTEGER:: fileReference = 30 + !If everything is correct, creates the output folder + CALL EXECUTE_COMMAND_LINE('mkdir ' // path // folder ) + !Copies input file to output folder + CALL EXECUTE_COMMAND_LINE('cp ' // inputFile // ' ' // path // folder) + !Copies particle mesh + IF (mesh%dimen > 0) THEN + CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshParticle // ' ' // path // folder) + IF (doubleMesh) THEN + CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshColl // ' ' // path // folder) + + END IF + + END IF + + ! Write commit of fpakc + CALL SYSTEM('git rev-parse HEAD > ' // path // folder // '/' // 'fpakc_commit.txt') + + ! Write file with reference values + OPEN (fileReference, file=path // folder // '/' // 'reference.txt') + WRITE(fileReference, "(7(1X,A20))") 'L_ref', 'v_ref', 'ti_ref', 'Vol_ref', 'EF_ref', 'Volt_ref', 'B_ref' + WRITE(fileReference, "(7(1X,ES20.6E3))") L_ref, v_ref, ti_ref, Vol_ref, EF_ref, Volt_ref, B_ref + CLOSE(fileReference) + + END SUBROUTINE initOutput END MODULE moduleInput diff --git a/src/modules/mesh/moduleMeshBoundary.f90 b/src/modules/mesh/moduleMeshBoundary.f90 index 4f72e10..091e52e 100644 --- a/src/modules/mesh/moduleMeshBoundary.f90 +++ b/src/modules/mesh/moduleMeshBoundary.f90 @@ -147,7 +147,13 @@ MODULE moduleMeshBoundary ALLOCATE(newElectron) ALLOCATE(newIon) - newElectron%species => part%species + IF (ASSOCIATED(bound%electronSecondary)) THEN + newElectron%species => bound%electronSecondary + + ELSE + newElectron%species => part%species + + END IF newIon%species => bound%species newElectron%v = v0 + (1.D0 + bound%deltaV*v0/NORM2(v0)) diff --git a/src/modules/moduleBoundary.f90 b/src/modules/moduleBoundary.f90 index 83c815c..0b76105 100644 --- a/src/modules/moduleBoundary.f90 +++ b/src/modules/moduleBoundary.f90 @@ -38,6 +38,7 @@ MODULE moduleBoundary TYPE, PUBLIC, EXTENDS(boundaryGeneric):: boundaryIonization REAL(8):: m0, n0, v0(1:3), vTh !Properties of background neutrals. CLASS(speciesGeneric), POINTER:: species !Ion species + CLASS(speciesCharged), POINTER:: electronSecondary !Pointer to species considerer as secondary electron TYPE(table1D):: crossSection REAL(8):: effectiveTime REAL(8):: eThreshold @@ -103,17 +104,19 @@ MODULE moduleBoundary END SUBROUTINE initWallTemperature - SUBROUTINE initIonization(boundary, me, m0, n0, v0, T0, speciesID, effTime, crossSection, eThreshold) + SUBROUTINE initIonization(boundary, me, m0, n0, v0, T0, ion, effTime, crossSection, eThreshold, electronSecondary) USE moduleRefParam USE moduleSpecies USE moduleCaseParam USE moduleConstParam + USE moduleErrors IMPLICIT NONE CLASS(boundaryGeneric), ALLOCATABLE, INTENT(out):: boundary REAL(8), INTENT(in):: me !Electron mass REAL(8), INTENT(in):: m0, n0, v0(1:3), T0 !Neutral properties - INTEGER:: speciesID + INTEGER, INTENT(in):: ion + INTEGER, OPTIONAL, INTENT(in):: electronSecondary REAL(8):: effTime CHARACTER(:), ALLOCATABLE, INTENT(in):: crossSection REAL(8), INTENT(in):: eThreshold @@ -126,7 +129,22 @@ MODULE moduleBoundary boundary%n0 = n0 * Vol_ref boundary%v0 = v0 / v_ref boundary%vTh = DSQRT(kb*T0/m0)/v_ref - boundary%species => species(speciesID)%obj + boundary%species => species(ion)%obj + IF (PRESENT(electronSecondary)) THEN + SELECT TYPE(sp => species(electronSecondary)%obj) + TYPE IS(speciesCharged) + boundary%electronSecondary => sp + + CLASS DEFAULT + CALL criticalError("Species " // sp%name // " chosen for " // & + "secondary electron is not a charged species", 'initIonization') + + END SELECT + + ELSE + boundary%electronSecondary => NULL() + + END IF boundary%effectiveTime = effTime / ti_ref CALL boundary%crossSection%init(crossSection) CALL boundary%crossSection%convert(eV2J/(m_ref*v_ref**2), 1.D0/L_ref**2) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 4e57083..b37e021 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -110,6 +110,10 @@ MODULE moduleInject !Input current in Ampers self%nParticles = INT(flow*tauInject*ti_ref/(qe*species(sp)%obj%weight)) + CASE ("Am2") + !Input current in Ampers per square meter + self%nParticles = INT(flow*tauInject*ti_ref*L_ref**2/(qe*species(sp)%obj%weight)) + CASE ("part/s") !Input current in Ampers self%nParticles = INT(flow*tauInject*ti_ref/species(sp)%obj%weight) diff --git a/src/modules/solver/moduleSolver.f90 b/src/modules/solver/moduleSolver.f90 index e539fed..0b2837f 100644 --- a/src/modules/solver/moduleSolver.f90 +++ b/src/modules/solver/moduleSolver.f90 @@ -517,11 +517,6 @@ MODULE moduleSolver INTEGER, INTENT(in):: t - IF (t == tInitial) THEN - CALL SYSTEM('git rev-parse HEAD > ' // path // folder // '/' // 'fpack_commit.txt') - - END IF - CALL outputProbes(t) counterOutput = counterOutput + 1 From a3bdf8230a50fd21f0dd23e55c831df5d8f7cc06 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 19 May 2024 10:55:20 +0200 Subject: [PATCH 14/84] Implementation of Boltzmann electrons Still not working, just saving code. --- src/modules/init/moduleInput.f90 | 4 + .../solver/electromagnetic/moduleEM.f90 | 95 +++++++++++++++++-- src/modules/solver/moduleSolver.f90 | 2 + 3 files changed, 94 insertions(+), 7 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 46b627b..7f6c036 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -273,6 +273,10 @@ MODULE moduleInput !Read BC CALL readEMBoundary(config) + CASE("ElectrostaticBoltzmann") + !Read BC + CALL readEMBoundary(config) + CASE("ConstantB") !Read BC CALL readEMBoundary(config) diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index bdf6b03..c7c74ee 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -49,7 +49,7 @@ MODULE moduleEM END SUBROUTINE !Assemble the source vector based on the charge density to solve Poisson's equation - SUBROUTINE assembleSourceVector(vectorF) + SUBROUTINE assembleSourceVector(vectorF, n_e) USE moduleMesh USE moduleRefParam IMPLICIT NONE @@ -58,15 +58,16 @@ MODULE moduleEM REAL(8), ALLOCATABLE:: localF(:) INTEGER, ALLOCATABLE:: nodes(:) REAL(8), ALLOCATABLE:: rho(:) + REAL(8), INTENT(in), OPTIONAL:: n_e(1:mesh%numNodes) INTEGER:: nNodes INTEGER:: e, i, ni CLASS(meshNode), POINTER:: node - !$OMP SINGLE + ! !$OMP SINGLE vectorF = 0.D0 - !$OMP END SINGLE + ! !$OMP END SINGLE - !$OMP DO REDUCTION(+:vectorF) + ! !$OMP DO REDUCTION(+:vectorF) DO e = 1, mesh%numCells nNodes = mesh%cells(e)%obj%nNodes nodes = mesh%cells(e)%obj%getNodes(nNodes) @@ -77,6 +78,10 @@ MODULE moduleEM ni = nodes(i) node => mesh%nodes(ni)%obj rho(i) = DOT_PRODUCT(qSpecies(:), node%output(:)%den/(vol_ref*node%v*n_ref)) + IF (PRESENT(n_e)) THEN + rho(i) = rho(i) - n_e(i) + + END IF END DO @@ -94,10 +99,10 @@ MODULE moduleEM DEALLOCATE(nodes, rho) END DO - !$OMP END DO + ! !$OMP END DO !Apply boundary conditions - !$OMP DO + ! !$OMP DO DO i = 1, mesh%numNodes node => mesh%nodes(i)%obj @@ -108,7 +113,7 @@ MODULE moduleEM END SELECT END DO - !$OMP END DO + ! !$OMP END DO END SUBROUTINE assembleSourceVector @@ -156,4 +161,80 @@ MODULE moduleEM END SUBROUTINE solveElecField + FUNCTION BoltzmannElectron(phi, n) RESULT(n_e) + USE moduleRefParam + USE moduleConstParam + IMPLICIT NONE + + INTEGER, INTENT(in):: n + REAL(8), INTENT(in):: phi(1:n) + REAL(8):: n_e(1:n) + REAL(8):: n_e0 = 1.0D16, phi_0 = -520.0D0, T_e = 11604.0 + + n_e = n_e0 / n_ref * EXP(-qe * (phi*Volt_ref - phi_0) / (kb * T_e)) + + RETURN + + END FUNCTION BoltzmannElectron + + SUBROUTINE solveElecFieldBoltzmann + USE moduleMesh + USE moduleErrors + IMPLICIT NONE + + INTEGER, SAVE:: INFO + INTEGER:: n + REAL(8), ALLOCATABLE, SAVE:: tempF(:) + REAL(8), ALLOCATABLE:: n_e(:), phi_old(:) + INTEGER:: k + EXTERNAL:: dgetrs + + !$OMP SINGLE + ALLOCATE(tempF(1:mesh%numNodes)) + ALLOCATE(n_e(1:mesh%numNodes)) + ALLOCATE(phi_old(1:mesh%numNodes)) + DO n = 1, mesh%numNodes + tempF(n) = mesh%nodes(n)%obj%emData%phi + + END DO + n_e = BoltzmannElectron(tempF, mesh%numNodes) + !$OMP END SINGLE + + CALL assembleSourceVector(tempF, n_e) + + !$OMP SINGLE + DO k = 1, 5 + phi_old = tempF + CALL dgetrs('N', mesh%numNodes, 1, mesh%K, mesh%numNodes, & + mesh%IPIV, tempF, mesh%numNodes, info) + + PRINT*, k, "diff = ", MAXVAL(ABS(tempF - phi_old)) + n_e = BoltzmannElectron(tempF, mesh%numNodes) + CALL assembleSourceVector(tempF, n_e) + + END DO + !$OMP END SINGLE + + IF (info == 0) THEN + !Suscessful resolution of Poission equation + !$OMP DO + DO n = 1, mesh%numNodes + mesh%nodes(n)%obj%emData%phi = tempF(n) + + END DO + !$OMP END DO + + ELSE + !$OMP SINGLE + CALL criticalError('Poisson equation failed', 'solveElecFieldBoltzmann') + !$OMP END SINGLE + + END IF + + !$OMP SINGLE + DEALLOCATE(tempF) + !$OMP END SINGLE + + END SUBROUTINE solveElecFieldBoltzmann + END MODULE moduleEM diff --git a/src/modules/solver/moduleSolver.f90 b/src/modules/solver/moduleSolver.f90 index e539fed..c7a0785 100644 --- a/src/modules/solver/moduleSolver.f90 +++ b/src/modules/solver/moduleSolver.f90 @@ -138,6 +138,8 @@ MODULE moduleSolver CASE('Electrostatic','ConstantB') self%solveEM => solveElecField + CASE('ElectrostaticBoltzmann') + self%solveEM => solveElecFieldBoltzmann END SELECT END SUBROUTINE initEM From e4f7987f9078a44dec5484df643402c7f0e20280 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 19 May 2024 16:45:03 +0200 Subject: [PATCH 15/84] Trying to solve Still I don't understand this basic thing... --- .../solver/electromagnetic/moduleEM.f90 | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index c7c74ee..0f02bed 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -170,8 +170,18 @@ MODULE moduleEM REAL(8), INTENT(in):: phi(1:n) REAL(8):: n_e(1:n) REAL(8):: n_e0 = 1.0D16, phi_0 = -520.0D0, T_e = 11604.0 + INTEGER:: i - n_e = n_e0 / n_ref * EXP(-qe * (phi*Volt_ref - phi_0) / (kb * T_e)) + DO i =1, n + IF (phi(i)*Volt_ref >= phi_0) THEN + n_e(i) = n_e0 / n_ref * EXP(-qe * (phi(i)*Volt_ref - phi_0) / (kb * T_e)) + + ELSE + n_e(i) = 0.D0 + + END IF + + END DO RETURN @@ -185,7 +195,7 @@ MODULE moduleEM INTEGER, SAVE:: INFO INTEGER:: n REAL(8), ALLOCATABLE, SAVE:: tempF(:) - REAL(8), ALLOCATABLE:: n_e(:), phi_old(:) + REAL(8), ALLOCATABLE, SAVE:: n_e(:), phi_old(:) INTEGER:: k EXTERNAL:: dgetrs @@ -193,21 +203,19 @@ MODULE moduleEM ALLOCATE(tempF(1:mesh%numNodes)) ALLOCATE(n_e(1:mesh%numNodes)) ALLOCATE(phi_old(1:mesh%numNodes)) - DO n = 1, mesh%numNodes - tempF(n) = mesh%nodes(n)%obj%emData%phi - - END DO - n_e = BoltzmannElectron(tempF, mesh%numNodes) - !$OMP END SINGLE - + n_e = 0.D0 CALL assembleSourceVector(tempF, n_e) + !$OMP END SINGLE + !$OMP SINGLE - DO k = 1, 5 + DO k = 1, 10 phi_old = tempF CALL dgetrs('N', mesh%numNodes, 1, mesh%K, mesh%numNodes, & mesh%IPIV, tempF, mesh%numNodes, info) + PRINT *, MAXVAL(n_e), MINVAL(n_e) + PRINT *, MAXVAL(tempF), MINVAL(tempF) PRINT*, k, "diff = ", MAXVAL(ABS(tempF - phi_old)) n_e = BoltzmannElectron(tempF, mesh%numNodes) CALL assembleSourceVector(tempF, n_e) @@ -232,7 +240,7 @@ MODULE moduleEM END IF !$OMP SINGLE - DEALLOCATE(tempF) + DEALLOCATE(tempF, n_e, phi_old) !$OMP END SINGLE END SUBROUTINE solveElecFieldBoltzmann From c6470819e852aa619307ed802581ff76140eec9c Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 26 Jun 2024 15:11:01 +0200 Subject: [PATCH 16/84] Issue with calculating coordinates in quads The third coordinate (unused) was causing some errors when it was becomming too large. --- src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 10 +++++++--- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 12 +++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index 4341cb0..7bc94ce 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -318,6 +318,8 @@ MODULE moduleMesh2DCart INTEGER, INTENT(in):: nNodes REAL(8):: fPsi(1:nNodes) + fPsi = 0.D0 + fPsi = (/ (1.D0 - Xi(1)) * (1.D0 - Xi(2)), & (1.D0 + Xi(1)) * (1.D0 - Xi(2)), & (1.D0 + Xi(1)) * (1.D0 + Xi(2)), & @@ -508,15 +510,15 @@ MODULE moduleMesh2DCart conv = 1.D0 XiO = 0.D0 + f(3) = 0.D0 DO WHILE(conv > 1.D-4) dPsi = self%dPsi(XiO, 4) pDer = self%partialDer(4, dPsi) detJ = self%detJac(pDer) invJ = self%invJac(pDer) fPsi = self%fPsi(XiO, 4) - f = (/ DOT_PRODUCT(fPsi,self%x), & - DOT_PRODUCT(fPsi,self%y), & - 0.D0 /) - r + f(1:2) = (/ DOT_PRODUCT(fPsi,self%x), & + DOT_PRODUCT(fPsi,self%y) /) - r(1:2) Xi = XiO - MATMUL(invJ, f)/detJ conv = MAXVAL(DABS(Xi-XiO),1) XiO = Xi @@ -569,6 +571,7 @@ MODULE moduleMesh2DCart pDer = self%partialDer(4, dPsi) detJ = self%detJac(pDer) fPsi = self%fPsi(Xi, 4) + !Compute total volume of the cell self%volume = detJ*4.D0 !Compute volume per node @@ -762,6 +765,7 @@ MODULE moduleMesh2DCart pDer = self%partialDer(3, dPsi) detJ = self%detJac(pDer) invJ = self%invJac(pDer) + localK = localK + MATMUL(TRANSPOSE(MATMUL(invJ,dPsi)),MATMUL(invJ,dPsi))*wTria(l)/detJ END DO diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index d4baedd..dfa3035 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -326,6 +326,8 @@ MODULE moduleMesh2DCyl INTEGER, INTENT(in):: nNodes REAL(8):: fPsi(1:nNodes) + fPsi = 0.D0 + fPsi = (/ (1.D0 - Xi(1)) * (1.D0 - Xi(2)), & (1.D0 + Xi(1)) * (1.D0 - Xi(2)), & (1.D0 + Xi(1)) * (1.D0 + Xi(2)), & @@ -496,7 +498,7 @@ MODULE moduleMesh2DCyl END FUNCTION elemFQuad - !Checks if Xi is inside the element + !Check if Xi is inside the element PURE FUNCTION insideQuad(Xi) RESULT(ins) IMPLICIT NONE @@ -524,15 +526,15 @@ MODULE moduleMesh2DCyl conv = 1.D0 XiO = 0.D0 + f(3) = 0.D0 DO WHILE(conv > 1.D-4) dPsi = self%dPsi(XiO, 4) pDer = self%partialDer(4, dPsi) detJ = self%detJac(pDer) invJ = self%invJac(pDer) fPsi = self%fPsi(XiO, 4) - f = (/ DOT_PRODUCT(fPsi,self%z), & - DOT_PRODUCT(fPsi,self%r), & - 0.D0 /) - r + f(1:2) = (/ DOT_PRODUCT(fPsi,self%z), & + DOT_PRODUCT(fPsi,self%r) /) - r(1:2) Xi = XiO - MATMUL(invJ, f)/detJ conv = MAXVAL(DABS(Xi-XiO),1) XiO = Xi @@ -553,7 +555,7 @@ MODULE moduleMesh2DCyl XiArray = (/ -Xi(2), Xi(1), Xi(2), -Xi(1) /) nextInt = MAXLOC(XiArray,1) - !Selects the higher value of directions and searches in that direction + !Select the higher value of directions and searches in that direction NULLIFY(neighbourElement) SELECT CASE (nextInt) CASE (1) From 6389c8ba2d090db7cc4b29f4c775f4c18f8395d9 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 27 Jun 2024 12:08:08 +0200 Subject: [PATCH 17/84] Quick because food Cartesian fixed now --- src/modules/common/moduleRandom.f90 | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index cd553a8..3fbf5c8 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -73,10 +73,21 @@ MODULE moduleRandom REAL(8), INTENT(in):: cumWeight(1:) REAL(8), INTENT(in):: sumWeight REAL(8):: rnd0b - INTEGER:: rnd + INTEGER:: rnd, i rnd0b = random(0.D0, sumWeight) - rnd = MINLOC(DABS(rnd0b - cumWeight), 1) + i = 1 + DO + IF (rnd0b <= cumWeight(i)) THEN + rnd = i + EXIT + + ELSE + i = i +1 + + END IF + END DO + ! rnd = MINLOC(DABS(rnd0b - cumWeight), 1) END FUNCTION randomWeighted From 5386114d15114574807f88cac4808924537e3c10 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 29 Jun 2024 14:58:48 +0200 Subject: [PATCH 18/84] Cylindrical injection working better Seems things are a bit better. Still, more cases are needed and still not perfectly uniform... --- src/modules/common/moduleRandom.f90 | 4 +-- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 37 +++++++++++++--------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index 3fbf5c8..0237de1 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -75,10 +75,10 @@ MODULE moduleRandom REAL(8):: rnd0b INTEGER:: rnd, i - rnd0b = random(0.D0, sumWeight) + rnd0b = random() i = 1 DO - IF (rnd0b <= cumWeight(i)) THEN + IF (rnd0b <= cumWeight(i)/sumWeight) THEN rnd = i EXIT diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index dfa3035..dbe182f 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -163,7 +163,7 @@ MODULE moduleMesh2DCyl r2 = self%n2%getCoordinates() self%z = (/r1(1), r2(1)/) self%r = (/r1(2), r2(2)/) - self%weight = r2(2)**2 - r1(2)**2 + self%weight = DABS(self%r(2)**2 - self%r(1)**2) !Normal vector self%normal = (/ -(self%r(2)-self%r(1)), & self%z(2)-self%z(1) , & @@ -223,21 +223,12 @@ MODULE moduleMesh2DCyl CLASS(meshEdge2DCyl), INTENT(in):: self REAL(8):: rnd REAL(8):: r(1:3) - REAL(8):: dr, dz + REAL(8):: p1(1:2), p2(1:2) rnd = random() - dr = self%r(2) - self%r(1) - dz = self%z(2) - self%z(1) - IF (dr /= 0.D0) THEN - r(2) = dr * DSQRT(rnd) + self%r(1) - r(1) = dz * (r(2) - self%r(1))/dr + self%z(1) - - ELSE - r(2) = self%r(1) - r(1) = dz * rnd + self%z(1) - - END IF - + p1 = (/self%z(1), self%r(1) /) + p2 = (/self%z(2), self%r(2) /) + r(1:2) = (1.D0 - rnd)*p1 + rnd*p2 r(3) = 0.D0 END FUNCTION randPosEdge @@ -572,7 +563,7 @@ MODULE moduleMesh2DCyl !Compute element volume PURE SUBROUTINE volumeQuad(self) - USE moduleConstParam, ONLY: PI8 + USE moduleConstParam, ONLY: PI, PI8 IMPLICIT NONE CLASS(meshCell2DCylQuad), INTENT(inout):: self @@ -596,15 +587,31 @@ MODULE moduleMesh2DCyl Xi = (/-5.D-1, -5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 + IF (self%r(1) == 0.D0) THEN + self%n1%v = self%n1%v * PI / 2.D0 + + END IF Xi = (/ 5.D-1, -5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 + IF (self%r(2) == 0.D0) THEN + self%n2%v = self%n2%v * PI / 2.D0 + + END IF Xi = (/ 5.D-1, 5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 + IF (self%r(3) == 0.D0) THEN + self%n3%v = self%n3%v * PI / 2.D0 + + END IF Xi = (/-5.D-1, 5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 + IF (self%r(4) == 0.D0) THEN + self%n4%v = self%n4%v * PI / 2.D0 + + END IF END SUBROUTINE volumeQuad From 4cadfe536781bd7b901e7adaf8a361be7ebc9c13 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 29 Jun 2024 22:22:10 +0200 Subject: [PATCH 19/84] Seems are a bit better There is still less density in the axis. I don't find a reason why. There must be a modification to the weight... --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 24 ++++------------------ src/modules/moduleInject.f90 | 5 ++--- 2 files changed, 6 insertions(+), 23 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index dbe182f..4991b7e 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -586,32 +586,16 @@ MODULE moduleMesh2DCyl !Computes volume per node Xi = (/-5.D-1, -5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) - self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 - IF (self%r(1) == 0.D0) THEN - self%n1%v = self%n1%v * PI / 2.D0 - - END IF + self%n1%v = self%n1%v + fPsi(1)*self%volume Xi = (/ 5.D-1, -5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) - self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 - IF (self%r(2) == 0.D0) THEN - self%n2%v = self%n2%v * PI / 2.D0 - - END IF + self%n2%v = self%n2%v + fPsi(2)*self%volume Xi = (/ 5.D-1, 5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) - self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 - IF (self%r(3) == 0.D0) THEN - self%n3%v = self%n3%v * PI / 2.D0 - - END IF + self%n3%v = self%n3%v + fPsi(3)*self%volume Xi = (/-5.D-1, 5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) - self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 - IF (self%r(4) == 0.D0) THEN - self%n4%v = self%n4%v * PI / 2.D0 - - END IF + self%n4%v = self%n4%v + fPsi(4)*self%volume END SUBROUTINE volumeQuad diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index b37e021..fb01f75 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -306,8 +306,6 @@ MODULE moduleInject nMin = nMin + 1 nMax = nMin + self%nParticles - 1 - !Assign weight to particle. - partInj(nMin:nMax)%weight = self%species%weight !Particle is considered to be outside the domain partInj(nMin:nMax)%n_in = .FALSE. !$OMP END SINGLE @@ -315,10 +313,11 @@ MODULE moduleInject !$OMP DO DO n = nMin, nMax randomX = randomWeighted(self%cumWeight, self%sumWeight) - randomEdge => mesh%edges(self%edges(randomX))%obj !Random position in edge partInj(n)%r = randomEdge%randPos() + !Assign weight to particle. + partInj(n)%weight = self%species%weight !Volume associated to the edge: IF (ASSOCIATED(randomEdge%e1)) THEN partInj(n)%cell = randomEdge%e1%n From cd7bf66bd84213b6cd385dbe84fb7edd6cd0a5eb Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 30 Jun 2024 10:36:36 +0200 Subject: [PATCH 20/84] A workaround The random position for edges in the axis is corrected so that there is a more uniform charge density in the axis. Still, things are not perfect and this is something to really look into in the future. --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 4991b7e..9278a27 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -226,6 +226,12 @@ MODULE moduleMesh2DCyl REAL(8):: p1(1:2), p2(1:2) rnd = random() + IF (self%r(1) == 0.D0 .OR. & + self%r(2) == 0.D0) THEN + rnd = rnd**(1.D0/3.D0) + + END IF + p1 = (/self%z(1), self%r(1) /) p2 = (/self%z(2), self%r(2) /) r(1:2) = (1.D0 - rnd)*p1 + rnd*p2 From 59a322a4c7df17c6de8d507aef35588eae28935d Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 30 Jun 2024 10:46:05 +0200 Subject: [PATCH 21/84] Clean up Fixing calculation of node volumes. --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 9278a27..df01782 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -580,6 +580,7 @@ MODULE moduleMesh2DCyl REAL(8):: dPsi(1:3, 1:4), pDer(1:3, 1:3) self%volume = 0.D0 + !2D 1 point Gauss Quad Integral Xi = 0.D0 dPsi = self%dPsi(Xi, 4) @@ -590,17 +591,9 @@ MODULE moduleMesh2DCyl !Computes total volume of the cell self%volume = r*detJ*PI8 !4*2*pi !Computes volume per node - Xi = (/-5.D-1, -5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) self%n1%v = self%n1%v + fPsi(1)*self%volume - Xi = (/ 5.D-1, -5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) self%n2%v = self%n2%v + fPsi(2)*self%volume - Xi = (/ 5.D-1, 5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) self%n3%v = self%n3%v + fPsi(3)*self%volume - Xi = (/-5.D-1, 5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) self%n4%v = self%n4%v + fPsi(4)*self%volume END SUBROUTINE volumeQuad From e277fe6ddb8526ec2c1ae8fedccd4a777c178c0d Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Sun, 30 Jun 2024 08:48:51 +0000 Subject: [PATCH 22/84] PI is no needed here --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index df01782..7bae6b3 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -569,7 +569,7 @@ MODULE moduleMesh2DCyl !Compute element volume PURE SUBROUTINE volumeQuad(self) - USE moduleConstParam, ONLY: PI, PI8 + USE moduleConstParam, ONLY: PI8 IMPLICIT NONE CLASS(meshCell2DCylQuad), INTENT(inout):: self From 6b78ae373894f0c72d746f03f4637d6c2ef7d006 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 3 Jul 2024 22:04:28 +0200 Subject: [PATCH 23/84] Added an adhoc factor to correct injection I think that the volume of the nodes is not being well calculated, maybe we need a better volume calculation for this, using multiple points (as it is done for K) --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 29 ++++++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 7bae6b3..90773e5 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -226,11 +226,11 @@ MODULE moduleMesh2DCyl REAL(8):: p1(1:2), p2(1:2) rnd = random() - IF (self%r(1) == 0.D0 .OR. & - self%r(2) == 0.D0) THEN - rnd = rnd**(1.D0/3.D0) - - END IF + ! IF (self%r(1) == 0.D0 .OR. & + ! self%r(2) == 0.D0) THEN + ! rnd = rnd**(1.D0/3.D0) + ! + ! END IF p1 = (/self%z(1), self%r(1) /) p2 = (/self%z(2), self%r(2) /) @@ -578,6 +578,9 @@ MODULE moduleMesh2DCyl REAL(8):: detJ REAL(8):: fPsi(1:4) REAL(8):: dPsi(1:3, 1:4), pDer(1:3, 1:3) + REAL(8):: nodeR(1:3) + REAL(8), PARAMETER:: correction = 0.81D0 !TODO: No idea why this is needed, this needs more attention. Probably a better + ! calculation of the volume is needed. self%volume = 0.D0 @@ -592,9 +595,25 @@ MODULE moduleMesh2DCyl self%volume = r*detJ*PI8 !4*2*pi !Computes volume per node self%n1%v = self%n1%v + fPsi(1)*self%volume + nodeR = self%n1%getCoordinates() + if (nodeR(2) == 0.D0) then + self%n1%v = self%n1%v * correction + end if self%n2%v = self%n2%v + fPsi(2)*self%volume + nodeR = self%n2%getCoordinates() + if (nodeR(2) == 0.D0) then + self%n2%v = self%n2%v * correction + end if self%n3%v = self%n3%v + fPsi(3)*self%volume + nodeR = self%n3%getCoordinates() + if (nodeR(2) == 0.D0) then + self%n3%v = self%n3%v * correction + end if self%n4%v = self%n4%v + fPsi(4)*self%volume + nodeR = self%n4%getCoordinates() + if (nodeR(2) == 0.D0) then + self%n4%v = self%n4%v * correction + end if END SUBROUTINE volumeQuad From b972120ed51689b9ef171f3fd2af8966d68ec81b Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 4 Jul 2024 10:56:13 +0200 Subject: [PATCH 24/84] Switching to variable particle weight I have to change the injection of particles. Each edge will receive a similar number of particles and their weight will change to have a constant density based on the geometry. Still testing. --- src/modules/common/moduleRandom.f90 | 4 +-- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 36 ++++++++-------------- src/modules/moduleInject.f90 | 5 +-- 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index 0237de1..dacbf9c 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -40,10 +40,10 @@ MODULE moduleRandom INTEGER:: rnd REAL(8):: rnd01 - rnd = 0.D0 + rnd = 0 CALL RANDOM_NUMBER(rnd01) - rnd = INT(REAL(b - a) * rnd01) + 1 + rnd = NINT(REAL(b - a) * rnd01) + a END FUNCTION randomIntAB diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 90773e5..2d2d6c6 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -235,6 +235,7 @@ MODULE moduleMesh2DCyl p1 = (/self%z(1), self%r(1) /) p2 = (/self%z(2), self%r(2) /) r(1:2) = (1.D0 - rnd)*p1 + rnd*p2 + r(2) = (self%r(2) + self%r(1)) * 0.5D0 r(3) = 0.D0 END FUNCTION randPosEdge @@ -578,9 +579,6 @@ MODULE moduleMesh2DCyl REAL(8):: detJ REAL(8):: fPsi(1:4) REAL(8):: dPsi(1:3, 1:4), pDer(1:3, 1:3) - REAL(8):: nodeR(1:3) - REAL(8), PARAMETER:: correction = 0.81D0 !TODO: No idea why this is needed, this needs more attention. Probably a better - ! calculation of the volume is needed. self%volume = 0.D0 @@ -594,26 +592,18 @@ MODULE moduleMesh2DCyl !Computes total volume of the cell self%volume = r*detJ*PI8 !4*2*pi !Computes volume per node - self%n1%v = self%n1%v + fPsi(1)*self%volume - nodeR = self%n1%getCoordinates() - if (nodeR(2) == 0.D0) then - self%n1%v = self%n1%v * correction - end if - self%n2%v = self%n2%v + fPsi(2)*self%volume - nodeR = self%n2%getCoordinates() - if (nodeR(2) == 0.D0) then - self%n2%v = self%n2%v * correction - end if - self%n3%v = self%n3%v + fPsi(3)*self%volume - nodeR = self%n3%getCoordinates() - if (nodeR(2) == 0.D0) then - self%n3%v = self%n3%v * correction - end if - self%n4%v = self%n4%v + fPsi(4)*self%volume - nodeR = self%n4%getCoordinates() - if (nodeR(2) == 0.D0) then - self%n4%v = self%n4%v * correction - end if + Xi = (/-5.D-1, -5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 + Xi = (/ 5.D-1, -5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 + Xi = (/ 5.D-1, 5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 + Xi = (/-5.D-1, 5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 END SUBROUTINE volumeQuad diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index fb01f75..57e3131 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -283,6 +283,7 @@ MODULE moduleInject USE moduleMesh USE moduleRandom USE moduleErrors + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(injectGeneric), INTENT(in):: self @@ -312,12 +313,12 @@ MODULE moduleInject !$OMP DO DO n = nMin, nMax - randomX = randomWeighted(self%cumWeight, self%sumWeight) + randomX = random(1, self%nEdges) randomEdge => mesh%edges(self%edges(randomX))%obj !Random position in edge partInj(n)%r = randomEdge%randPos() !Assign weight to particle. - partInj(n)%weight = self%species%weight + partInj(n)%weight = self%species%weight * sqrt(partInj(n)%r(2) / (0.1D0*L_ref)) !Volume associated to the edge: IF (ASSOCIATED(randomEdge%e1)) THEN partInj(n)%cell = randomEdge%e1%n From 6b5ac16e4b0f0c6797c9ea47b1ec00f4c82c5eb4 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 6 Jul 2024 10:12:03 +0200 Subject: [PATCH 25/84] Still working on it No uniform density yet... --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 1 - src/modules/moduleInject.f90 | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 2d2d6c6..544c8e1 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -235,7 +235,6 @@ MODULE moduleMesh2DCyl p1 = (/self%z(1), self%r(1) /) p2 = (/self%z(2), self%r(2) /) r(1:2) = (1.D0 - rnd)*p1 + rnd*p2 - r(2) = (self%r(2) + self%r(1)) * 0.5D0 r(3) = 0.D0 END FUNCTION randPosEdge diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 57e3131..2dba3de 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -318,7 +318,7 @@ MODULE moduleInject !Random position in edge partInj(n)%r = randomEdge%randPos() !Assign weight to particle. - partInj(n)%weight = self%species%weight * sqrt(partInj(n)%r(2) / (0.1D0*L_ref)) + partInj(n)%weight = self%species%weight * sqrt(partInj(n)%r(2) / (0.1D0/L_ref)) !Volume associated to the edge: IF (ASSOCIATED(randomEdge%e1)) THEN partInj(n)%cell = randomEdge%e1%n From 626e970d8257f56641278e1b05999a145ff85d53 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 6 Jul 2024 19:14:44 +0200 Subject: [PATCH 26/84] Some progress Fixed an issue with random integer numbers. Cylindrical coordinates are not perfect yet: - Box (cylinder) with initial constant density loses particles at r = 0 - Injection density still low in r = 0 --- src/modules/common/moduleRandom.f90 | 2 +- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 5 ----- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 14 ++++++++++++++ src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 | 14 ++++++++++++++ src/modules/moduleInject.f90 | 4 ++-- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index dacbf9c..ae5c548 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -43,7 +43,7 @@ MODULE moduleRandom rnd = 0 CALL RANDOM_NUMBER(rnd01) - rnd = NINT(REAL(b - a) * rnd01) + a + rnd = a + FLOOR((b+1-a)*rnd01) END FUNCTION randomIntAB diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 544c8e1..426846d 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -226,11 +226,6 @@ MODULE moduleMesh2DCyl REAL(8):: p1(1:2), p2(1:2) rnd = random() - ! IF (self%r(1) == 0.D0 .OR. & - ! self%r(2) == 0.D0) THEN - ! rnd = rnd**(1.D0/3.D0) - ! - ! END IF p1 = (/self%z(1), self%r(1) /) p2 = (/self%z(2), self%r(2) /) diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 0df1289..84b8535 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -296,6 +296,20 @@ MODULE moduleMeshInputGmsh2 CLOSE(10) + ! Adjust node volume at axis + SELECT CASE(self%geometry) + CASE("Cyl") + DO n = 1, numNodes + r = self%nodes(n)%obj%getCoordinates() + IF (r(2) == 0.D0) THEN + self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 + + END IF + + END DO + + END SELECT + !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index 763517f..eb6af79 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -495,6 +495,20 @@ MODULE moduleMeshInputVTU END SELECT END DO + + ! Adjust node volume at axis + SELECT CASE(self%geometry) + CASE("Cyl") + DO n = 1, numNodes + r = self%nodes(n)%obj%getCoordinates() + IF (r(2) == 0.D0) THEN + self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 + + END IF + + END DO + + END SELECT !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 2dba3de..69a3dd6 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -313,12 +313,12 @@ MODULE moduleInject !$OMP DO DO n = nMin, nMax - randomX = random(1, self%nEdges) + randomX = randomWeighted(self%cumWeight, self%sumWeight) randomEdge => mesh%edges(self%edges(randomX))%obj !Random position in edge partInj(n)%r = randomEdge%randPos() !Assign weight to particle. - partInj(n)%weight = self%species%weight * sqrt(partInj(n)%r(2) / (0.1D0/L_ref)) + partInj(n)%weight = self%species%weight !Volume associated to the edge: IF (ASSOCIATED(randomEdge%e1)) THEN partInj(n)%cell = randomEdge%e1%n From 5bc064d0183097c83f57b2299c99a3449baebc6d Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 7 Jul 2024 11:53:56 +0200 Subject: [PATCH 27/84] Some parallel issues Forgot to check Gmsh2 format with new changes. Cartesian coordinates were not calculating things properly. --- src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 3 ++- src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index 7bc94ce..4bf1f32 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -556,6 +556,7 @@ MODULE moduleMesh2DCart !Compute element volume PURE SUBROUTINE volumeQuad(self) + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshCell2DCartQuad), INTENT(inout):: self @@ -573,7 +574,7 @@ MODULE moduleMesh2DCart fPsi = self%fPsi(Xi, 4) !Compute total volume of the cell - self%volume = detJ*4.D0 + self%volume = detJ*4.D0/L_ref !Compute volume per node self%n1%v = self%n1%v + fPsi(1)*self%volume self%n2%v = self%n2%v + fPsi(2)*self%volume diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 84b8535..2c02358 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -299,7 +299,7 @@ MODULE moduleMeshInputGmsh2 ! Adjust node volume at axis SELECT CASE(self%geometry) CASE("Cyl") - DO n = 1, numNodes + DO n = 1, self%numNodes r = self%nodes(n)%obj%getCoordinates() IF (r(2) == 0.D0) THEN self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 From 1f2ec8d82f3ee4fa70304b707fd7382e75ba4139 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 7 Jul 2024 14:37:34 +0200 Subject: [PATCH 28/84] New option for initial distribution of species The number of particles per cell can be defined when giving an initial distribution fora species. If not, the typical method of using the species weight is used. This is particularly useful for cylindrical coordinates in which very little particles might end up in the axis if a constant weight is used. --- doc/user-manual/bibliography.bib.sav | 77 +++++++++++++++++++++++++++ doc/user-manual/fpakc_UserManual.pdf | Bin 185817 -> 186028 bytes doc/user-manual/fpakc_UserManual.tex | 14 +++-- src/modules/init/moduleInput.f90 | 14 +++-- 4 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 doc/user-manual/bibliography.bib.sav diff --git a/doc/user-manual/bibliography.bib.sav b/doc/user-manual/bibliography.bib.sav new file mode 100644 index 0000000..b8b6483 --- /dev/null +++ b/doc/user-manual/bibliography.bib.sav @@ -0,0 +1,77 @@ +% Encoding: UTF-8 + +@InProceedings{boris1970relativistic, + author = {Boris, Jay P}, + booktitle = {Proc. Fourth Conf. Num. Sim. Plasmas}, + title = {Relativistic plasma simulation-optimization of a hybrid code}, + year = {1970}, + pages = {3--67}, +} + +@article{higginson2020corrected, + title={A corrected method for Coulomb scattering in arbitrarily weighted particle-in-cell plasma simulations}, + author={Higginson, Drew Pitney and Holod, Ihor and Link, Anthony}, + journal={Journal of Computational Physics}, + volume={413}, + pages={109450}, + year={2020}, + publisher={Elsevier} +} + +@Misc{gfortranURL, + author = {GNU Project}, + title = {gfortran - the GNU Fortran compiler}, + howpublished = {\url{https://gcc.gnu.org/wiki/GFortran}}, +} + +@Misc{ifortURL, + author = {Intel\textsuperscript{\textregistered}}, + title = {Intel\textsuperscript{\textregistered} Fortran Compiler}, + howpublished = {\url{https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/fortran-compiler.html}}, +} + +@Misc{openblasURL, + title = {OpenBLAS, an optimized BLAS library}, + howpublished = {\url{https://www.openblas.net/}}, +} + +@Misc{jsonfortranURL, + title = {JSON-Fortran}, + howpublished = {\url{https://github.com/jacobwilliams/json-fortran}}, +} + +@Misc{jsonURL, + title = {JSON, JavaScript Object Notation}, + howpublished = {\url{https://www.json.org/json-en.html}}, +} + +@Misc{gmshURL, + author = {Christophe Geuzaine and Jean-François Remacle}, + title = {Gmsh}, + howpublished = {\url{https://gmsh.info/}}, +} + +@Article{welford1962note, + author = {Welford, BP}, + journal = {Technometrics}, + title = {Note on a method for calculating corrected sums of squares and products}, + year = {1962}, + number = {3}, + pages = {419--420}, + volume = {4}, + publisher = {Taylor \& Francis}, +} + +@Article{sherlock2008monte, + author = {Sherlock, Mark}, + journal = {Journal of Computational Physics}, + title = {A Monte-Carlo method for Coulomb collisions in hybrid plasma models}, + year = {2008}, + number = {4}, + pages = {2286--2292}, + volume = {227}, + groups = {Particle-in-cell}, + publisher = {Elsevier}, +} + +@Comment{jabref-meta: databaseType:bibtex;} diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index 2453bb7a03988944220d03dbe093216dd6203ec1..37d80141e4c7e64c2cb808e7e072b95019a502ae 100644 GIT binary patch delta 52973 zcmZU3Q;aT5v}N12aoVE~-F zpDRGmx&J#~3csjHZRyWRZ*{_Qm!X{G+fh>_6X2C&?52MIXJ>0Hkv1cj(0+`AgQ4r6 zediibzU93e`$v8+V8 zl9!2GgcfaV62HiU9HLOsP(_!J)9kQPIY_EOb9+L#AyO_XHA(a=9~R=8ShE{Pkg?K~ z4bY^tu9MuIm7;}aP{7ICqb!P8DuY&J+>Xt>nwBh6|p2NG1$J z-Wk<10Q`3%&*%ixX(zM)%{tmiXeT8CIy8Yds1uX^?Wmcf)R{FCYdRD7AIPEYo~ejX zKj@ab|L4p(9!Frk?(jJCd_t=_T~lbRAOM_UAW@`sLz3VF?%sPEO83RMg(HU=F){%b zirHXEVKq9QIK?vIF%@>RW*v;duXFNvze^Qb;?M?x;W%YV38jzdoD63yR`*!@%Q(!J>XTa0$w#cgo0fH~tV+~&-7DUX&Evyc^40UtGzLUb!s<>lRn z4o%U)c_{dj$~E{@$E|8yR4}Mk1RyR@am+fexNY0nh(aARJq~HOJN!%VJlXcCHS3d7 zkXn}2ta|4p4;=<{&cqS*Vnjg}`^wF_$rJOSOBz0lN6Cz74pr{4Qiu|(oFhBJB0N9@ z&4T}|M@mjZ9yc)wZFC;a-Fpuohg%l1`XXjaWF?1Qh|pQolWk*#$0|h10hkBCLi<%o z#-AsJAZ>!|MWx;a2T9wb$+3?{p0}9yl8{#bEUo-Mqg5~}pc7bbmM6AeVv8fYJxy5-&f#vk7is8DidTszC3;N(h(tei(|J!J;N~`5I?_9Np39>`PS;(T>gS67gQES0n%=?j5q+C(k$_{;UFDjv zUSG%QI58C0=jULPTE^l=t5eA~ebosPT-BCfH#UUUBtNX}5J8V=ZP}9eR}Fnsf5dUZy#YXvOyD$Fa){ubm-1{J5q)VAe)f)c*lBROJ}b)R4#*q zc!;1OkY6zlk5lIupIc&RhpFNChL*6$qe_0W0~iWT4?0ks80rg3VmeI53RHD$M?^rh zxWJbc(QT3&igpU`QjNQ_C4XU^e3-@1|KadHbfI4P`|<9`fqc1^P>e+dY3WqGQ5Xbc zWTn6Hd>-Si`v!xWlk%7_+b$4HxfA8(Xi>%Y+oojV2%29}qKLHafJ8Sb2gy#=H zD;aOh>E#he!1y2Q;U4QH{}Z{gDi(s$pU~E4qIckRvVcN}XfnA3<2S@N3!3KHnv1H; z4bT?+C?p@B&g#qY!zqSln16arp$5!f1|PT2UD0=^WPM*-BOaK%-vf*B>G^tkz8@6y z8>I%_$l`kXJ-vJ9;578L&Cz|`-X8aW^w`atrvu(4>*ff@>+bYyv##c}0Ydx7clR-j z!=6O%$Lv~NFbiQjecO$L(AT?u%&puM-$rpe|F+|3cKxmy7hf6cvZIsNEqsHLC*gx) z2!eUp-_w;oA;-z^bZ^hsa&UoY3Tau?kjWo>`J@R78A;^^*1ux8+0 z3urfhS7p6AI6K~7n`GPEGG7D$w&2rzF4m6*4aVa8$+w4}v-bK!d~Zq2ykFgv7DgvF z*``7w#YwRAR>hy`rL~}c5tmBo>}-DRX;@>HGiSm#2Mc>KHW%eTW_n*>(?qD-B(XT& zS9vnvPE#Gdm`%~N6KFl<=66p5wM2M+2yQPzyJq5b-qa*D8JK|<2ORDIQg1RtP>!tH zw5tv`7oh(RnQ6+~!__;2+3~~Gol@;G-m)8@Ao6B=*obtFZYVg#`y}TRIK`>HPV64l z&p>=V{>k%4C4e@AYbNhZdk0mpw8dTnW z1961*PbkQo3VAvjr|Px?RB_cqSSoAPRF}zQOJ3;R@kqZfwo=*qQB`FMg)B`L=KpOL zn(;8f;P_kMjRJWnmEJg@-$YQo3D)f&!nmR=!>ChjhZS1PAlUrySr;g4$GYlHjv#@r zNz=;SkIwhjddsNhNaA$($Z3!=fGWX0U|2_hLxby8l;wQo(Zgo|9@3Rk26n&kYC}`l zCv8!B3t>>sOR|1@CrK}wRbVw!XX@=2h#0NV*`QXWyMx}rq?$T$;nzVlm3FZiAnV4c zKQ_AF_}9TU``y$A_>{(|75fIY9^jrmji1k0b=T4&Pt;VzdSmh(?eC?N{_(Iu&P^9p zvP3T!BKad6(D8NyC?a$Z`ctOr_b4Xt($A3=RWgmFz&Ynd;{wMQK=ViIo6N|jv|>0pq)3-AD0UMasiS>-OtdQ%H;5CO$K<@D>fwPuDgq3Qh$0AHfh8VBRz}t^6BWLHW>Ny}Rv1tlwyVK!`ay)DFts!% zyDw;!W<26ldJYkVJp0;TL|B#(3nn14n6poa^~pB{$v(j*>zH|$Pr@!q%zXrT|6B-b zOMEnTTKLZbKLJ{LQJdC1@b%5q8v zG*WHXm4n59i(@7`Ryjq}fVTtpwT^Ll7PyvkL4K{!>Jz_KRPj~dq*PD-it3PTRx`B!6%aLP-vB^DSK*O_=^oFrZf^h&~DZh=+ zNZ2knu*T$;+0KX-7EG?ciNaQ(EW~+3hlw5Nr)(p%4L$`@9KfvzMuh4p%rlX9qk)f(8KtL zMB(1HD<~39nOsFC1A1Ec@^)oBzn5d!>&Ln+8%?c0=(Y}=C3G;5=;7eN&BPsn5XXWN?%|Bd4O3lSabCJ5vE9+xtAHwq+$4S7HmtJk z02Er$&*1R7@tb$s6m+OqLmaRuXdT3#yxqY5DHHRQF~cQg_bX6DmyGPSAnU{|}c0jpCWkyG%K`WbX zg2+Fl=ogJBl4?6-eUz-W2dxj`n)|r4SSJEaCG0dW-c&^eTZ~&$b!_F!jg5if2p-(a z6#k25E~?doWkun8tm!I_;wOWgFT5)%FvuY`(lvS$NH|08b(C#LTj0Z6rP`i`c0ke# zTe5)+gw#u%WeVWR3^HQvra(X-iW$1smdPca4Qk9tFyM-y45WcfT!Xm7!Z4YJkx2<2 z6~s*fhBG8mPxWM_D6KIi#TiPK6O9M6x#lSgZ?D@m9NoCI30x(GYnMVYuBYUuy)zI) zfz7qXsGc8Az{jDYWtJJfMgoudsLXBMP}&q^CgOJY)&+b9%4GKJDBa<=@M!_j4+8;g z_`U`cj@1@cOPEx<{5T$nSzgS9vqWU8yg8lfiH_O>gCf%Tzb+-i0;cm+zQS4!@-j_U z9E5O~EogB${~4 z^4aOgG5`|zW9`pU&^wO&H@CF&aXm5aFtjmLHv%2-GcKE}o^9+MPy}&YaeI$lA*cvy z4_jZ@0pV>r7$FudsC;;+s4WxfpaUH|Ma1?6}mrcRT0$GYHnG^rnfQs;|1Zz3GPY>t(GW(h<>Q{3BC?{pin}iSp zWjXi^awk&=NVKYDA&Ivg!eE3BsvFhK9{@5?K^yU=_r>0d!X+%+6;2dbbBUgTcp4A) z8KlVU(*c+iq8RVr?WDwbRAF2^>H3=;qdC_t9~ap7m?ES0XUMGb0a%_P29hC(UBL*y z$hdcwNtD%!@Jv#q$UM- zGO;&BlTCsk`{S*7C_8Q}+p?c(P-@+w8G;s7gh~0So;&Pgj9#P&Nwil(G;)*>S#TZ) zTt(DjEkf4{`+Yl&LX9qRQ0H3eHgDc~J49s2@1j(RuWkjxdiqTNooQ~-7|YVxe8#IH5)DVY%v-9o?&k!UI^@pSjQq@czk zeSHoS8EVQvvie%f9O&r)l|*2n%b|-Vqk+#komovJu0fv|0|SQwXozbVnVoheoXsT4 z@I_OR>0&Pd<0H=G5XjzJ_f}QLp8!>N1;ayO#_50=WQCOA6I7Lx)RU+V8$b^2$9x0F zAQIhhY4CVR;6GC8BpC9V8Le|o;f$3schU+NaxyF>bmc#SuKTy>LL*;%Nerw5ZtKbA zEN&KhDmsc1UDC4F;E8mVyOz4bZ7L1%hb%DciRW3=iFeCpZK%ZRDwNi462vDjZrd2kW5@KW zaL<{pVo7n%WDePw0Jv-WYoS*1A?=N*BaQWPk%#R11Z}}?UUCNNX2EF`tEaa-{JSJ; zJYx=b3N(6X0gMRk9cBbu7hPIP+fJS$(9ogljwccK!joO|#NwyqM8LK~K0&h~gcxQ# zW61RZmGudWJagR1!{&ylj%7+AV=>hlRkLl^BIs4Qqa51@qs*IBUMW>`dSVKCcPUll zReH!wYrxBjE$fUtH!KacXSy+VGg}B7o`}yN8Hy!&jY?<0ue1qWZ|sf9h_Zv{p!O&?re29Xm1Ej=3+B(Tmm)HrF1bfpf)QS=LQVO@ zf`~ivN@h&gfM6%YS~dYG8L_;T09G?MTn9!{R6+NF7a}fBF=NsfGVHU{{kOfZ2!999 z?r9K;C(^94F}2|sVD{}{bWl!~-Ags&gjSh|M9G{Mlt{E!!wSG#B&ETRsmtDkq6ChS z?H}Kk;)@7&u*3CMH3CXO1BIOXN^=b#>l;5~X=LRjfKFvc{(YTrlQrM?m9&c_oi=m@ zK^7fXn`f`gfYW!z(^h0>l@c5Z!gFHI=pPG*E>JZly9PrzO{$D$mnt0ERgkLY*(c~y z{?U;|veF=!HjDRRmRw_avq}L$9SH*rWjaPZKm@I_xC0tiRd)*cq4F zD~zxS1$u&%X?ZxRLYmv9L;d-QhwM-dM5C3$U?`NVW1L8j*pid7Uj$4hLxX8?NYd_2 z9a~t7A(|4jO7YGj3R3LWmfFtQ=FT@u{_FkS09|V{a~?2Y5A?(D0hLPnubie#LtQ-; zBK}#U;o|Zyu2eqL7_TiZnjpws&31Omv%xI44+K^c{VNkMG!kqe@(?T3-qGS`i@Iendc9-0>HbR2h9h zg^&oD<0*Grn}fXOT!$)E0XjH=I;ekegi=ov&SJ;w%x!10-NdwI=pmfRLfZWuP$PpX zj_Xu}=pd62ieY$OkxZfTSY_1X#*)Z!$phw$%=+vgF_8 zRirnzhgiI6Br38w(hS3=zVoRCK(7EHjQ#!t{X7>*^@f*kC;^k2boANz+ih|pVFtzm zh>a$yvo2c)5Yb9*CHmehH>k}!4U=809l3;8_TH) zp|nq@lYnju-;p&mT;C}e3l$D$;y}GUvx*L=e6eiJ zh3x5`De2ycK@7ODF@>ZMmB3EDQI$#u;+!1mE~9afEN9c(`|I0$YaE^~&16%A1JVst zdiF3CiSit^tUNr(aDu)AKykL;*9hqB3to@{LK&x5O~haIls!th@uXy`NPCP~p=PNm zLl3-nEg=!_(q)Kz4QTK+Q`5+q)fyvj?b36xt&vN&;&I0?%S7NJKIX;@E6Gs~7UgET z#E%v2oj3gFiPBDB@%%aa(s6oGqYi$XDH2545Sa5Un?=%!)ov04u=PAMIoym_jI|=D z>v^|-u*SGobF=xx=~alcpEsqk=EqJzV}X}nB+X*yt|Qj4%z~t`u9{z_SGNq}p)7r1 zM5jO@e!JH#bgT%Ew7$c`muP`AfCjh-IV!~gKKfdZem%0AQ5Q6sL| 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 delta 52900 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


u( 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 Wyj(2qlLL?n%u305c;wXN$^Q>tDPl7K diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index daf42c3..fd48ed2 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -708,11 +708,15 @@ make \begin{itemize} \item \textbf{species}: Character. Name of species as defined in the object \textbf{species}. - \item \textbf{file}: Character. - Output file from previous run used as an initial state for the species. - The file format must be the same as in \textbf{geometry.meshType} - Initial particles are assumed to have a Maxwellian distribution. - File must be located at \textbf{output.path}. + \item \textbf{file}: Character. + Output file from previous run used as an initial state for the species. + The file format must be the same as in \textbf{geometry.meshType} + Initial particles are assumed to have a Maxwellian distribution. + File must be located at \textbf{output.path}. + \item \textbf{particlesPerCell}: Integer. + Optional. + Initial number of particles per cell. + If not, the number of particles per cell will be assigned based on the species weight and the cell volume. \end{itemize} \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 7a1b206..e30bf97 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -324,7 +324,8 @@ MODULE moduleInput REAL(8):: densityCen !Mean velocity and temperature at particle position REAL(8):: velocityXi(1:3), temperatureXi - INTEGER:: nNewPart = 0.D0 + INTEGER:: nNewPart = 0 + REAL(8):: weight = 0.D0 CLASS(meshCell), POINTER:: cell TYPE(particle), POINTER:: partNew REAL(8):: vTh @@ -343,6 +344,9 @@ MODULE moduleInput !Reads node values at the nodes filename = path // spFile CALL mesh%readInitial(filename, density, velocity, temperature) + !Check if initial number of particles is given + CALL config%get(object // '.particlesPerCell', nNewPart, found) + !For each volume in the node, create corresponding particles DO e = 1, mesh%numCells !Scale variables @@ -355,7 +359,11 @@ MODULE moduleInput densityCen = mesh%cells(e)%obj%gatherF((/ 0.D0, 0.D0, 0.D0 /), nNodes, sourceScalar) !Calculate number of particles - nNewPart = INT(densityCen * (mesh%cells(e)%obj%volume*Vol_ref) / species(sp)%obj%weight) + IF (.NOT. found) THEN + nNewPart = FLOOR(densityCen * (mesh%cells(e)%obj%volume*Vol_ref) / species(sp)%obj%weight) + + END IF + weight = densityCen * (mesh%cells(e)%obj%volume*Vol_ref) / REAL(nNewPart) !Allocate new particles DO p = 1, nNewPart @@ -392,7 +400,7 @@ MODULE moduleInput partNew%n_in = .TRUE. - partNew%weight = species(sp)%obj%weight + partNew%weight = weight !Assign particle to temporal list of particles CALL partInitial%add(partNew) From fa23f9481abfe946fb7cd9f6d4866550176733f5 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 7 Jul 2024 14:40:26 +0200 Subject: [PATCH 29/84] Issue with bibliography Backup files are properly ignored now. --- doc/user-manual/.gitignore | 1 + doc/user-manual/bibliography.bib.sav | 77 ---------------------------- 2 files changed, 1 insertion(+), 77 deletions(-) delete mode 100644 doc/user-manual/bibliography.bib.sav diff --git a/doc/user-manual/.gitignore b/doc/user-manual/.gitignore index b2ba4d5..a8475d7 100644 --- a/doc/user-manual/.gitignore +++ b/doc/user-manual/.gitignore @@ -6,6 +6,7 @@ *.aux *.ps bibliography.bib.bak +bibliography.bib.sav *.bbl *.blg *.out diff --git a/doc/user-manual/bibliography.bib.sav b/doc/user-manual/bibliography.bib.sav deleted file mode 100644 index b8b6483..0000000 --- a/doc/user-manual/bibliography.bib.sav +++ /dev/null @@ -1,77 +0,0 @@ -% Encoding: UTF-8 - -@InProceedings{boris1970relativistic, - author = {Boris, Jay P}, - booktitle = {Proc. Fourth Conf. Num. Sim. Plasmas}, - title = {Relativistic plasma simulation-optimization of a hybrid code}, - year = {1970}, - pages = {3--67}, -} - -@article{higginson2020corrected, - title={A corrected method for Coulomb scattering in arbitrarily weighted particle-in-cell plasma simulations}, - author={Higginson, Drew Pitney and Holod, Ihor and Link, Anthony}, - journal={Journal of Computational Physics}, - volume={413}, - pages={109450}, - year={2020}, - publisher={Elsevier} -} - -@Misc{gfortranURL, - author = {GNU Project}, - title = {gfortran - the GNU Fortran compiler}, - howpublished = {\url{https://gcc.gnu.org/wiki/GFortran}}, -} - -@Misc{ifortURL, - author = {Intel\textsuperscript{\textregistered}}, - title = {Intel\textsuperscript{\textregistered} Fortran Compiler}, - howpublished = {\url{https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/fortran-compiler.html}}, -} - -@Misc{openblasURL, - title = {OpenBLAS, an optimized BLAS library}, - howpublished = {\url{https://www.openblas.net/}}, -} - -@Misc{jsonfortranURL, - title = {JSON-Fortran}, - howpublished = {\url{https://github.com/jacobwilliams/json-fortran}}, -} - -@Misc{jsonURL, - title = {JSON, JavaScript Object Notation}, - howpublished = {\url{https://www.json.org/json-en.html}}, -} - -@Misc{gmshURL, - author = {Christophe Geuzaine and Jean-François Remacle}, - title = {Gmsh}, - howpublished = {\url{https://gmsh.info/}}, -} - -@Article{welford1962note, - author = {Welford, BP}, - journal = {Technometrics}, - title = {Note on a method for calculating corrected sums of squares and products}, - year = {1962}, - number = {3}, - pages = {419--420}, - volume = {4}, - publisher = {Taylor \& Francis}, -} - -@Article{sherlock2008monte, - author = {Sherlock, Mark}, - journal = {Journal of Computational Physics}, - title = {A Monte-Carlo method for Coulomb collisions in hybrid plasma models}, - year = {2008}, - number = {4}, - pages = {2286--2292}, - volume = {227}, - groups = {Particle-in-cell}, - publisher = {Elsevier}, -} - -@Comment{jabref-meta: databaseType:bibtex;} From b36f9c26152339aef154402ebabce74f4075d866 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 9 Jul 2024 17:49:42 +0200 Subject: [PATCH 30/84] Shifting towards constant number of particles per edge So now each edge has the same number of particles and the weight of each particle is calculated based on the surface of each edge compared to the total one. Only in 2DCyl, still to extend to other geometries. Not perfect constant density, but the issue might be the node volume. --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 27 ++++++++++--------- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 14 ---------- .../mesh/inout/vtu/moduleMeshInputVTU.f90 | 26 +++++++++--------- src/modules/mesh/moduleMesh.f90 | 2 ++ src/modules/moduleInject.f90 | 16 +++++------ 5 files changed, 36 insertions(+), 49 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 426846d..3f88902 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -144,6 +144,7 @@ MODULE moduleMesh2DCyl USE moduleSpecies USE moduleBoundary USE moduleErrors + USE moduleConstParam, ONLY: PI IMPLICIT NONE CLASS(meshEdge2DCyl), INTENT(out):: self @@ -163,7 +164,15 @@ MODULE moduleMesh2DCyl r2 = self%n2%getCoordinates() self%z = (/r1(1), r2(1)/) self%r = (/r1(2), r2(2)/) - self%weight = DABS(self%r(2)**2 - self%r(1)**2) + !Edge surface + IF (self%z(2) /= self%z(1)) THEN + self%surface = ABS(self%r(2) + self%r(1))*ABS(self%z(2) - self%z(1)) + + ELSE + self%surface = ABS(self%r(2)**2 - self%r(1)**2) + + END IF + self%surface = self%surface * PI !Normal vector self%normal = (/ -(self%r(2)-self%r(1)), & self%z(2)-self%z(1) , & @@ -586,18 +595,10 @@ MODULE moduleMesh2DCyl !Computes total volume of the cell self%volume = r*detJ*PI8 !4*2*pi !Computes volume per node - Xi = (/-5.D-1, -5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) - self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 - Xi = (/ 5.D-1, -5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) - self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 - Xi = (/ 5.D-1, 5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) - self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 - Xi = (/-5.D-1, 5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) - self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 + self%n1%v = self%n1%v + fPsi(1)*self%volume + self%n2%v = self%n2%v + fPsi(2)*self%volume + self%n3%v = self%n3%v + fPsi(3)*self%volume + self%n4%v = self%n4%v + fPsi(4)*self%volume END SUBROUTINE volumeQuad diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 2c02358..0df1289 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -296,20 +296,6 @@ MODULE moduleMeshInputGmsh2 CLOSE(10) - ! Adjust node volume at axis - SELECT CASE(self%geometry) - CASE("Cyl") - DO n = 1, self%numNodes - r = self%nodes(n)%obj%getCoordinates() - IF (r(2) == 0.D0) THEN - self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 - - END IF - - END DO - - END SELECT - !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index eb6af79..309ca5c 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -496,19 +496,19 @@ MODULE moduleMeshInputVTU END DO - ! Adjust node volume at axis - SELECT CASE(self%geometry) - CASE("Cyl") - DO n = 1, numNodes - r = self%nodes(n)%obj%getCoordinates() - IF (r(2) == 0.D0) THEN - self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 - - END IF - - END DO - - END SELECT + ! ! Adjust node volume at axis + ! SELECT CASE(self%geometry) + ! CASE("Cyl") + ! DO n = 1, numNodes + ! r = self%nodes(n)%obj%getCoordinates() + ! IF (r(2) == 0.D0) THEN + ! self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 + ! + ! END IF + ! + ! END DO + ! + ! END SELECT !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index e96ff2a..af1cd36 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -78,6 +78,8 @@ MODULE moduleMesh REAL(8):: normal(1:3) !Weight for random injection of particles REAL(8):: weight = 1.D0 + ! Surface of edge + REAL(8):: surface = 0.D0 !Pointer to boundary type TYPE(boundaryCont), POINTER:: boundary !Array of functions for boundary conditions diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 69a3dd6..1d4e2e7 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -63,6 +63,7 @@ MODULE moduleInject INTEGER, ALLOCATABLE:: edges(:) !Array with edges REAL(8), ALLOCATABLE:: cumWeight(:) !Array of cummulative probability REAL(8):: sumWeight + REAL(8):: surface ! Total surface of injection TYPE(velDistCont):: v(1:3) !Velocity distribution function in each direction CONTAINS PROCEDURE, PASS:: init => initInject @@ -164,15 +165,12 @@ MODULE moduleInject END DO - !Calculates cumulative probability - ALLOCATE(self%cumWeight(1:self%nEdges)) - et = 1 - self%cumWeight(1) = mesh%edges(self%edges(et))%obj%weight - DO et = 2, self%nEdges - self%cumWeight(et) = mesh%edges(self%edges(et))%obj%weight + self%cumWeight(et-1) + !Calculates total area + self%surface = 0.D0 + DO et = 1, self%nEdges + self%surface = self%surface + mesh%edges(self%edges(et))%obj%surface END DO - self%sumWeight = self%cumWeight(self%nEdges) END SUBROUTINE initInject @@ -313,12 +311,12 @@ MODULE moduleInject !$OMP DO DO n = nMin, nMax - randomX = randomWeighted(self%cumWeight, self%sumWeight) + randomX = random(1, self%nEdges) randomEdge => mesh%edges(self%edges(randomX))%obj !Random position in edge partInj(n)%r = randomEdge%randPos() !Assign weight to particle. - partInj(n)%weight = self%species%weight + partInj(n)%weight = self%species%weight * randomEdge%surface / self%surface !Volume associated to the edge: IF (ASSOCIATED(randomEdge%e1)) THEN partInj(n)%cell = randomEdge%e1%n From 11831a973d86aacc0d8e44b01fd6ecc203300b1a Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 9 Jul 2024 21:25:30 +0200 Subject: [PATCH 31/84] Still not working Trying to have a very simple volume per node assuming a rectangle and the density at the axis it higher than it should (kinda like when using the more accurate volume calculation). This is still weird. I also suspect that the size of the first cell in the axis will also affect this... --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 3f88902..bac265c 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -582,6 +582,8 @@ MODULE moduleMesh2DCyl REAL(8):: detJ REAL(8):: fPsi(1:4) REAL(8):: dPsi(1:3, 1:4), pDer(1:3, 1:3) + REAL(8):: corrUp, corrDown + REAL(8):: dZ, r2, r1 self%volume = 0.D0 @@ -593,12 +595,20 @@ MODULE moduleMesh2DCyl fPsi = self%fPsi(Xi, 4) r = DOT_PRODUCT(fPsi,self%r) !Computes total volume of the cell - self%volume = r*detJ*PI8 !4*2*pi + self%volume = r*detJ*PI8 !2*pi * 4 (weight of 1 point 2D-Gaussian integral) !Computes volume per node - self%n1%v = self%n1%v + fPsi(1)*self%volume - self%n2%v = self%n2%v + fPsi(2)*self%volume - self%n3%v = self%n3%v + fPsi(3)*self%volume - self%n4%v = self%n4%v + fPsi(4)*self%volume + ! self%n1%v = self%n1%v + fPsi(1)*self%volume + ! self%n2%v = self%n2%v + fPsi(2)*self%volume + ! self%n3%v = self%n3%v + fPsi(3)*self%volume + ! self%n4%v = self%n4%v + fPsi(4)*self%volume + dZ = MAXVAL(self%z) - MIN(self%z) + r2 = MAXVAL(self%r) + r1 = MINVAL(self%r) + + self%n1%v = self%n1%v + dZ/2.D0 * PI * ( r2**2 - 3.0D0*r1**2 + 2.0D0*r2*r1)*0.25D0 + self%n2%v = self%n2%v + dZ/2.D0 * PI * ( r2**2 - 3.0D0*r1**2 + 2.0D0*r2*r1)*0.25D0 + self%n3%v = self%n3%v + dZ/2.D0 * PI * (3.0D0*r2**2 - r1**2 - 2.0D0*r2*r1)*0.25D0 + self%n4%v = self%n4%v + dZ/2.D0 * PI * (3.0D0*r2**2 - r1**2 - 2.0D0*r2*r1)*0.25D0 END SUBROUTINE volumeQuad From 667a2ecd93c8e0263252cca4aa3457ce95bfbe3e Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 9 Jul 2024 21:57:32 +0200 Subject: [PATCH 32/84] So, no idea... Basically things do not work. I've added a correction to the node volume in the axis which gives okays results but still this is not perfect. I need to find a better way to do things. Also, I've noticed that the density changes with the size of the cells, which should not happen! I'vw to check this issue. --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 24 ++++++++--------- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 14 ++++++++++ .../mesh/inout/vtu/moduleMeshInputVTU.f90 | 26 +++++++++---------- 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index bac265c..166ae84 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -597,18 +597,18 @@ MODULE moduleMesh2DCyl !Computes total volume of the cell self%volume = r*detJ*PI8 !2*pi * 4 (weight of 1 point 2D-Gaussian integral) !Computes volume per node - ! self%n1%v = self%n1%v + fPsi(1)*self%volume - ! self%n2%v = self%n2%v + fPsi(2)*self%volume - ! self%n3%v = self%n3%v + fPsi(3)*self%volume - ! self%n4%v = self%n4%v + fPsi(4)*self%volume - dZ = MAXVAL(self%z) - MIN(self%z) - r2 = MAXVAL(self%r) - r1 = MINVAL(self%r) - - self%n1%v = self%n1%v + dZ/2.D0 * PI * ( r2**2 - 3.0D0*r1**2 + 2.0D0*r2*r1)*0.25D0 - self%n2%v = self%n2%v + dZ/2.D0 * PI * ( r2**2 - 3.0D0*r1**2 + 2.0D0*r2*r1)*0.25D0 - self%n3%v = self%n3%v + dZ/2.D0 * PI * (3.0D0*r2**2 - r1**2 - 2.0D0*r2*r1)*0.25D0 - self%n4%v = self%n4%v + dZ/2.D0 * PI * (3.0D0*r2**2 - r1**2 - 2.0D0*r2*r1)*0.25D0 + Xi = (/-5.D-1, -5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 + Xi = (/ 5.D-1, -5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 + Xi = (/ 5.D-1, 5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 + Xi = (/-5.D-1, 5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 END SUBROUTINE volumeQuad diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 0df1289..11c3b13 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -296,6 +296,20 @@ MODULE moduleMeshInputGmsh2 CLOSE(10) + ! Adjust node volume at axis + SELECT CASE(self%geometry) + CASE("Cyl") + DO n = 1, self%numNodes + r = self%nodes(n)%obj%getCoordinates() + IF (r(2) == 0.D0) THEN + self%nodes(n)%obj%v = self%nodes(n)%obj%v * 3.0D0/2.0D0 + + END IF + + END DO + + END SELECT + !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index 309ca5c..ff0490a 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -496,19 +496,19 @@ MODULE moduleMeshInputVTU END DO - ! ! Adjust node volume at axis - ! SELECT CASE(self%geometry) - ! CASE("Cyl") - ! DO n = 1, numNodes - ! r = self%nodes(n)%obj%getCoordinates() - ! IF (r(2) == 0.D0) THEN - ! self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 - ! - ! END IF - ! - ! END DO - ! - ! END SELECT + ! Adjust node volume at axis + SELECT CASE(self%geometry) + CASE("Cyl") + DO n = 1, numNodes + r = self%nodes(n)%obj%getCoordinates() + IF (r(2) == 0.D0) THEN + self%nodes(n)%obj%v = self%nodes(n)%obj%v * 3.0D0/2.0D0 + + END IF + + END DO + + END SELECT !Call mesh connectivity CALL self%connectMesh From d608639e77a17511111ac326949f5de28044c864 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 9 Jul 2024 22:05:16 +0200 Subject: [PATCH 33/84] Forgot to save Sorry. --- src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index ff0490a..61802fb 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -499,7 +499,7 @@ MODULE moduleMeshInputVTU ! Adjust node volume at axis SELECT CASE(self%geometry) CASE("Cyl") - DO n = 1, numNodes + DO n = 1, self%numNodes r = self%nodes(n)%obj%getCoordinates() IF (r(2) == 0.D0) THEN self%nodes(n)%obj%v = self%nodes(n)%obj%v * 3.0D0/2.0D0 From cb92462f3683408f218bac22d7f6b50cb72bf63d Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 10 Jul 2024 21:55:45 +0200 Subject: [PATCH 34/84] New injection based on surface to all geometries. WARNING: 3DCart still not working (too tired to calculate things and I'm not ussing it...) --- src/modules/mesh/1DCart/moduleMesh1DCart.f90 | 3 +++ src/modules/mesh/1DRad/moduleMesh1DRad.f90 | 3 +++ src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 3 ++- src/modules/mesh/3DCart/moduleMesh3DCart.f90 | 3 +++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 index 269f157..f400ab0 100644 --- a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 +++ b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 @@ -104,6 +104,7 @@ MODULE moduleMesh1DCart USE moduleSpecies USE moduleBoundary USE moduleErrors + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge1DCart), INTENT(out):: self @@ -122,6 +123,8 @@ MODULE moduleMesh1DCart self%x = r1(1) + self%surface = 1.D0 / L_ref**2 + self%normal = (/ 1.D0, 0.D0, 0.D0 /) !Boundary index diff --git a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 index d998267..fd617bd 100644 --- a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 +++ b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 @@ -104,6 +104,7 @@ MODULE moduleMesh1DRad USE moduleSpecies USE moduleBoundary USE moduleErrors + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge1DRad), INTENT(out):: self @@ -122,6 +123,8 @@ MODULE moduleMesh1DRad self%r = r1(1) + self%surface = 1.D0 / L_ref**2 + self%normal = (/ 1.D0, 0.D0, 0.D0 /) !Boundary index diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index 4bf1f32..dbc8b25 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -144,6 +144,7 @@ MODULE moduleMesh2DCart USE moduleSpecies USE moduleBoundary USE moduleErrors + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge2DCart), INTENT(out):: self @@ -163,7 +164,7 @@ MODULE moduleMesh2DCart r2 = self%n2%getCoordinates() self%x = (/r1(1), r2(1)/) self%y = (/r1(2), r2(2)/) - self%weight = 1.D0 + self%surface = SQRT((self%x(2) - self%x(1))**2 + (self%y(2) - self%y(1))**2) / L_ref !Normal vector self%normal = (/ -(self%y(2)-self%y(1)), & self%x(2)-self%x(1) , & diff --git a/src/modules/mesh/3DCart/moduleMesh3DCart.f90 b/src/modules/mesh/3DCart/moduleMesh3DCart.f90 index c451689..8170df7 100644 --- a/src/modules/mesh/3DCart/moduleMesh3DCart.f90 +++ b/src/modules/mesh/3DCart/moduleMesh3DCart.f90 @@ -109,6 +109,7 @@ MODULE moduleMesh3DCart USE moduleBoundary USE moduleErrors USE moduleMath + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge3DCartTria), INTENT(out):: self @@ -142,6 +143,8 @@ MODULE moduleMesh3DCart self%normal = crossProduct(vec1, vec2) self%normal = normalize(self%normal) + self%surface = 1.D0/L_ref**2 !TODO: FIX THIS WHEN MOVING TO 3D + !Boundary index self%boundary => boundary(bt) ALLOCATE(self%fBoundary(1:nSpecies)) From 9d961bb85fafba67008a1241eb467b7d800703ad Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 10 Jul 2024 21:57:22 +0200 Subject: [PATCH 35/84] Removing weight from edges This parameter is no longer needed. Also removing the cumulative sum of weights from the injection. --- src/modules/mesh/moduleMesh.f90 | 2 -- src/modules/moduleInject.f90 | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index af1cd36..a2eaa5f 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -76,8 +76,6 @@ MODULE moduleMesh CLASS(meshCell), POINTER:: eColl => NULL() !Normal vector REAL(8):: normal(1:3) - !Weight for random injection of particles - REAL(8):: weight = 1.D0 ! Surface of edge REAL(8):: surface = 0.D0 !Pointer to boundary type diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 1d4e2e7..529b687 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -61,8 +61,6 @@ MODULE moduleInject CLASS(speciesGeneric), POINTER:: species !Species of injection INTEGER:: nEdges INTEGER, ALLOCATABLE:: edges(:) !Array with edges - REAL(8), ALLOCATABLE:: cumWeight(:) !Array of cummulative probability - REAL(8):: sumWeight REAL(8):: surface ! Total surface of injection TYPE(velDistCont):: v(1:3) !Velocity distribution function in each direction CONTAINS From e23fc2fc2cf7d992cbc7af276bde82977462f400 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 11:21:38 +0200 Subject: [PATCH 36/84] Small progress I made some small changes to how things are calculated. I have also discovered that the issue with different density when changing injection is not related with the node volume but with the way injection is carried out. When loading particles from a file, all provide the same density regardless the cell (node) volume. I am doing testing in 2DCart as it is easier to set up. --- src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 | 2 +- src/modules/mesh/moduleMesh.f90 | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 index 6286cfc..8637b7e 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 @@ -209,7 +209,7 @@ MODULE moduleMeshOutputVTU WRITE(fileID,"(8X,A)") '' !Electric field WRITE(fileID,"(10X,A, A, A)") '' - WRITE(fileID, "(6(ES20.6E3))") (self%cells(n)%obj%gatherElectricField(Xi)*EF_ref, n = 1, self%numCells) + WRITE(fileID,"(6(ES20.6E3))") (self%cells(n)%obj%gatherElectricField(Xi)*EF_ref, n = 1, self%numCells) WRITE(fileID,"(10X,A)") '' WRITE(fileID,"(8X,A)") '' diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index a2eaa5f..7390bca 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -613,6 +613,7 @@ MODULE moduleMesh INTEGER:: sp INTEGER:: i CLASS(meshNode), POINTER:: node + REAL(8):: pFraction !Particle fraction cellNodes = self%getNodes(nNodes) fPsi = self%fPsi(part%Xi, nNodes) @@ -623,10 +624,11 @@ MODULE moduleMesh DO i = 1, nNodes node => mesh%nodes(cellNodes(i))%obj + pFraction = fPsi(i)*part%weight CALL OMP_SET_LOCK(node%lock) - node%output(sp)%den = node%output(sp)%den + part%weight*fPsi(i) - node%output(sp)%mom(:) = node%output(sp)%mom(:) + part%weight*fPsi(i)*part%v(:) - node%output(sp)%tensorS(:,:) = node%output(sp)%tensorS(:,:) + part%weight*fPsi(i)*tensorS + node%output(sp)%den = node%output(sp)%den + pFraction + node%output(sp)%mom(:) = node%output(sp)%mom(:) + pFraction*part%v(:) + node%output(sp)%tensorS(:,:) = node%output(sp)%tensorS(:,:) + pFraction*tensorS CALL OMP_UNSET_LOCK(node%lock) END DO From 96c563c1462c048e4ddf96ba73b142ab00dd70ff Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 14:39:56 +0200 Subject: [PATCH 37/84] Finally, some progress I rewrote how particles are injected. Now the particles per edge and its weight are calculated in the initialization. There is the possibility for the user to select the particles per edge. TODO: Write documentation for new feature. TODO: Test in 2DCyl --- src/modules/init/moduleInput.f90 | 5 +- src/modules/moduleInject.f90 | 183 +++++++++++++++++++------------ 2 files changed, 114 insertions(+), 74 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index e30bf97..bd59e32 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -1236,6 +1236,7 @@ MODULE moduleInput REAL(8):: flow CHARACTER(:), ALLOCATABLE:: units INTEGER:: physicalSurface + INTEGER:: particlesPerEdge INTEGER:: sp CALL config%info('inject', found, n_children = nInject) @@ -1260,8 +1261,10 @@ MODULE moduleInput CALL config%get(object // '.flow', flow, found) CALL config%get(object // '.units', units, found) CALL config%get(object // '.physicalSurface', physicalSurface, found) + particlesPerEdge = 0 + CALL config%get(object // '.particlesPerEdge', particlesPerEdge, found) - CALL inject(i)%init(i, v, normal, T, flow, units, sp, physicalSurface) + CALL inject(i)%init(i, v, normal, T, flow, units, sp, physicalSurface, particlesPerEdge) CALL readVelDistr(config, inject(i), object) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 529b687..59748eb 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -61,6 +61,8 @@ MODULE moduleInject CLASS(speciesGeneric), POINTER:: species !Species of injection INTEGER:: nEdges INTEGER, ALLOCATABLE:: edges(:) !Array with edges + INTEGER, ALLOCATABLE:: particlesPerEdge(:) ! Particles per edge + REAL(8), ALLOCATABLE:: weightPerEdge(:) ! Weight per edge REAL(8):: surface ! Total surface of injection TYPE(velDistCont):: v(1:3) !Velocity distribution function in each direction CONTAINS @@ -74,7 +76,7 @@ MODULE moduleInject CONTAINS !Initialize an injection of particles - SUBROUTINE initInject(self, i, v, n, T, flow, units, sp, physicalSurface) + SUBROUTINE initInject(self, i, v, n, T, flow, units, sp, physicalSurface, particlesPerEdge) USE moduleMesh USE moduleRefParam USE moduleConstParam @@ -86,52 +88,28 @@ MODULE moduleInject CLASS(injectGeneric), INTENT(inout):: self INTEGER, INTENT(in):: i REAL(8), INTENT(in):: v, n(1:3), T(1:3) - INTEGER, INTENT(in):: sp, physicalSurface + INTEGER, INTENT(in):: sp, physicalSurface, particlesPerEdge REAL(8):: tauInject REAL(8), INTENT(in):: flow CHARACTER(:), ALLOCATABLE, INTENT(in):: units INTEGER:: e, et INTEGER:: phSurface(1:mesh%numEdges) INTEGER:: nVolColl + REAL(8):: fluxPerStep = 0.D0 - self%id = i - self%vMod = v / v_ref - self%n = n / NORM2(n) - self%T = T / T_ref - self%species => species(sp)%obj - tauInject = tau(self%species%n) - SELECT CASE(units) - CASE ("sccm") - !Standard cubic centimeter per minute - self%nParticles = INT(flow*sccm2atomPerS*tauInject*ti_ref/species(sp)%obj%weight) - - CASE ("A") - !Input current in Ampers - self%nParticles = INT(flow*tauInject*ti_ref/(qe*species(sp)%obj%weight)) - - CASE ("Am2") - !Input current in Ampers per square meter - self%nParticles = INT(flow*tauInject*ti_ref*L_ref**2/(qe*species(sp)%obj%weight)) - - CASE ("part/s") - !Input current in Ampers - self%nParticles = INT(flow*tauInject*ti_ref/species(sp)%obj%weight) - - CASE DEFAULT - CALL criticalError("No support for units: " // units, 'initInject') - - END SELECT - !Scale particles for different species steps - IF (self%nParticles == 0) CALL criticalError("The number of particles for inject is 0.", 'initInject') - + self%id = i + self%vMod = v / v_ref + self%n = n / NORM2(n) + self%T = T / T_ref !Gets the edge elements from which particles are injected DO e = 1, mesh%numEdges phSurface(e) = mesh%edges(e)%obj%physicalSurface END DO - self%nEdges = COUNT(phSurface == physicalSurface) - ALLOCATE(inject(i)%edges(1:self%nEdges)) + ALLOCATE(self%edges(1:self%nEdges)) + ALLOCATE(self%particlesPerEdge(1:self%nEdges)) + ALLOCATE(self%weightPerEdge(1:self%nEdges)) et = 0 DO e=1, mesh%numEdges IF (mesh%edges(e)%obj%physicalSurface == physicalSurface) THEN @@ -170,6 +148,60 @@ MODULE moduleInject END DO + ! Information about species and flux + self%species => species(sp)%obj + tauInject = tau(self%species%n) + SELECT CASE(units) + CASE ("sccm") + !Standard cubic centimeter per minute + fluxPerStep = flow*sccm2atomPerS*tauInject*ti_ref + + CASE ("A") + !Current in Ampers + fluxPerStep = flow*tauInject*ti_ref/qe + + CASE ("Am2") + !Input current in Ampers per square meter + fluxPerStep = flow*tauInject*ti_ref*self%surface*L_ref**2/qe + + CASE ("part/s") + !Input current in Ampers + fluxPerStep = flow*tauInject*ti_ref + + CASE DEFAULT + CALL criticalError("No support for units: " // units, 'initInject') + + END SELECT + fluxPerStep = fluxPerStep / self%surface + + !Assign particles per edge + IF (particlesPerEdge > 0) THEN + ! Particles per edge defined by the user + self%particlesPerEdge = particlesPerEdge + DO et = 1, self%nEdges + self%weightPerEdge(et) = fluxPerStep*mesh%edges(self%edges(et))%obj%surface / REAL(particlesPerEdge) + + END DO + + ELSE + ! No particles assigned per edge, use the species weight + self%weightPerEdge = self%species%weight + DO et = 1, self%nEdges + self%particlesPerEdge(et) = FLOOR(fluxPerStep*mesh%edges(self%edges(et))%obj%surface /self%species%weight) + + END DO + + END IF + + print *, self%particlesPerEdge + print *, self%weightPerEdge + + self%nParticles = SUM(self%particlesPerEdge) + print *, self%nParticles + + !Scale particles for different species steps + IF (self%nParticles == 0) CALL criticalError("The number of particles for inject is 0.", 'initInject') + END SUBROUTINE initInject !Injection of particles @@ -285,9 +317,10 @@ MODULE moduleInject CLASS(injectGeneric), INTENT(in):: self INTEGER:: randomX INTEGER, SAVE:: nMin, nMax !Min and Max index in partInj array - INTEGER:: i + INTEGER:: i, e INTEGER:: n, sp CLASS(meshEdge), POINTER:: randomEdge + INTEGER:: particlesPerEdge REAL(8):: direction(1:3) !Insert particles @@ -300,58 +333,62 @@ MODULE moduleInject END IF END DO - nMin = nMin + 1 - nMax = nMin + self%nParticles - 1 - !Particle is considered to be outside the domain - partInj(nMin:nMax)%n_in = .FALSE. !$OMP END SINGLE !$OMP DO - DO n = nMin, nMax - randomX = random(1, self%nEdges) - randomEdge => mesh%edges(self%edges(randomX))%obj - !Random position in edge - partInj(n)%r = randomEdge%randPos() - !Assign weight to particle. - partInj(n)%weight = self%species%weight * randomEdge%surface / self%surface - !Volume associated to the edge: - IF (ASSOCIATED(randomEdge%e1)) THEN - partInj(n)%cell = randomEdge%e1%n + DO e = 1, self%nEdges + ! Select edge for injection + randomEdge => mesh%edges(self%edges(e))%obj + ! Inject particles in edge + DO i = 1, self%particlesPerEdge(e) + ! Index in the global partInj array + n = nMin - 1 + SUM(self%particlesPerEdge(1:e-1)) + i + !Particle is considered to be outside the domain + partInj(n)%n_in = .FALSE. + !Random position in edge + partInj(n)%r = randomEdge%randPos() + !Assign weight to particle. + partInj(n)%weight = self%weightPerEdge(e) + !Volume associated to the edge: + IF (ASSOCIATED(randomEdge%e1)) THEN + partInj(n)%cell = randomEdge%e1%n - ELSEIF (ASSOCIATED(randomEdge%e2)) THEN - partInj(n)%cell = randomEdge%e2%n + ELSEIF (ASSOCIATED(randomEdge%e2)) THEN + partInj(n)%cell = randomEdge%e2%n - ELSE - CALL criticalError("No Volume associated to edge", 'addParticles') + ELSE + CALL criticalError("No Volume associated to edge", 'addParticles') - END IF - partInj(n)%cellColl = randomEdge%eColl%n - sp = self%species%n + END IF + partInj(n)%cellColl = randomEdge%eColl%n + sp = self%species%n - !Assign particle type - partInj(n)%species => self%species + !Assign particle type + partInj(n)%species => self%species - direction = self%n + direction = self%n - partInj(n)%v = 0.D0 + partInj(n)%v = 0.D0 - partInj(n)%v = self%vMod*direction + (/ self%v(1)%obj%randomVel(), & - self%v(2)%obj%randomVel(), & - self%v(3)%obj%randomVel() /) + partInj(n)%v = self%vMod*direction + (/ self%v(1)%obj%randomVel(), & + self%v(2)%obj%randomVel(), & + self%v(3)%obj%randomVel() /) - !If velocity is not in the right direction, invert it - IF (DOT_PRODUCT(direction, partInj(n)%v) < 0.D0) THEN - partInj(n)%v = - partInj(n)%v + !If velocity is not in the right direction, invert it + IF (DOT_PRODUCT(direction, partInj(n)%v) < 0.D0) THEN + partInj(n)%v = - partInj(n)%v - END IF + END IF - !Obtain natural coordinates of particle in cell - partInj(n)%Xi = mesh%cells(partInj(n)%cell)%obj%phy2log(partInj(n)%r) - !Push new particle with the minimum time step - CALL solver%pusher(sp)%pushParticle(partInj(n), tau(sp)) - !Assign cell to new particle - CALL solver%updateParticleCell(partInj(n)) + !Obtain natural coordinates of particle in cell + partInj(n)%Xi = mesh%cells(partInj(n)%cell)%obj%phy2log(partInj(n)%r) + !Push new particle with the minimum time step + CALL solver%pusher(sp)%pushParticle(partInj(n), tau(sp)) + !Assign cell to new particle + CALL solver%updateParticleCell(partInj(n)) + + END DO END DO !$OMP END DO From 6d62807fb43466048a1f63996ecfd3e77bb51478 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 14:50:14 +0200 Subject: [PATCH 38/84] Remove testing 'print' statements 2DCyl still seems to have some problems but waiting for simulation. --- src/modules/moduleInject.f90 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 59748eb..93302d9 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -193,11 +193,7 @@ MODULE moduleInject END IF - print *, self%particlesPerEdge - print *, self%weightPerEdge - self%nParticles = SUM(self%particlesPerEdge) - print *, self%nParticles !Scale particles for different species steps IF (self%nParticles == 0) CALL criticalError("The number of particles for inject is 0.", 'initInject') From 03f3b81811359af69f312b1ea47b1ec56beff861 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 15:31:01 +0200 Subject: [PATCH 39/84] Manual updated The manual has been modified to account for the new particlePerEdge option and to indicate that now when the flux is giving by a flux like in the Am2 units, the real surface of the inject is used to scale it. --- doc/user-manual/fpakc_UserManual.pdf | Bin 186028 -> 186195 bytes doc/user-manual/fpakc_UserManual.tex | 7 ++++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index 37d80141e4c7e64c2cb808e7e072b95019a502ae..ef1494ac62b3a07c882225d34ac2998d565ae727 100644 GIT binary patch delta 27417 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 a$-u$M4Hz=RF|ji+urk4sk%`EO!u>ZXyvsTO literal 187186 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 r9)$`ON#PW0C5WEAM&&d)}f7T~V2%ePLg`GLH7n zaP*C!>E}6rP;RPPjiQezWnkl3W!CyjeU$9sdTFprThgS+IteDu386Qzi_6aylX;cb zVGgFK2}nha?Y1rosgdYV`RU-E(DjSSl8!y_)Ln)ujPOb`9ReDh=ng*rebofB_Lyl)_^$)K^O4@y!_zjawXFo$y)i z^LuiucSx-Cn>&vXDcar<)VT5a5pj}FF-_!pG#zOYPXn&v>&t#0RTSLm`YQ=7N>g6m z0ZL`oQUCEpTbbx&PmN%pz@>`W0gXX(Lm-{f>DLw*gRtSQ7+O`Cu2*6C10cEco-TqZ zfwc5m^+&UHyq{Wc>y)3zy>-wqP-%UUJ*#z8)EiT zX(gCEEOwgHZV`1>^Zk_(TA?K)>Q>i+n^Ci1V03zpo1Lpvb-I;4|E1X2r1yrkK>>p) z_>#L&&Mt(+G8VPa4mep`VlZ`5bex7|qcWI0qyPuI#|KO0+*OzRxP}EZ#;;B2%CNmX zYmtH1YC0vnJ+AB)68f@;M=sCv+NOWmjN+1uYmoji1?^HOzN2$5KNj}V7O#`JbX<_T z(##sr^f*?Pd&nzL-zJIh4G+H*;=B`pSFm+5e&d8^kaqJEjG9nV3&ta;m8X_60EOUTM~p4QYhn%~M|lw;P} zx9$k)ADtHpdfmFond=y5=j-|jeCfKB(a%SzI<}7>xsN%n%x*wTOA_oPXT<;UT%C!q zDIpJ_G`N!FGtMg%tb8ihVy3Tn_=(-J|1Gqe@XWjS$7dSJTA0_BVru^R)P7Z-17~F$ z+jnM6Km>38M?o3vu~wAmenN0+a#ZNYWB`)P@P0Uno6t2b7F zN4*ob>%JF6UGi?t�=F#ouo;XlO~`lC~~pA`->JuM;mh@b9M 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 S(Ss*U!8<7Z{JQpzl>HA1CtG*` From 4747673d0a81af1ee55dad7bb197f595028d0625 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Wed, 28 Jan 2026 14:56:38 +0100 Subject: [PATCH 81/84] Bones of boundary --- src/modules/mesh/moduleMeshBoundary.f90 | 28 ++++++++++++------------- src/modules/moduleBoundary.f90 | 15 +++++++++---- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/modules/mesh/moduleMeshBoundary.f90 b/src/modules/mesh/moduleMeshBoundary.f90 index 091e52e..655e4df 100644 --- a/src/modules/mesh/moduleMeshBoundary.f90 +++ b/src/modules/mesh/moduleMeshBoundary.f90 @@ -77,6 +77,20 @@ MODULE moduleMeshBoundary END SUBROUTINE transparent + !Symmetry axis. Reflects particles. + !Although this function should never be called, it is set as a reflective boundary + !to properly deal with possible particles reaching a corner and selecting this boundary. + SUBROUTINE symmetryAxis(edge, part) + USE moduleSpecies + IMPLICIT NONE + + CLASS(meshEdge), INTENT(inout):: edge + CLASS(particle), INTENT(inout):: part + + CALL reflection(edge, part) + + END SUBROUTINE symmetryAxis + !Wall with temperature SUBROUTINE wallTemperature(edge, part) USE moduleSpecies @@ -204,20 +218,6 @@ MODULE moduleMeshBoundary END SUBROUTINE ionization - !Symmetry axis. Reflects particles. - !Although this function should never be called, it is set as a reflective boundary - !to properly deal with possible particles reaching a corner and selecting this boundary. - SUBROUTINE symmetryAxis(edge, part) - USE moduleSpecies - IMPLICIT NONE - - CLASS(meshEdge), INTENT(inout):: edge - CLASS(particle), INTENT(inout):: part - - CALL reflection(edge, part) - - END SUBROUTINE symmetryAxis - !Points the boundary function to specific type SUBROUTINE pointBoundaryFunction(edge, s) USE moduleErrors diff --git a/src/modules/moduleBoundary.f90 b/src/modules/moduleBoundary.f90 index 0b76105..278870f 100644 --- a/src/modules/moduleBoundary.f90 +++ b/src/modules/moduleBoundary.f90 @@ -26,6 +26,12 @@ MODULE moduleBoundary END TYPE boundaryTransparent + !Symmetry axis + TYPE, PUBLIC, EXTENDS(boundaryGeneric):: boundaryAxis + CONTAINS + + END TYPE boundaryAxis + !Wall Temperature boundary TYPE, PUBLIC, EXTENDS(boundaryGeneric):: boundaryWallTemperature !Thermal velocity of the wall: square root(Wall temperature X specific heat) @@ -47,11 +53,12 @@ MODULE moduleBoundary END TYPE boundaryIonization - !Symmetry axis - TYPE, PUBLIC, EXTENDS(boundaryGeneric):: boundaryAxis - CONTAINS + !Boundary for quasi-neutral outflow adjusting reflection coefficient + type, public, extends(boundaryGeneric):: boundaryOutflowAdaptive + real(8):: outflowCurrent + contains - END TYPE boundaryAxis + end type boundaryOutflowAdaptive !Wrapper for boundary types (one per species) TYPE:: bTypesCont From 8d5cb6a516ec45917d9bae0516f0f2a34977d44f Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez - Galactica Date: Mon, 2 Feb 2026 14:31:58 +0100 Subject: [PATCH 82/84] Wrong surface in edges Some edges were calculating the area surface incorrectly, which was leading to wrong densities. --- src/modules/mesh/1DCart/moduleMesh1DCart.f90 | 1 - src/modules/mesh/1DRad/moduleMesh1DRad.f90 | 1 - src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 4 +--- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 index bbc72e2..a304c5e 100644 --- a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 +++ b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 @@ -104,7 +104,6 @@ MODULE moduleMesh1DCart USE moduleSpecies USE moduleBoundary USE moduleErrors - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge1DCart), INTENT(out):: self diff --git a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 index e260900..a46c6a2 100644 --- a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 +++ b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 @@ -104,7 +104,6 @@ MODULE moduleMesh1DRad USE moduleSpecies USE moduleBoundary USE moduleErrors - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge1DRad), INTENT(out):: self diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index dcd2128..db1ef4f 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -144,7 +144,6 @@ MODULE moduleMesh2DCart USE moduleSpecies USE moduleBoundary USE moduleErrors - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge2DCart), INTENT(out):: self @@ -164,7 +163,7 @@ MODULE moduleMesh2DCart r2 = self%n2%getCoordinates() self%x = (/r1(1), r2(1)/) self%y = (/r1(2), r2(2)/) - self%surface = SQRT((self%x(2) - self%x(1))**2 + (self%y(2) - self%y(1))**2) / L_ref + self%surface = SQRT((self%x(2) - self%x(1))**2 + (self%y(2) - self%y(1))**2) !Normal vector self%normal = (/ -(self%y(2)-self%y(1)), & self%x(2)-self%x(1) , & @@ -559,7 +558,6 @@ MODULE moduleMesh2DCart !Compute element volume PURE SUBROUTINE volumeQuad(self) - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshCell2DCartQuad), INTENT(inout):: self From 159f2e7620a355549ee64c8bbda579a0f94768c4 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 3 Feb 2026 10:15:12 +0100 Subject: [PATCH 83/84] Trying partial reflection --- src/modules/init/moduleInput.f90 | 108 ++++++++++--------- src/modules/mesh/1DCart/moduleMesh1DCart.f90 | 1 - src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 4 +- src/modules/mesh/moduleMeshBoundary.f90 | 29 ++++- src/modules/moduleBoundary.f90 | 1 + src/modules/moduleInject.f90 | 8 +- 6 files changed, 91 insertions(+), 60 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 74da279..9f50947 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -829,71 +829,77 @@ MODULE moduleInput IF (nTypes /= nSpecies) CALL criticalError('Not enough boundary types defined in ' // object, 'readBoundary') ALLOCATE(boundary(i)%bTypes(1:nSpecies)) DO s = 1, nSpecies - WRITE(sString,'(i2)') s - object = 'boundary(' // TRIM(iString) // ').bTypes(' // TRIM(sString) // ')' - CALL config%get(object // '.type', bType, found) - SELECT CASE(bType) - CASE('reflection') - ALLOCATE(boundaryReflection:: boundary(i)%bTypes(s)%obj) + associate(bound => boundary(i)%bTypes(s)%obj) + WRITE(sString,'(i2)') s + object = 'boundary(' // TRIM(iString) // ').bTypes(' // TRIM(sString) // ')' + CALL config%get(object // '.type', bType, found) + SELECT CASE(bType) + CASE('reflection') + ALLOCATE(boundaryReflection:: bound) - CASE('absorption') - ALLOCATE(boundaryAbsorption:: boundary(i)%bTypes(s)%obj) + CASE('absorption') + ALLOCATE(boundaryAbsorption:: bound) - CASE('transparent') - ALLOCATE(boundaryTransparent:: boundary(i)%bTypes(s)%obj) + CASE('transparent') + ALLOCATE(boundaryTransparent:: bound) - CASE('ionization') - !Neutral parameters - CALL config%get(object // '.neutral.ion', speciesName, found) - IF (.NOT. found) CALL criticalError("missing parameter 'ion' for neutrals in ionization", 'readBoundary') - speciesID = speciesName2Index(speciesName) - CALL config%get(object // '.neutral.mass', m0, found) - IF (.NOT. found) THEN - m0 = species(s)%obj%m*m_ref - END IF - CALL config%get(object // '.neutral.density', n0, found) - IF (.NOT. found) CALL criticalError("missing parameter 'density' for neutrals in ionization", 'readBoundary') - CALL config%get(object // '.neutral.velocity', v0, found) - IF (.NOT. found) CALL criticalError("missing parameter 'velocity' for neutrals in ionization", 'readBoundary') - CALL config%get(object // '.neutral.temperature', T0, found) - IF (.NOT. found) CALL criticalError("missing parameter 'temperature' for neutrals in ionization", 'readBoundary') + CASE('axis') + ALLOCATE(boundaryAxis:: bound) - CALL config%get(object // '.effectiveTime', effTime, found) - IF (.NOT. found) CALL criticalError("missing parameter 'effectiveTime' for ionization", 'readBoundary') + CASE('wallTemperature') + CALL config%get(object // '.temperature', Tw, found) + IF (.NOT. found) CALL criticalError("temperature not found for wallTemperature boundary type", 'readBoundary') + CALL config%get(object // '.specificHeat', cw, found) + IF (.NOT. found) CALL criticalError("specificHeat not found for wallTemperature boundary type", 'readBoundary') - CALL config%get(object // '.energyThreshold', eThreshold, found) - IF (.NOT. found) CALL criticalError("missing parameter 'eThreshold' in ionization", 'readBoundary') + CALL initWallTemperature(bound, Tw, cw) - CALL config%get(object // '.crossSection', crossSection, found) - IF (.NOT. found) CALL criticalError("missing parameter 'crossSection' for neutrals in ionization", 'readBoundary') + CASE('ionization') + !Neutral parameters + CALL config%get(object // '.neutral.ion', speciesName, found) + IF (.NOT. found) CALL criticalError("missing parameter 'ion' for neutrals in ionization", 'readBoundary') + speciesID = speciesName2Index(speciesName) + CALL config%get(object // '.neutral.mass', m0, found) + IF (.NOT. found) THEN + m0 = species(s)%obj%m*m_ref + END IF + CALL config%get(object // '.neutral.density', n0, found) + IF (.NOT. found) CALL criticalError("missing parameter 'density' for neutrals in ionization", 'readBoundary') + CALL config%get(object // '.neutral.velocity', v0, found) + IF (.NOT. found) CALL criticalError("missing parameter 'velocity' for neutrals in ionization", 'readBoundary') + CALL config%get(object // '.neutral.temperature', T0, found) + IF (.NOT. found) CALL criticalError("missing parameter 'temperature' for neutrals in ionization", 'readBoundary') - CALL config%get(object // '.electronSecondary', electronSecondary, found) - electronSecondaryID = speciesName2Index(electronSecondary) - IF (found) THEN - CALL initIonization(boundary(i)%bTypes(s)%obj, species(s)%obj%m, m0, n0, v0, T0, & - speciesID, effTime, crossSection, eThreshold,electronSecondaryID) + CALL config%get(object // '.effectiveTime', effTime, found) + IF (.NOT. found) CALL criticalError("missing parameter 'effectiveTime' for ionization", 'readBoundary') - ELSE - CALL initIonization(boundary(i)%bTypes(s)%obj, species(s)%obj%m, m0, n0, v0, T0, & - speciesID, effTime, crossSection, eThreshold) + CALL config%get(object // '.energyThreshold', eThreshold, found) + IF (.NOT. found) CALL criticalError("missing parameter 'eThreshold' in ionization", 'readBoundary') - END IF + CALL config%get(object // '.crossSection', crossSection, found) + IF (.NOT. found) CALL criticalError("missing parameter 'crossSection' for neutrals in ionization", 'readBoundary') - CASE('wallTemperature') - CALL config%get(object // '.temperature', Tw, found) - IF (.NOT. found) CALL criticalError("temperature not found for wallTemperature boundary type", 'readBoundary') - CALL config%get(object // '.specificHeat', cw, found) - IF (.NOT. found) CALL criticalError("specificHeat not found for wallTemperature boundary type", 'readBoundary') + CALL config%get(object // '.electronSecondary', electronSecondary, found) + electronSecondaryID = speciesName2Index(electronSecondary) + IF (found) THEN + CALL initIonization(bound, species(s)%obj%m, m0, n0, v0, T0, & + speciesID, effTime, crossSection, eThreshold,electronSecondaryID) - CALL initWallTemperature(boundary(i)%bTypes(s)%obj, Tw, cw) + ELSE + CALL initIonization(bound, species(s)%obj%m, m0, n0, v0, T0, & + speciesID, effTime, crossSection, eThreshold) - CASE('axis') - ALLOCATE(boundaryAxis:: boundary(i)%bTypes(s)%obj) + END IF - CASE DEFAULT - CALL criticalError('Boundary type ' // bType // ' undefined', 'readBoundary') + case('outflowAdaptive') + allocate(boundaryOutflowAdaptive:: bound) - END SELECT + CASE DEFAULT + CALL criticalError('Boundary type ' // bType // ' undefined', 'readBoundary') + + END SELECT + + end associate END DO diff --git a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 index bbc72e2..a304c5e 100644 --- a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 +++ b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 @@ -104,7 +104,6 @@ MODULE moduleMesh1DCart USE moduleSpecies USE moduleBoundary USE moduleErrors - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge1DCart), INTENT(out):: self diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index dcd2128..db1ef4f 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -144,7 +144,6 @@ MODULE moduleMesh2DCart USE moduleSpecies USE moduleBoundary USE moduleErrors - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge2DCart), INTENT(out):: self @@ -164,7 +163,7 @@ MODULE moduleMesh2DCart r2 = self%n2%getCoordinates() self%x = (/r1(1), r2(1)/) self%y = (/r1(2), r2(2)/) - self%surface = SQRT((self%x(2) - self%x(1))**2 + (self%y(2) - self%y(1))**2) / L_ref + self%surface = SQRT((self%x(2) - self%x(1))**2 + (self%y(2) - self%y(1))**2) !Normal vector self%normal = (/ -(self%y(2)-self%y(1)), & self%x(2)-self%x(1) , & @@ -559,7 +558,6 @@ MODULE moduleMesh2DCart !Compute element volume PURE SUBROUTINE volumeQuad(self) - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshCell2DCartQuad), INTENT(inout):: self diff --git a/src/modules/mesh/moduleMeshBoundary.f90 b/src/modules/mesh/moduleMeshBoundary.f90 index 655e4df..deb4459 100644 --- a/src/modules/mesh/moduleMeshBoundary.f90 +++ b/src/modules/mesh/moduleMeshBoundary.f90 @@ -218,6 +218,28 @@ MODULE moduleMeshBoundary END SUBROUTINE ionization + subroutine outflowAdaptive(edge, part) + use moduleRandom + implicit none + + class(meshEdge), intent(inout):: edge + class(particle), intent(inout):: part + + select type(bound => edge%boundary%bTypes(part%species%n)%obj) + type is(boundaryOutflowAdaptive) + + if (random() < 0.844d0) then + call reflection(edge, part) + + else + call transparent(edge, part) + + end if + + end select + + end subroutine outflowAdaptive + !Points the boundary function to specific type SUBROUTINE pointBoundaryFunction(edge, s) USE moduleErrors @@ -236,14 +258,17 @@ MODULE moduleMeshBoundary TYPE IS(boundaryTransparent) edge%fBoundary(s)%apply => transparent + TYPE IS(boundaryAxis) + edge%fBoundary(s)%apply => symmetryAxis + TYPE IS(boundaryWallTemperature) edge%fBoundary(s)%apply => wallTemperature TYPE IS(boundaryIonization) edge%fBoundary(s)%apply => ionization - TYPE IS(boundaryAxis) - edge%fBoundary(s)%apply => symmetryAxis + type is(boundaryOutflowAdaptive) + edge%fBoundary(s)%apply => outflowAdaptive CLASS DEFAULT CALL criticalError("Boundary type not defined in this geometry", 'pointBoundaryFunction') diff --git a/src/modules/moduleBoundary.f90 b/src/modules/moduleBoundary.f90 index 278870f..67465c7 100644 --- a/src/modules/moduleBoundary.f90 +++ b/src/modules/moduleBoundary.f90 @@ -56,6 +56,7 @@ MODULE moduleBoundary !Boundary for quasi-neutral outflow adjusting reflection coefficient type, public, extends(boundaryGeneric):: boundaryOutflowAdaptive real(8):: outflowCurrent + real(8):: reflectionFraction contains end type boundaryOutflowAdaptive diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 528cb91..cb1c7fb 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -387,9 +387,11 @@ MODULE moduleInject partInj(n)%v = 0.D0 - partInj(n)%v = self%vMod*direction + (/ self%v(1)%obj%randomVel(), & - self%v(2)%obj%randomVel(), & - self%v(3)%obj%randomVel() /) + do while(dot_product(partInj(n)%v, direction) <= 0.d0) + partInj(n)%v = self%vMod*direction + (/ self%v(1)%obj%randomVel(), & + self%v(2)%obj%randomVel(), & + self%v(3)%obj%randomVel() /) + end do !If injecting a no-drift distribution and velocity is negative, reflect if ((self%vMod == 0.D0) .and. & From 23bba3100555218705995662374045ed8be6cad4 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 4 Feb 2026 13:52:24 +0100 Subject: [PATCH 84/84] Fixed an issue with the random Maxwellian subroutines --- src/modules/common/moduleRandom.f90 | 23 +++++++++++------------ src/modules/moduleInject.f90 | 14 ++++---------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index 156f5e4..1b8ec67 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -48,24 +48,23 @@ MODULE moduleRandom END FUNCTION randomIntAB !Returns a random number in a Maxwellian distribution of mean 0 and width 1 with the Box-Muller Method - FUNCTION randomMaxwellian() RESULT(rnd) - USE moduleConstParam, ONLY: PI - IMPLICIT NONE + function randomMaxwellian() result(rnd) + USE moduleConstParam, only: pi + implicit none - REAL(8):: rnd - REAL(8):: v1, v2, Rsquare + real(8):: rnd + real(8):: v1, v2, Rsquare - Rsquare = 1.D0 - do while (Rsquare >= 1.D0 .and. Rsquare > 0.D0) - v1 = 2.D0 * random() - 1.D0 - v2 = 2.D0 * random() - 1.D0 - Rsquare = v1**2 + v2**2 + v1 = 0.d0 + do while (v1 <= 0.d0) + v1 = random() end do + v2 = random() - rnd = v2 * sqrt(-2.D0 * log(Rsquare) / Rsquare) + rnd = sqrt(-2.d0*log(v1))*cos(2*pi*v2) - END FUNCTION randomMaxwellian + end function randomMaxwellian !Returns a random number in a Maxwellian distribution of mean 0 and width 1 FUNCTION randomHalfMaxwellian() RESULT(rnd) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index cb1c7fb..ff8a694 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -257,7 +257,7 @@ MODULE moduleInject CLASS(velDistGeneric), ALLOCATABLE, INTENT(out):: velDist REAL(8), INTENT(in):: temperature, m - velDist = velDistMaxwellian(vTh = DSQRT(temperature/m)) + velDist = velDistMaxwellian(vTh = DSQRT(2.d0*temperature/m)) END SUBROUTINE initVelDistMaxwellian @@ -267,7 +267,7 @@ MODULE moduleInject CLASS(velDistGeneric), ALLOCATABLE, INTENT(out):: velDist REAL(8), INTENT(in):: temperature, m - velDist = velDistHalfMaxwellian(vTh = DSQRT(temperature/m)) + velDist = velDistHalfMaxwellian(vTh = DSQRT(2.d0*temperature/m)) END SUBROUTINE initVelDistHalfMaxwellian @@ -289,7 +289,7 @@ MODULE moduleInject REAL(8):: v v = 0.D0 - v = sqrt(2.0)*self%vTh*randomMaxwellian() + v = self%vTh*randomMaxwellian()/sqrt(2.d0) END FUNCTION randomVelMaxwellian @@ -302,7 +302,7 @@ MODULE moduleInject REAL(8):: v v = 0.D0 - v = sqrt(2.0)*self%vTh*randomHalfMaxwellian() + v = self%vTh*randomHalfMaxwellian()/sqrt(2.d0) END FUNCTION randomVelHalfMaxwellian @@ -393,12 +393,6 @@ MODULE moduleInject self%v(3)%obj%randomVel() /) end do - !If injecting a no-drift distribution and velocity is negative, reflect - if ((self%vMod == 0.D0) .and. & - (dot_product(direction, partInj(n)%v) < 0.D0)) then - partInj(n)%v = - partInj(n)%v - - end if !Obtain natural coordinates of particle in cell partInj(n)%Xi = mesh%cells(partInj(n)%cell)%obj%phy2log(partInj(n)%r)

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 z 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ˤ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 diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index fd48ed2..13be4cd 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -611,7 +611,7 @@ make \begin{itemize} \item \textbf{A}: Ampere. \item \textbf{Am2}: Ampere per square meter. - This value will be multiplied by the square of the reference length to convert to A, it will not consider the surface area of injection. + This value will be multiplied by the surface of injection. \item \textbf{sccm}: Standard cubic centimetre. \item \textbf{part/s}: Particles (real) per second. \end{itemize} @@ -638,6 +638,11 @@ make Temperature in each direction. \item \textbf{physicalSurface}: Integer. Identification of the edge in the mesh file. + \item \textbf{particlesPerEdge}: Integer. + Optional. + Number of particles to be injected by each edge in the numerical domain. + The weight of the particles for each edge will modified by the surface of the edge to ensure the right flux is injected. + If no value is provided, the number of particles to inject per edge will be calculated with the species weight and the surface of the edge respect to the total one. \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{reference} From d710cc5e6631353bbbb34df41b48bdb3e4dc0cb0 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 15:52:13 +0200 Subject: [PATCH 40/84] Probes fixed! This should've been commited in another branch, but I am taking advantage of this to clean up the code a bit. --- src/modules/moduleProbe.f90 | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/modules/moduleProbe.f90 b/src/modules/moduleProbe.f90 index c7d3cf5..c29eeda 100644 --- a/src/modules/moduleProbe.f90 +++ b/src/modules/moduleProbe.f90 @@ -101,7 +101,7 @@ MODULE moduleProbe !Maximum radius !TODO: Make this an input parameter - self%maxR = 1.D0 + self%maxR = 1.D-2/L_ref !Init the probe lock CALL OMP_INIT_LOCK(self%lock) @@ -148,7 +148,7 @@ MODULE moduleProbe deltaR = NORM2(self%r - part%r) !Only include particle if it is inside the maximum radius - IF (deltaR < self%maxR) THEN + ! IF (deltaR < self%maxR) THEN !find lower index for all dimensions CALL self%findLowerIndex(part%v, i, j, k, inside) @@ -162,28 +162,28 @@ MODULE moduleProbe fk = self%vk(k+1) - part%v(3) fk1 = part%v(3) - self%vk(k) - ! weight = part%weight * DEXP(deltaR/self%maxR) - weight = part%weight + weight = part%weight * DEXP(-deltaR/self%maxR) + ! weight = part%weight !Lock the probe CALL OMP_SET_LOCK(self%lock) !Assign particle weight to distribution function - self%f(i , j , k ) = fi * fj * fk * weight - self%f(i+1, j , k ) = fi1 * fj * fk * weight - self%f(i , j+1, k ) = fi * fj1 * fk * weight - self%f(i+1, j+1, k ) = fi1 * fj1 * fk * weight - self%f(i , j , k+1) = fi * fj * fk1 * weight - self%f(i+1, j , k+1) = fi1 * fj * fk1 * weight - self%f(i , j+1, k+1) = fi * fj1 * fk1 * weight - self%f(i+1, j+1, k+1) = fi1 * fj1 * fk1 * weight + self%f(i , j , k ) = self%f(i , j , k ) + fi * fj * fk * weight + self%f(i+1, j , k ) = self%f(i+1, j , k ) + fi1 * fj * fk * weight + self%f(i , j+1, k ) = self%f(i , j+1, k ) + fi * fj1 * fk * weight + self%f(i+1, j+1, k ) = self%f(i+1, j+1, k ) + fi1 * fj1 * fk * weight + self%f(i , j , k+1) = self%f(i , j , k+1) + fi * fj * fk1 * weight + self%f(i+1, j , k+1) = self%f(i+1, j , k+1) + fi1 * fj * fk1 * weight + self%f(i , j+1, k+1) = self%f(i , j+1, k+1) + fi * fj1 * fk1 * weight + self%f(i+1, j+1, k+1) = self%f(i+1, j+1, k+1) + fi1 * fj1 * fk1 * weight !Unlock the probe CALL OMP_UNSET_LOCK(self%lock) END IF - END IF + ! END IF END IF From bc8f20528749446ed9b1b7c083e69cf062aa8b26 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 15:55:02 +0200 Subject: [PATCH 41/84] Clean-up! Trying to reduce warnings and unused variables in the code. This should not be in this branch. --- src/modules/init/moduleInput.f90 | 3 +-- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 2 -- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 5 +++-- .../mesh/inout/vtu/moduleMeshInputVTU.f90 | 1 + .../mesh/inout/vtu/moduleMeshOutputVTU.f90 | 9 +++------ src/modules/mesh/moduleMesh.f90 | 6 ++++++ src/modules/moduleInject.f90 | 16 +++++++--------- src/modules/solver/electromagnetic/moduleEM.f90 | 3 ++- 8 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index bd59e32..6f1d5bb 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -308,7 +308,7 @@ MODULE moduleInput LOGICAL:: found CHARACTER(:), ALLOCATABLE:: object INTEGER:: nInitial - INTEGER:: i, j, p, e + INTEGER:: i, p, e CHARACTER(LEN=2):: iString CHARACTER(:), ALLOCATABLE:: spName INTEGER:: sp @@ -923,7 +923,6 @@ MODULE moduleInput LOGICAL:: found CHARACTER(:), ALLOCATABLE:: meshFormat, meshFile REAL(8):: volume - CHARACTER(:), ALLOCATABLE:: meshFileVTU !Temporary to test VTU OUTPUT object = 'geometry' diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 166ae84..2d300b9 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -582,8 +582,6 @@ MODULE moduleMesh2DCyl REAL(8):: detJ REAL(8):: fPsi(1:4) REAL(8):: dPsi(1:3, 1:4), pDer(1:3, 1:3) - REAL(8):: corrUp, corrDown - REAL(8):: dZ, r2, r1 self%volume = 0.D0 diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 11c3b13..1c8de50 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -108,6 +108,7 @@ MODULE moduleMeshInputGmsh2 READ(10, *) totalNumElem !Count edges and volume elements + numEdges = 0 SELECT TYPE(self) TYPE IS(meshParticles) self%numEdges = 0 @@ -342,7 +343,7 @@ MODULE moduleMeshInputGmsh2 DO i = 1, numNodes !Reads the density - READ(10, *), e, density(i) + READ(10, *) e, density(i) END DO @@ -353,7 +354,7 @@ MODULE moduleMeshInputGmsh2 DO i = 1, numNodes !Reads the velocity - READ(10, *), e, velocity(i, 1:3) + READ(10, *) e, velocity(i, 1:3) END DO diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index 61802fb..d408387 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -275,6 +275,7 @@ MODULE moduleMeshInputVTU END DO !Count the number of edges + numEdges = 0 SELECT CASE(self%dimen) CASE(3) !Edges are triangles, type 5 in VTK diff --git a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 index 8637b7e..da90b6b 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 @@ -315,9 +315,8 @@ MODULE moduleMeshOutputVTU CLASS(meshParticles), INTENT(in):: self INTEGER, INTENT(in):: t - INTEGER:: n, i, fileID + INTEGER:: i, fileID CHARACTER(:), ALLOCATABLE:: fileName, fileNameCollection - TYPE(outputFormat):: output(1:self%numNodes) fileID = 60 @@ -352,10 +351,9 @@ MODULE moduleMeshOutputVTU CLASS(meshGeneric), INTENT(in):: self INTEGER, INTENT(in):: t - INTEGER:: n, i, fileID + INTEGER:: fileID CHARACTER(:), ALLOCATABLE:: fileName, fileNameCollection CHARACTER (LEN=iterationDigits):: tstring - TYPE(outputFormat):: output(1:self%numNodes) fileID = 62 @@ -424,9 +422,8 @@ MODULE moduleMeshOutputVTU IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER:: n, i, fileIDMean, fileIDDeviation + INTEGER:: i, fileIDMean, fileIDDeviation CHARACTER(:), ALLOCATABLE:: fileNameMean, fileNameDeviation - TYPE(outputFormat):: output(1:self%numNodes) fileIDMean = 66 fileIDDeviation = 67 diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index 7390bca..ae53aa0 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -1025,6 +1025,9 @@ MODULE moduleMesh ALLOCATE(deltaV_ij(1:cell%listPart_in(i)%amount, 1:3)) ALLOCATE(p_ij(1:cell%listPart_in(i)%amount, 1:3)) ALLOCATE(mass_ij(1:cell%listPart_in(i)%amount)) + deltaV_ij = 0.D0 + p_ij = 0.D0 + mass_ij = 0.D0 !Loop over particles of species_i partTemp => cell%listPart_in(i)%head p = 1 @@ -1109,6 +1112,9 @@ MODULE moduleMesh ALLOCATE(deltaV_ji(1:cell%listPart_in(j)%amount, 1:3)) ALLOCATE(p_ji(1:cell%listPart_in(j)%amount, 1:3)) ALLOCATE(mass_ji(1:cell%listPart_in(j)%amount)) + deltaV_ji = 0.D0 + p_ji = 0.D0 + mass_ji = 0.D0 !Loop over particles of species_j partTemp => cell%listPart_in(j)%head p = 1 diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 93302d9..18c7fbb 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -151,28 +151,29 @@ MODULE moduleInject ! Information about species and flux self%species => species(sp)%obj tauInject = tau(self%species%n) + ! Convert units SELECT CASE(units) CASE ("sccm") !Standard cubic centimeter per minute - fluxPerStep = flow*sccm2atomPerS*tauInject*ti_ref + fluxPerStep = flow*sccm2atomPerS CASE ("A") !Current in Ampers - fluxPerStep = flow*tauInject*ti_ref/qe + fluxPerStep = flow/qe CASE ("Am2") !Input current in Ampers per square meter - fluxPerStep = flow*tauInject*ti_ref*self%surface*L_ref**2/qe + fluxPerStep = flow*self%surface*L_ref**2/qe CASE ("part/s") !Input current in Ampers - fluxPerStep = flow*tauInject*ti_ref + fluxPerStep = flow CASE DEFAULT CALL criticalError("No support for units: " // units, 'initInject') END SELECT - fluxPerStep = fluxPerStep / self%surface + fluxPerStep = fluxPerStep * tauInject * ti_ref / self%surface !Assign particles per edge IF (particlesPerEdge > 0) THEN @@ -307,16 +308,13 @@ MODULE moduleInject USE moduleMesh USE moduleRandom USE moduleErrors - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(injectGeneric), INTENT(in):: self - INTEGER:: randomX - INTEGER, SAVE:: nMin, nMax !Min and Max index in partInj array + INTEGER, SAVE:: nMin INTEGER:: i, e INTEGER:: n, sp CLASS(meshEdge), POINTER:: randomEdge - INTEGER:: particlesPerEdge REAL(8):: direction(1:3) !Insert particles diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index bdf6b03..d5d0793 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -30,8 +30,9 @@ MODULE moduleEM INTEGER, ALLOCATABLE:: nodes(:) INTEGER:: n + nNodes = 1 nNodes = edge%nNodes - nodes = edge%getNodes(nNodes) + nodes = edge%getNodes(nNodes) DO n = 1, nNodes SELECT CASE(self%typeEM) From 72dd3c9073f5123da5267c6f3f6e38749e683e0d Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 11 Jul 2024 17:40:57 +0200 Subject: [PATCH 42/84] I think I have it So the radius for the volume integral in the nodes has to be set with a 1/4 3/4 ratio to match the change in volume as the radius changes along the volume. This has a bigger impact close to the edge. Still unsure if this is the "right" thing to do, but at least it works okay (it seems). --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 2d300b9..ccf0c0f 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -247,7 +247,7 @@ MODULE moduleMesh2DCyl !QUAD FUNCTIONS !Init element SUBROUTINE initCellQuad2DCyl(self, n, p, nodes) - USE moduleRefParam + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshCell2DCylQuad), INTENT(out):: self @@ -594,17 +594,17 @@ MODULE moduleMesh2DCyl r = DOT_PRODUCT(fPsi,self%r) !Computes total volume of the cell self%volume = r*detJ*PI8 !2*pi * 4 (weight of 1 point 2D-Gaussian integral) - !Computes volume per node - Xi = (/-5.D-1, -5.D-1, 0.D0/) + !Computes volume per node. Change the radius point to calculate the area to improve accuracy near the axis. + Xi = (/-5.D-1, -0.25D0, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 - Xi = (/ 5.D-1, -5.D-1, 0.D0/) + Xi = (/ 5.D-1, -0.25D0, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 - Xi = (/ 5.D-1, 5.D-1, 0.D0/) + Xi = (/ 5.D-1, 0.75D0, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 - Xi = (/-5.D-1, 5.D-1, 0.D0/) + Xi = (/-5.D-1, 0.75D0, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 From 152ae6b097422d5b5e924835627b5d52473c5c5b Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 11 Jul 2024 18:19:26 +0200 Subject: [PATCH 43/84] No longer needed The correction in the node volume is no longer needed as now things are being calculated right with the last change. Still, at some point I should review the calculation of the node volume in 2DCyl. --- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 14 -------------- src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 | 14 -------------- 2 files changed, 28 deletions(-) diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 1c8de50..1ad6a36 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -297,20 +297,6 @@ MODULE moduleMeshInputGmsh2 CLOSE(10) - ! Adjust node volume at axis - SELECT CASE(self%geometry) - CASE("Cyl") - DO n = 1, self%numNodes - r = self%nodes(n)%obj%getCoordinates() - IF (r(2) == 0.D0) THEN - self%nodes(n)%obj%v = self%nodes(n)%obj%v * 3.0D0/2.0D0 - - END IF - - END DO - - END SELECT - !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index d408387..184d645 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -497,20 +497,6 @@ MODULE moduleMeshInputVTU END DO - ! Adjust node volume at axis - SELECT CASE(self%geometry) - CASE("Cyl") - DO n = 1, self%numNodes - r = self%nodes(n)%obj%getCoordinates() - IF (r(2) == 0.D0) THEN - self%nodes(n)%obj%v = self%nodes(n)%obj%v * 3.0D0/2.0D0 - - END IF - - END DO - - END SELECT - !Call mesh connectivity CALL self%connectMesh From fb9d1ad8375267eaa1f4bfe7c3b0c44952c94a4d Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 16:44:29 +0000 Subject: [PATCH 44/84] Update moduleMesh2DCyl.f90 This is not needed. --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index ccf0c0f..ae1eb92 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -247,7 +247,6 @@ MODULE moduleMesh2DCyl !QUAD FUNCTIONS !Init element SUBROUTINE initCellQuad2DCyl(self, n, p, nodes) - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshCell2DCylQuad), INTENT(out):: self From abedb79b1651386d39e4e08c9de877a66a6d70e4 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 12 Jul 2024 11:02:26 +0200 Subject: [PATCH 45/84] Some comments Just some comments on how I am going to make the desired changes (have a Dirichlet boundary condition for the electric potential that changes with time). This might be a good opportunity to rework the boundary conditions in the electrostatic field and include other things like a Newmann boundary condition. We will see. --- src/modules/init/moduleInput.f90 | 6 ++++++ src/modules/solver/electromagnetic/moduleEM.f90 | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 6f1d5bb..4216c73 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -1173,6 +1173,12 @@ MODULE moduleInput IF (.NOT. found) & CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') + CASE ("dirichletTime") + CALL config%get(object // '.potential', boundEM(i)%potential, found) + IF (.NOT. found) & + CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') + boundEM(i)%potential = boundEM(i)%potential/Volt_ref + CASE DEFAULT CALL criticalError('Boundary type ' // boundEM(i)%typeEM // ' not yet supported', 'readEMBoundary') diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index d5d0793..f6c7112 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -2,6 +2,7 @@ MODULE moduleEM IMPLICIT NONE + ! TODO: Make this a derived type. TYPE:: boundaryEM CHARACTER(:), ALLOCATABLE:: typeEM INTEGER:: physicalSurface @@ -9,6 +10,7 @@ MODULE moduleEM CONTAINS PROCEDURE, PASS:: apply + !PROCEDURE, PASS:: update !only for time dependent boundary conditions or maybe change apply????? That might be better. END TYPE boundaryEM From f0a27c05295e110829f91c23f1624b9596d1df32 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 12 Jul 2024 13:17:02 +0200 Subject: [PATCH 46/84] More comments So if the source vector is being updated every time step, it might be "easy" to implement these things. --- src/modules/solver/electromagnetic/moduleEM.f90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index f6c7112..ce33570 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -49,7 +49,7 @@ MODULE moduleEM END DO - END SUBROUTINE + END SUBROUTINE apply !Assemble the source vector based on the charge density to solve Poisson's equation SUBROUTINE assembleSourceVector(vectorF) @@ -130,6 +130,7 @@ MODULE moduleEM ALLOCATE(tempF(1:mesh%numNodes)) !$OMP END SINGLE + !TODO: Is this done every time step??? Then things are gonna be really simple. CALL assembleSourceVector(tempF) !$OMP SINGLE From 49025a6965869b7a19975b8cad73a989cc0d6028 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 12 Jul 2024 19:21:00 +0200 Subject: [PATCH 47/84] Starting changes Planning the new way to do BC in the EM field solver. Probably I have to change how things are read, but I don't think this is going to affect the input file. --- src/modules/solver/electromagnetic/moduleEM.f90 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index ce33570..a141eac 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -1,12 +1,23 @@ !Module to solve the electromagnetic field MODULE moduleEM + USE moduleMesh IMPLICIT NONE + ! Array of pointers to nodes. + !TODO: This is probably better in moduleMesh as multiple modules could use this. + TYPE:: meshNodePointer + CLASS(meshNode), POINTER:: obj + CONTAINS + + END TYPE meshNodePointer + + ! TODO: Make this a derived type. TYPE:: boundaryEM CHARACTER(:), ALLOCATABLE:: typeEM INTEGER:: physicalSurface REAL(8):: potential + TYPE(meshNodePointer), ALLOCATABLE:: nodes(:) CONTAINS PROCEDURE, PASS:: apply @@ -42,6 +53,7 @@ MODULE moduleEM mesh%K(nodes(n), :) = 0.D0 mesh%K(nodes(n), nodes(n)) = 1.D0 + ! TODO: Change this to pointer mesh%nodes(nodes(n))%obj%emData%type = self%typeEM mesh%nodes(nodes(n))%obj%emData%phi = self%potential From ac277259408bd6670ea17085527e3f91881fb04e Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 12 Jul 2024 23:08:19 +0200 Subject: [PATCH 48/84] Big one... I should've commited before, but I wanted to make things compile. The big change is that I've added a global time step so the parameter does not need to be passed in each function. This is useful as we are moving towards using time profiles for boundary conditions and injection of particles (not in this branch, but in the future and the procedure will be quite similar) --- src/fpakc.f90 | 25 ++- src/modules/common/moduleCaseParam.f90 | 5 + src/modules/init/moduleInput.f90 | 134 +++++++------ .../mesh/inout/0D/moduleMeshOutput0D.f90 | 21 +- .../inout/gmsh2/moduleMeshOutputGmsh2.f90 | 38 ++-- .../mesh/inout/moduleMeshInoutCommon.f90 | 8 +- .../mesh/inout/vtu/moduleMeshInputVTU.f90 | 2 +- .../mesh/inout/vtu/moduleMeshOutputVTU.f90 | 35 ++-- src/modules/mesh/moduleMesh.f90 | 15 +- src/modules/moduleInject.f90 | 26 +-- src/modules/moduleProbe.f90 | 28 +-- src/modules/output/moduleOutput.f90 | 6 +- .../solver/electromagnetic/moduleEM.f90 | 180 +++++++++++++----- src/modules/solver/moduleSolver.f90 | 37 ++-- 14 files changed, 340 insertions(+), 220 deletions(-) diff --git a/src/fpakc.f90 b/src/fpakc.f90 index e90a5e0..ae6e7bb 100644 --- a/src/fpakc.f90 +++ b/src/fpakc.f90 @@ -11,12 +11,12 @@ PROGRAM fpakc USE OMP_LIB IMPLICIT NONE - ! t = time step - INTEGER:: t ! arg1 = Input argument 1 (input file) CHARACTER(200):: arg1 ! inputFile = path+name of input file CHARACTER(:), ALLOCATABLE:: inputFile + ! generic integer for time step + INTEGER:: t tStep = omp_get_wtime() !Gets the input file @@ -32,10 +32,13 @@ PROGRAM fpakc CALL initOutput(inputFile) !Do '0' iteration - t = tInitial + timeStep = tInitial !$OMP PARALLEL DEFAULT(SHARED) !$OMP SINGLE + ! Initial reset of probes + CALL resetProbes() + CALL verboseError("Initial scatter of particles...") !$OMP END SINGLE CALL doScatter() @@ -49,19 +52,21 @@ PROGRAM fpakc tStep = omp_get_wtime() - tStep !Output initial state - CALL doOutput(t) + CALL doOutput() CALL verboseError('Starting main loop...') !$OMP PARALLEL DEFAULT(SHARED) DO t = tInitial + 1, tFinal - !Insert new particles and push them !$OMP SINGLE tStep = omp_get_wtime() + ! Update global time step index + timeStep = t + !Checks if a species needs to me moved in this iteration - CALL solver%updatePushSpecies(t) + CALL solver%updatePushSpecies() !Checks if probes need to be calculated this iteration - CALL resetProbes(t) + CALL resetProbes() tPush = omp_get_wtime() !$OMP END SINGLE @@ -79,7 +84,7 @@ PROGRAM fpakc !$OMP END SINGLE IF (doMCCollisions) THEN - CALL meshForMCC%doCollisions(t) + CALL meshForMCC%doCollisions() END IF @@ -124,12 +129,12 @@ PROGRAM fpakc !$OMP SINGLE tEMField = omp_get_wtime() - tEMField - CALL doAverage(t) + CALL doAverage() tStep = omp_get_wtime() - tStep !Output data - CALL doOutput(t) + CALL doOutput() !$OMP END SINGLE END DO diff --git a/src/modules/common/moduleCaseParam.f90 b/src/modules/common/moduleCaseParam.f90 index 8df3210..551d867 100644 --- a/src/modules/common/moduleCaseParam.f90 +++ b/src/modules/common/moduleCaseParam.f90 @@ -2,8 +2,13 @@ MODULE moduleCaseParam !Final and initial iterations INTEGER:: tFinal, tInitial = 0 + ! Global index of current iteration + INTEGER:: timeStep + ! Time step for all species REAL(8), ALLOCATABLE:: tau(:) + ! Minimum time step REAL(8):: tauMin + ! Time step for Monte-Carlo Collisions REAL(8):: tauColl END MODULE moduleCaseParam diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 4216c73..6800ac1 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -264,8 +264,8 @@ MODULE moduleInput CALL readEMBoundary(config) !Read constant magnetic field DO i = 1, 3 - WRITE(istring, '(i2)') i - CALL config%get(object // '.B(' // istring // ')', B(i), found) + WRITE(iString, '(i2)') i + CALL config%get(object // '.B(' // iString // ')', B(i), found) IF (.NOT. found) THEN CALL criticalError('Constant magnetic field not provided in direction ' // iString, 'readSolver') @@ -799,7 +799,7 @@ MODULE moduleInput TYPE(json_file), INTENT(inout):: config INTEGER:: i, s - CHARACTER(2):: istring, sString + CHARACTER(2):: iString, sString CHARACTER(:), ALLOCATABLE:: object, bType REAL(8):: Tw, cw !Wall temperature and specific heat !Neutral Properties @@ -815,8 +815,8 @@ MODULE moduleInput CALL config%info('boundary', found, n_children = nBoundary) ALLOCATE(boundary(1:nBoundary)) DO i = 1, nBoundary - WRITE(istring, '(i2)') i - object = 'boundary(' // TRIM(istring) // ')' + WRITE(iString, '(i2)') i + object = 'boundary(' // TRIM(iString) // ')' boundary(i)%n = i CALL config%get(object // '.name', boundary(i)%name, found) @@ -1100,13 +1100,13 @@ MODULE moduleInput TYPE(json_file), INTENT(inout):: config CHARACTER(:), ALLOCATABLE:: object LOGICAL:: found - CHARACTER(2):: istring + CHARACTER(2):: iString INTEGER:: i CHARACTER(:), ALLOCATABLE:: speciesName REAL(8), ALLOCATABLE, DIMENSION(:):: r REAL(8), ALLOCATABLE, DIMENSION(:):: v1, v2, v3 INTEGER, ALLOCATABLE, DIMENSION(:):: points - REAL(8):: timeStep + REAL(8):: everyTimeStep CALL config%info('output.probes', found, n_children = nProbes) @@ -1114,7 +1114,7 @@ MODULE moduleInput DO i = 1, nProbes WRITE(iString, '(I2)') i - object = 'output.probes(' // trim(istring) // ')' + object = 'output.probes(' // trim(iString) // ')' CALL config%get(object // '.species', speciesName, found) CALL config%get(object // '.position', r, found) @@ -1122,16 +1122,14 @@ MODULE moduleInput CALL config%get(object // '.velocity_2', v2, found) CALL config%get(object // '.velocity_3', v3, found) CALL config%get(object // '.points', points, found) - CALL config%get(object // '.timeStep', timeStep, found) + CALL config%get(object // '.timeStep', everyTimeStep, found) IF (ANY(points < 2)) CALL criticalError("Number of points in probe " // iString // " incorrect", 'readProbes') - CALL probe(i)%init(i, speciesName, r, v1, v2, v3, points, timeStep) + CALL probe(i)%init(i, speciesName, r, v1, v2, v3, points, everyTimeStep) END DO - CALL resetProbes(tInitial) - END SUBROUTINE readProbes SUBROUTINE readEMBoundary(config) @@ -1147,40 +1145,56 @@ MODULE moduleInput TYPE(json_file), INTENT(inout):: config CHARACTER(:), ALLOCATABLE:: object LOGICAL:: found - CHARACTER(2):: istring - INTEGER:: i, e, s + CHARACTER(:), ALLOCATABLE:: typeEM + REAL(8):: potential + INTEGER:: physicalSurface + CHARACTER(:), ALLOCATABLE:: timeProfile + INTEGER:: b, e, s, n, ni + CHARACTER(2):: bString INTEGER:: info EXTERNAL:: dgetrf CALL config%info('boundaryEM', found, n_children = nBoundaryEM) - IF (found) ALLOCATE(boundEM(1:nBoundaryEM)) + IF (found) ALLOCATE(boundaryEM(1:nBoundaryEM)) - DO i = 1, nBoundaryEM - WRITE(istring, '(I2)') i - object = 'boundaryEM(' // trim(istring) // ')' + DO b = 1, nBoundaryEM + WRITE(bString, '(I2)') b + object = 'boundaryEM(' // trim(bString) // ')' - CALL config%get(object // '.type', boundEM(i)%typeEM, found) + CALL config%get(object // '.type', typeEM, found) - SELECT CASE(boundEM(i)%typeEM) + SELECT CASE(typeEM) CASE ("dirichlet") - CALL config%get(object // '.potential', boundEM(i)%potential, found) - IF (.NOT. found) & + CALL config%get(object // '.potential', potential, found) + IF (.NOT. found) THEN CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') - boundEM(i)%potential = boundEM(i)%potential/Volt_ref - CALL config%get(object // '.physicalSurface', boundEM(i)%physicalSurface, found) - IF (.NOT. found) & + END IF + + CALL config%get(object // '.physicalSurface', physicalSurface, found) + IF (.NOT. found) THEN CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') + END IF + + CALL initDirichlet(boundaryEM(b)%obj, physicalSurface, potential) + CASE ("dirichletTime") - CALL config%get(object // '.potential', boundEM(i)%potential, found) - IF (.NOT. found) & + CALL config%get(object // '.potential', potential, found) + IF (.NOT. found) THEN CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') - boundEM(i)%potential = boundEM(i)%potential/Volt_ref + + END IF + + CALL config%get(object // '.physicalSurface', physicalSurface, found) + IF (.NOT. found) THEN + CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') + + END IF CASE DEFAULT - CALL criticalError('Boundary type ' // boundEM(i)%typeEM // ' not yet supported', 'readEMBoundary') + CALL criticalError('Boundary type ' // typeEM // ' not yet supported', 'readEMBoundary') END SELECT @@ -1199,18 +1213,28 @@ MODULE moduleInput END DO - IF (ALLOCATED(boundEM)) THEN - DO e = 1, mesh%numEdges - IF (ANY(mesh%edges(e)%obj%physicalSurface == boundEM(:)%physicalSurface)) THEN - DO i = 1, nBoundaryEM - IF (mesh%edges(e)%obj%physicalSurface == boundEM(i)%physicalSurface) THEN - CALL boundEM(i)%apply(mesh%edges(e)%obj) + ! Modify K matrix due to boundary conditions + DO b = 1, nBoundaryEM + SELECT TYPE(boundary => boundaryEM(b)%obj) + TYPE IS(boundaryEMDirichlet) + DO n = 1, boundary%nNodes + ni = boundary%nodes(n)%obj%n + mesh%K(ni, :) = 0.D0 + mesh%K(ni, ni) = 1.D0 - END IF - END DO - END IF - END DO - END IF + END DO + + TYPE IS(boundaryEMDirichletTime) + DO n = 1, boundary%nNodes + ni = boundary%nodes(n)%obj%n + mesh%K(ni, :) = 0.D0 + mesh%K(ni, ni) = 1.D0 + + END DO + + END SELECT + + END DO !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) @@ -1231,13 +1255,13 @@ MODULE moduleInput TYPE(json_file), INTENT(inout):: config INTEGER:: i - CHARACTER(2):: istring + CHARACTER(2):: iString CHARACTER(:), ALLOCATABLE:: object LOGICAL:: found CHARACTER(:), ALLOCATABLE:: speciesName CHARACTER(:), ALLOCATABLE:: name REAL(8):: v - REAL(8), ALLOCATABLE:: T(:), normal(:) + REAL(8), ALLOCATABLE:: temperature(:), normal(:) REAL(8):: flow CHARACTER(:), ALLOCATABLE:: units INTEGER:: physicalSurface @@ -1248,8 +1272,8 @@ MODULE moduleInput ALLOCATE(inject(1:nInject)) nPartInj = 0 DO i = 1, nInject - WRITE(istring, '(i2)') i - object = 'inject(' // trim(istring) // ')' + WRITE(iString, '(i2)') i + object = 'inject(' // trim(iString) // ')' !Find species CALL config%get(object // '.species', speciesName, found) @@ -1257,7 +1281,7 @@ MODULE moduleInput CALL config%get(object // '.name', name, found) CALL config%get(object // '.v', v, found) - CALL config%get(object // '.T', T, found) + CALL config%get(object // '.T', temperature, found) CALL config%get(object // '.n', normal, found) IF (.NOT. found) THEN ALLOCATE(normal(1:3)) @@ -1269,7 +1293,7 @@ MODULE moduleInput particlesPerEdge = 0 CALL config%get(object // '.particlesPerEdge', particlesPerEdge, found) - CALL inject(i)%init(i, v, normal, T, flow, units, sp, physicalSurface, particlesPerEdge) + CALL inject(i)%init(i, v, normal, temperature, flow, units, sp, physicalSurface, particlesPerEdge) CALL readVelDistr(config, inject(i), object) @@ -1329,28 +1353,28 @@ MODULE moduleInput TYPE(injectGeneric), INTENT(inout):: inj CHARACTER(:), ALLOCATABLE, INTENT(in):: object INTEGER:: i - CHARACTER(2):: istring + CHARACTER(2):: iString CHARACTER(:), ALLOCATABLE:: fvType LOGICAL:: found - REAL(8):: v, T, m + REAL(8):: v, temperature, m !Reads species mass m = inj%species%m !Reads distribution functions for velocity DO i = 1, 3 - WRITE(istring, '(i2)') i - CALL config%get(object // '.velDist('// TRIM(istring) //')', fvType, found) - IF (.NOT. found) CALL criticalError("No velocity distribution in direction " // istring // & + WRITE(iString, '(i2)') i + CALL config%get(object // '.velDist('// TRIM(iString) //')', fvType, found) + IF (.NOT. found) CALL criticalError("No velocity distribution in direction " // iString // & " found for " // object, 'readVelDistr') SELECT CASE(fvType) CASE ("Maxwellian") - T = inj%T(i) - CALL initVelDistMaxwellian(inj%v(i)%obj, t, m) + temperature = inj%temperature(i) + CALL initVelDistMaxwellian(inj%v(i)%obj, temperature, m) CASE ("Half-Maxwellian") - T = inj%T(i) - CALL initVelDistHalfMaxwellian(inj%v(i)%obj, t, m) + temperature = inj%temperature(i) + CALL initVelDistHalfMaxwellian(inj%v(i)%obj, temperature, m) CASE ("Delta") v = inj%vMod*inj%n(i) diff --git a/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 b/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 index 97ec729..c0dcfbb 100644 --- a/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 +++ b/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 @@ -1,22 +1,22 @@ MODULE moduleMeshOutput0D CONTAINS - SUBROUTINE printOutput0D(self, t) + SUBROUTINE printOutput0D(self) USE moduleMesh USE moduleRefParam USE moduleSpecies USE moduleOutput + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: i TYPE(outputFormat):: output CHARACTER(:), ALLOCATABLE:: fileName DO i = 1, nSpecies fileName='OUTPUT_' // species(i)%obj%name // '.dat' - IF (t == 0) THEN + IF (timeStep == 0) THEN OPEN(20, file = path // folder // '/' // fileName, action = 'write') WRITE(20, "(A1, 14X, A5, A20, 40X, A20, 2(A20))") "#","t (s)","density (m^-3)", "velocity (m/s)", & "pressure (Pa)", "temperature (K)" @@ -27,14 +27,17 @@ MODULE moduleMeshOutput0D OPEN(20, file = path // folder // '/' // fileName, position = 'append', action = 'write') CALL calculateOutput(self%nodes(1)%obj%output(i), output, self%nodes(1)%obj%v, species(i)%obj) - WRITE(20, "(7(ES20.6E3))") REAL(t)*tauMin*ti_ref, output%density, output%velocity, output%pressure, output%temperature + WRITE(20, "(7(ES20.6E3))") REAL(timeStep)*tauMin*ti_ref, output%density, & + output%velocity, & + output%pressure, & + output%temperature CLOSE(20) END DO END SUBROUTINE printOutput0D - SUBROUTINE printColl0D(self, t) + SUBROUTINE printColl0D(self) USE moduleMesh USE moduleRefParam USE moduleCaseParam @@ -43,12 +46,11 @@ MODULE moduleMeshOutput0D IMPLICIT NONE CLASS(meshGeneric), INTENT(in):: self - INTEGER, INTENT(in):: t CHARACTER(:), ALLOCATABLE:: fileName INTEGER:: k fileName='OUTPUT_Collisions.dat' - IF (t == tInitial) THEN + IF (timeStep == tInitial) THEN OPEN(20, file = path // folder // '/' // fileName, action = 'write') WRITE(20, "(A1, 14X, A5, A20)") "#","t (s)","collisions" WRITE(*, "(6X,A15,A)") "Creating file: ", fileName @@ -57,12 +59,12 @@ MODULE moduleMeshOutput0D END IF OPEN(20, file = path // folder // '/' // fileName, position = 'append', action = 'write') - WRITE(20, "(ES20.6E3, 10I20)") REAL(t)*tauMin*ti_ref, (self%cells(1)%obj%tallyColl(k)%tally, k=1,nCollPairs) + WRITE(20, "(ES20.6E3, 10I20)") REAL(timeStep)*tauMin*ti_ref, (self%cells(1)%obj%tallyColl(k)%tally, k=1,nCollPairs) CLOSE(20) END SUBROUTINE printColl0D - SUBROUTINE printEM0D(self, t) + SUBROUTINE printEM0D(self) USE moduleMesh USE moduleRefParam USE moduleCaseParam @@ -70,7 +72,6 @@ MODULE moduleMeshOutput0D IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t END SUBROUTINE printEM0D diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 index ccdcf3d..8176bb5 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 @@ -80,50 +80,50 @@ MODULE moduleMeshOutputGmsh2 END SUBROUTINE writeGmsh2FooterElementData !Prints the scattered properties of particles into the nodes - SUBROUTINE printOutputGmsh2(self, t) + SUBROUTINE printOutputGmsh2(self) USE moduleMesh USE moduleRefParam USE moduleSpecies USE moduleOutput USE moduleMeshInoutCommon + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: n, i TYPE(outputFormat):: output(1:self%numNodes) REAL(8):: time CHARACTER(:), ALLOCATABLE:: fileName - time = DBLE(t)*tauMin*ti_ref + time = DBLE(timeStep)*tauMin*ti_ref DO i = 1, nSpecies - fileName = formatFileName(prefix, species(i)%obj%name, 'msh', t) + fileName = formatFileName(prefix, species(i)%obj%name, 'msh', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (60, file = path // folder // '/' // fileName) CALL writeGmsh2HeaderMesh(60) - CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' density (m^-3)', t, time, 1, self%numNodes) + CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' density (m^-3)', timeStep, time, 1, self%numNodes) DO n=1, self%numNodes CALL calculateOutput(self%nodes(n)%obj%output(i), output(n), self%nodes(n)%obj%v, species(i)%obj) WRITE(60, "(I6,ES20.6E3)") n, output(n)%density END DO CALL writeGmsh2FooterNodeData(60) - CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' velocity (m s^-1)', t, time, 3, self%numNodes) + CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' velocity (m s^-1)', timeStep, time, 3, self%numNodes) DO n=1, self%numNodes WRITE(60, "(I6,3(ES20.6E3))") n, output(n)%velocity END DO CALL writeGmsh2FooterNodeData(60) - CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' Pressure (Pa)', t, time, 1, self%numNodes) + CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' Pressure (Pa)', timeStep, time, 1, self%numNodes) DO n=1, self%numNodes WRITE(60, "(I6,3(ES20.6E3))") n, output(n)%pressure END DO CALL writeGmsh2FooterNodeData(60) - CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' Temperature (K)', t, time, 1, self%numNodes) + CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' Temperature (K)', timeStep, time, 1, self%numNodes) DO n=1, self%numNodes WRITE(60, "(I6,3(ES20.6E3))") n, output(n)%temperature END DO @@ -135,7 +135,7 @@ MODULE moduleMeshOutputGmsh2 END SUBROUTINE printOutputGmsh2 !Prints the number of collisions into the volumes - SUBROUTINE printCollGmsh2(self, t) + SUBROUTINE printCollGmsh2(self) USE moduleMesh USE moduleRefParam USE moduleCaseParam @@ -145,7 +145,6 @@ MODULE moduleMeshOutputGmsh2 IMPLICIT NONE CLASS(meshGeneric), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: numEdges INTEGER:: k, c INTEGER:: n @@ -167,9 +166,9 @@ MODULE moduleMeshOutputGmsh2 END SELECT IF (collOutput) THEN - time = DBLE(t)*tauMin*ti_ref + time = DBLE(timeStep)*tauMin*ti_ref - fileName = formatFileName(prefix, 'Collisions', 'msh', t) + fileName = formatFileName(prefix, 'Collisions', 'msh', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (60, file = path // folder // '/' // fileName) @@ -179,7 +178,7 @@ MODULE moduleMeshOutputGmsh2 DO c = 1, interactionMatrix(k)%amount WRITE(cString, "(I2)") c title = '"Pair ' // interactionMatrix(k)%sp_i%name // '-' // interactionMatrix(k)%sp_j%name // ' collision ' // cString - CALL writeGmsh2HeaderElementData(60, title, t, time, 1, self%numCells) + CALL writeGmsh2HeaderElementData(60, title, timeStep, time, 1, self%numCells) DO n=1, self%numCells WRITE(60, "(I6,I10)") n + numEdges, self%cells(n)%obj%tallyColl(k)%tally(c) END DO @@ -196,7 +195,7 @@ MODULE moduleMeshOutputGmsh2 END SUBROUTINE printCollGmsh2 !Prints the electrostatic EM properties into the nodes and volumes - SUBROUTINE printEMGmsh2(self, t) + SUBROUTINE printEMGmsh2(self) USE moduleMesh USE moduleRefParam USE moduleCaseParam @@ -205,7 +204,6 @@ MODULE moduleMeshOutputGmsh2 IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: n, e REAL(8):: time CHARACTER(:), ALLOCATABLE:: fileName @@ -214,27 +212,27 @@ MODULE moduleMeshOutputGmsh2 Xi = (/ 0.D0, 0.D0, 0.D0 /) IF (emOutput) THEN - time = DBLE(t)*tauMin*ti_ref + time = DBLE(timeStep)*tauMin*ti_ref - fileName = formatFileName(prefix, 'EMField', 'msh', t) + fileName = formatFileName(prefix, 'EMField', 'msh', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (20, file = path // folder // '/' // fileName) CALL writeGmsh2HeaderMesh(20) - CALL writeGmsh2HeaderNodeData(20, 'Potential (V)', t, time, 1, self%numNodes) + CALL writeGmsh2HeaderNodeData(20, 'Potential (V)', timeStep, time, 1, self%numNodes) DO n=1, self%numNodes WRITE(20, *) n, self%nodes(n)%obj%emData%phi*Volt_ref END DO CALL writeGmsh2FooterNodeData(20) - CALL writeGmsh2HeaderElementData(20, 'Electric Field (V m^-1)', t, time, 3, self%numCells) + CALL writeGmsh2HeaderElementData(20, 'Electric Field (V m^-1)', timeStep, time, 3, self%numCells) DO e=1, self%numCells WRITE(20, *) e+self%numEdges, self%cells(e)%obj%gatherElectricField(Xi)*EF_ref END DO CALL writeGmsh2FooterElementData(20) - CALL writeGmsh2HeaderNodeData(20, 'Magnetic Field (T)', t, time, 3, self%numNodes) + CALL writeGmsh2HeaderNodeData(20, 'Magnetic Field (T)', timeStep, time, 3, self%numNodes) DO n=1, self%numNodes WRITE(20, *) n, self%nodes(n)%obj%emData%B * B_ref END DO diff --git a/src/modules/mesh/inout/moduleMeshInoutCommon.f90 b/src/modules/mesh/inout/moduleMeshInoutCommon.f90 index e4a6c72..7dc2e84 100644 --- a/src/modules/mesh/inout/moduleMeshInoutCommon.f90 +++ b/src/modules/mesh/inout/moduleMeshInoutCommon.f90 @@ -3,17 +3,17 @@ MODULE moduleMeshInoutCommon CHARACTER(LEN=4):: prefix = 'Step' CONTAINS - PURE FUNCTION formatFileName(prefix, suffix, extension, t) RESULT(fileName) + PURE FUNCTION formatFileName(prefix, suffix, extension, timeStep) RESULT(fileName) USE moduleOutput IMPLICIT NONE CHARACTER(*), INTENT(in):: prefix, suffix, extension - INTEGER, INTENT(in), OPTIONAL:: t + INTEGER, INTENT(in), OPTIONAL:: timeStep CHARACTER (LEN=iterationDigits):: tString CHARACTER(:), ALLOCATABLE:: fileName - IF (PRESENT(t)) THEN - WRITE(tString, iterationFormat) t + IF (PRESENT(timeStep)) THEN + WRITE(tString, iterationFormat) timeStep fileName = prefix // '_' // tString // '_' // suffix // '.' // extension ELSE diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index 184d645..e07db01 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -167,7 +167,7 @@ MODULE moduleMeshInputVTU CLASS(meshGeneric), INTENT(inout):: self CHARACTER(:), ALLOCATABLE, INTENT(in):: filename REAL(8):: r(1:3) !3 generic coordinates - INTEGER:: fileID, error, found + INTEGER:: fileID CHARACTER(LEN=256):: line INTEGER:: numNodes, numElements, numEdges INTEGER, ALLOCATABLE, DIMENSION(:):: entitiesID, offsets, connectivity, types diff --git a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 index da90b6b..81e4bbf 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 @@ -215,17 +215,16 @@ MODULE moduleMeshOutputVTU END SUBROUTINE writeEM - SUBROUTINE writeCollection(fileID, t, fileNameStep, fileNameCollection) + SUBROUTINE writeCollection(fileID, fileNameStep, fileNameCollection) USE moduleCaseParam USE moduleOutput USE moduleRefParam IMPLICIT NONE INTEGER:: fileID - INTEGER, INTENT(in):: t CHARACTER(*):: fileNameStep, fileNameCollection - IF (t == tInitial) THEN + IF (timeStep == tInitial) THEN !Create collection file WRITE(*, "(6X,A15,A)") "Creating file: ", fileNameCollection OPEN (fileID + 1, file = path // folder // '/' // fileNameCollection) @@ -237,10 +236,11 @@ MODULE moduleMeshOutputVTU !Write iteration file in collection OPEN (fileID + 1, file = path // folder // '/' // fileNameCollection, ACCESS='APPEND') - WRITE(fileID + 1, "(4X, A, ES20.6E3, A, A, A)") '' + WRITE(fileID + 1, "(4X, A, ES20.6E3, A, A, A)") & + '' !Close collection file - IF (t == tFinal) THEN + IF (timeStep == tFinal) THEN WRITE (fileID + 1, "(2X, A)") '' WRITE (fileID + 1, "(A)") '' @@ -307,21 +307,21 @@ MODULE moduleMeshOutputVTU END SUBROUTINE writeAverage - SUBROUTINE printOutputVTU(self,t) + SUBROUTINE printOutputVTU(self) USE moduleMesh USE moduleSpecies USE moduleMeshInoutCommon + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: i, fileID CHARACTER(:), ALLOCATABLE:: fileName, fileNameCollection fileID = 60 DO i = 1, nSpecies - fileName = formatFileName(prefix, species(i)%obj%name, 'vtu', t) + fileName = formatFileName(prefix, species(i)%obj%name, 'vtu', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (fileID, file = path // folder // '/' // fileName) @@ -337,28 +337,27 @@ MODULE moduleMeshOutputVTU !Write collection file for time plotting fileNameCollection = formatFileName('Collection', species(i)%obj%name, 'pvd') - CALL writeCollection(fileID, t, fileName, filenameCollection) + CALL writeCollection(fileID, fileName, filenameCollection) END DO END SUBROUTINE printOutputVTU - SUBROUTINE printCollVTU(self,t) + SUBROUTINE printCollVTU(self) USE moduleMesh USE moduleOutput USE moduleMeshInoutCommon + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshGeneric), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: fileID CHARACTER(:), ALLOCATABLE:: fileName, fileNameCollection - CHARACTER (LEN=iterationDigits):: tstring fileID = 62 IF (collOutput) THEN - fileName = formatFileName(prefix, 'Collisions', 'vtu', t) + fileName = formatFileName(prefix, 'Collisions', 'vtu', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (fileID, file = path // folder // '/' // fileName) @@ -374,26 +373,26 @@ MODULE moduleMeshOutputVTU !Write collection file for time plotting fileNameCollection = formatFileName('Collection', 'Collisions', 'pvd') - CALL writeCollection(fileID, t, fileName, filenameCollection) + CALL writeCollection(fileID, fileName, filenameCollection) END IF END SUBROUTINE printCollVTU - SUBROUTINE printEMVTU(self, t) + SUBROUTINE printEMVTU(self) USE moduleMesh USE moduleMeshInoutCommon + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: fileID CHARACTER(:), ALLOCATABLE:: fileName, fileNameCollection fileID = 64 IF (emOutput) THEN - fileName = formatFileName(prefix, 'EMField', 'vtu', t) + fileName = formatFileName(prefix, 'EMField', 'vtu', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (fileID, file = path // folder // '/' // fileName) @@ -409,7 +408,7 @@ MODULE moduleMeshOutputVTU !Write collection file for time plotting fileNameCollection = formatFileName('Collection', 'EMField', 'pvd') - CALL writeCollection(fileID, t, fileName, filenameCollection) + CALL writeCollection(fileID, fileName, filenameCollection) END IF diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index ae53aa0..f933dd1 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -372,10 +372,9 @@ MODULE moduleMesh END SUBROUTINE connectMesh_interface !Prints number of collisions in each cell - SUBROUTINE printColl_interface(self, t) + SUBROUTINE printColl_interface(self) IMPORT meshGeneric CLASS(meshGeneric), INTENT(in):: self - INTEGER, INTENT(in):: t END SUBROUTINE printColl_interface @@ -403,18 +402,16 @@ MODULE moduleMesh ABSTRACT INTERFACE !Prints Species data - SUBROUTINE printOutput_interface(self, t) + SUBROUTINE printOutput_interface(self) IMPORT meshParticles CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t END SUBROUTINE printOutput_interface !Prints EM info - SUBROUTINE printEM_interface(self, t) + SUBROUTINE printEM_interface(self) IMPORT meshParticles CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t END SUBROUTINE printEM_interface @@ -789,7 +786,7 @@ MODULE moduleMesh END FUNCTION findCellBrute !Computes collisions in element - SUBROUTINE doCollisions(self, t) + SUBROUTINE doCollisions(self) USE moduleCollisions USE moduleSpecies USE moduleList @@ -797,10 +794,10 @@ MODULE moduleMesh USE moduleRandom USE moduleOutput USE moduleMath + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshGeneric), INTENT(inout), TARGET:: self - INTEGER, INTENT(in):: t INTEGER:: e CLASS(meshCell), POINTER:: cell INTEGER:: k, i, j @@ -816,7 +813,7 @@ MODULE moduleMesh REAL(8):: rnd_real !Random number for collision INTEGER:: rnd_int !Random number for collision - IF (MOD(t, everyColl) == 0) THEN + IF (MOD(timeStep, everyColl) == 0) THEN !Collisions need to be performed in this iteration !$OMP DO SCHEDULE(DYNAMIC) PRIVATE(part_i, part_j, partTemp_i, partTemp_j) DO e=1, self%numCells diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 18c7fbb..5b96be2 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -54,7 +54,7 @@ MODULE moduleInject INTEGER:: id CHARACTER(:), ALLOCATABLE:: name REAL(8):: vMod !Velocity (module) - REAL(8):: T(1:3) !Temperature + REAL(8):: temperature(1:3) !Temperature REAL(8):: n(1:3) !Direction of injection LOGICAL:: fixDirection !The injection of particles has a fix direction defined by n INTEGER:: nParticles !Number of particles to introduce each time step @@ -76,7 +76,7 @@ MODULE moduleInject CONTAINS !Initialize an injection of particles - SUBROUTINE initInject(self, i, v, n, T, flow, units, sp, physicalSurface, particlesPerEdge) + SUBROUTINE initInject(self, i, v, n, temperature, flow, units, sp, physicalSurface, particlesPerEdge) USE moduleMesh USE moduleRefParam USE moduleConstParam @@ -87,7 +87,7 @@ MODULE moduleInject CLASS(injectGeneric), INTENT(inout):: self INTEGER, INTENT(in):: i - REAL(8), INTENT(in):: v, n(1:3), T(1:3) + REAL(8), INTENT(in):: v, n(1:3), temperature(1:3) INTEGER, INTENT(in):: sp, physicalSurface, particlesPerEdge REAL(8):: tauInject REAL(8), INTENT(in):: flow @@ -97,10 +97,10 @@ MODULE moduleInject INTEGER:: nVolColl REAL(8):: fluxPerStep = 0.D0 - self%id = i - self%vMod = v / v_ref - self%n = n / NORM2(n) - self%T = T / T_ref + self%id = i + self%vMod = v / v_ref + self%n = n / NORM2(n) + self%temperature = temperature / T_ref !Gets the edge elements from which particles are injected DO e = 1, mesh%numEdges phSurface(e) = mesh%edges(e)%obj%physicalSurface @@ -232,23 +232,23 @@ MODULE moduleInject END SUBROUTINE doInjects - SUBROUTINE initVelDistMaxwellian(velDist, T, m) + SUBROUTINE initVelDistMaxwellian(velDist, temperature, m) IMPLICIT NONE CLASS(velDistGeneric), ALLOCATABLE, INTENT(out):: velDist - REAL(8), INTENT(in):: T, m + REAL(8), INTENT(in):: temperature, m - velDist = velDistMaxwellian(vTh = DSQRT(T/m)) + velDist = velDistMaxwellian(vTh = DSQRT(temperature/m)) END SUBROUTINE initVelDistMaxwellian - SUBROUTINE initVelDistHalfMaxwellian(velDist, T, m) + SUBROUTINE initVelDistHalfMaxwellian(velDist, temperature, m) IMPLICIT NONE CLASS(velDistGeneric), ALLOCATABLE, INTENT(out):: velDist - REAL(8), INTENT(in):: T, m + REAL(8), INTENT(in):: temperature, m - velDist = velDistHalfMaxwellian(vTh = DSQRT(T/m)) + velDist = velDistHalfMaxwellian(vTh = DSQRT(temperature/m)) END SUBROUTINE initVelDistHalfMaxwellian diff --git a/src/modules/moduleProbe.f90 b/src/modules/moduleProbe.f90 index c29eeda..754d56a 100644 --- a/src/modules/moduleProbe.f90 +++ b/src/modules/moduleProbe.f90 @@ -27,7 +27,7 @@ MODULE moduleProbe CONTAINS !Functions for probeDistFunc type - SUBROUTINE init(self, id, speciesName, r, v1, v2, v3, points, timeStep) + SUBROUTINE init(self, id, speciesName, r, v1, v2, v3, points, everyTimeStep) USE moduleCaseParam USE moduleRefParam USE moduleSpecies @@ -41,7 +41,7 @@ MODULE moduleProbe REAL(8), INTENT(in):: r(1:3) REAL(8), INTENT(in):: v1(1:2), v2(1:2), v3(1:2) INTEGER, INTENT(in):: points(1:3) - REAL(8), INTENT(in):: timeStep + REAL(8), INTENT(in):: everyTimeStep INTEGER:: sp, i REAL(8):: dv(1:3) @@ -91,11 +91,11 @@ MODULE moduleProbe 1:self%nv(3))) !Number of iterations between output - IF (timeStep == 0.D0) THEN + IF (everyTimeStep == 0.D0) THEN self%every = 1 ELSE - self%every = NINT(timeStep/ tauMin / ti_ref) + self%every = NINT(everyTimeStep/ tauMin / ti_ref) END IF @@ -189,13 +189,13 @@ MODULE moduleProbe END SUBROUTINE calculate - SUBROUTINE output(self, t) + SUBROUTINE output(self) USE moduleOutput USE moduleRefParam + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(probeDistFunc), INTENT(inout):: self - INTEGER, INTENT(in):: t CHARACTER (LEN=iterationDigits):: tstring CHARACTER (LEN=3):: pstring CHARACTER(:), ALLOCATABLE:: filename @@ -204,14 +204,14 @@ MODULE moduleProbe !Divide by the velocity cube volume self%f = self%f * self%dvInv - WRITE(tstring, iterationFormat) t + WRITE(tstring, iterationFormat) timeStep WRITE(pstring, "(I3.3)") self%id fileName='Probe_' // tstring// '_f_' // pstring // '.dat' WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (10, file = path // folder // '/' // fileName) WRITE(10, "(A1, 1X, A)") "# ", self%species%name WRITE(10, "(A6, 3(ES15.6E3), A2)") "# r = ", self%r(:)*L_ref, " m" - WRITE(10, "(A6, ES15.6E3, A2)") "# t = ", REAL(t)*tauMin*ti_ref, " s" + WRITE(10, "(A6, ES15.6E3, A2)") "# t = ", REAL(timeStep)*tauMin*ti_ref, " s" WRITE(10, "(A1, A19, 3(A20))") "#", "v1 (m s^-1)", "v2 (m s^-1)", "v3 (m s^-1)", "f" DO i = 1, self%nv(1) DO j = 1, self%nv(2) @@ -252,15 +252,15 @@ MODULE moduleProbe END SUBROUTINE doProbes - SUBROUTINE outputProbes(t) + SUBROUTINE outputProbes() + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE - INTEGER, INTENT(in):: t INTEGER:: i DO i = 1, nProbes IF (probe(i)%update) THEN - CALL probe(i)%output(t) + CALL probe(i)%output() END IF @@ -268,15 +268,15 @@ MODULE moduleProbe END SUBROUTINE outputProbes - SUBROUTINE resetProbes(t) + SUBROUTINE resetProbes() + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE - INTEGER, INTENT(in):: t INTEGER:: i DO i = 1, nProbes probe(i)%f = 0.D0 - probe(i)%update = t == tFinal .OR. t == tInitial .OR. MOD(t, probe(i)%every) == 0 + probe(i)%update = timeStep == tFinal .OR. timeStep == tInitial .OR. MOD(timeStep, probe(i)%every) == 0 END DO diff --git a/src/modules/output/moduleOutput.f90 b/src/modules/output/moduleOutput.f90 index 18fbb7f..e6dc91f 100644 --- a/src/modules/output/moduleOutput.f90 +++ b/src/modules/output/moduleOutput.f90 @@ -160,12 +160,12 @@ MODULE moduleOutput END SUBROUTINE calculateOutput - SUBROUTINE printTime(t, first) + SUBROUTINE printTime(first) USE moduleSpecies USE moduleCompTime + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE - INTEGER, INTENT(in):: t LOGICAL, INTENT(in), OPTIONAL:: first CHARACTER(:), ALLOCATABLE:: fileName @@ -187,7 +187,7 @@ MODULE moduleOutput OPEN(20, file = path // folder // '/' // fileName, position = 'append', action = 'write') - WRITE (20, "(I10, I10, 7(ES20.6E3))") t, nPartOld, tStep, tPush, tReset, tColl, tCoul, tWeight, tEMField + WRITE (20, "(I10, I10, 7(ES20.6E3))") timeStep, nPartOld, tStep, tPush, tReset, tColl, tCoul, tWeight, tEMField CLOSE(20) diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index a141eac..30a23ad 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -1,6 +1,7 @@ !Module to solve the electromagnetic field MODULE moduleEM USE moduleMesh + USE moduleTable IMPLICIT NONE ! Array of pointers to nodes. @@ -11,57 +12,155 @@ MODULE moduleEM END TYPE meshNodePointer - - ! TODO: Make this a derived type. - TYPE:: boundaryEM - CHARACTER(:), ALLOCATABLE:: typeEM - INTEGER:: physicalSurface - REAL(8):: potential + ! Generic type for electromagnetic boundary conditions + TYPE, PUBLIC, ABSTRACT:: boundaryEMGeneric + INTEGER:: nNodes TYPE(meshNodePointer), ALLOCATABLE:: nodes(:) CONTAINS - PROCEDURE, PASS:: apply + PROCEDURE(applyEM_interface), DEFERRED, PASS:: apply !PROCEDURE, PASS:: update !only for time dependent boundary conditions or maybe change apply????? That might be better. - END TYPE boundaryEM + END TYPE boundaryEMGeneric + + ABSTRACT INTERFACE + ! Apply boundary condition to the load vector for the Poission equation + SUBROUTINE applyEM_interface(self, vectorF) + IMPORT boundaryEMGeneric + CLASS(boundaryEMGeneric), INTENT(in):: self + REAL(8), INTENT(inout):: vectorF(:) + + END SUBROUTINE applyEM_interface + + END INTERFACE + + TYPE, EXTENDS(boundaryEMGeneric):: boundaryEMDirichlet + REAL(8):: potential + + CONTAINS + ! boundaryEMGeneric DEFERRED PROCEDURES + PROCEDURE, PASS:: apply => applyDirichlet + + END TYPE boundaryEMDirichlet + + TYPE, EXTENDS(boundaryEMGeneric):: boundaryEMDirichletTime + REAL(8):: potential + TYPE(table1D):: temporalProfile + + CONTAINS + ! boundaryEMGeneric DEFERRED PROCEDURES + PROCEDURE, PASS:: apply => applyDirichletTime + + END TYPE boundaryEMDirichletTime + + ! Container for boundary conditions + TYPE:: boundaryEMCont + CLASS(boundaryEMGeneric), ALLOCATABLE:: obj + + END TYPE boundaryEMCont INTEGER:: nBoundaryEM - TYPE(boundaryEM), ALLOCATABLE:: boundEM(:) + TYPE(boundaryEMCont), ALLOCATABLE:: boundaryEM(:) !Information of charge and reference parameters for rho vector REAL(8), ALLOCATABLE:: qSpecies(:) CONTAINS - !Apply boundary conditions to the K matrix for Poisson's equation - SUBROUTINE apply(self, edge) + ! Initialize Dirichlet boundary condition + SUBROUTINE initDirichlet(self, physicalSurface, potential) + USE moduleMesh + USE moduleRefParam, ONLY: Volt_ref + IMPLICIT NONE + + CLASS(boundaryEMGeneric), ALLOCATABLE, INTENT(out):: self + INTEGER:: physicalSurface + REAL(8), INTENT(in):: potential + CLASS(meshEdge), POINTER:: edge + INTEGER, ALLOCATABLE:: nodes(:), nodesEdge(:) + INTEGER:: nNodes, nodesNew + INTEGER:: e, n + + ! Allocate boundary edge + ALLOCATE(boundaryEMDirichlet:: self) + + SELECT TYPE(self) + TYPE IS(boundaryEMDirichlet) + self%potential = potential / Volt_ref + + !TODO: This is going into a function + !Temporal array to hold nodes + ALLOCATE(nodes(0)) + + ! Loop thorugh the edges and identify those that are part of the boundary + DO e = 1, mesh%numEdges + edge => mesh%edges(e)%obj + IF (edge%physicalSurface == physicalSurface) THEN + ! Edge is of the right boundary index + ! Get nodes in the edge + nNodes = edge%nNodes + nodesEdge = edge%getNodes(nNodes) + ! Collect all nodes that are not already in the temporal array + DO n = 1, nNodes + IF (ANY(nodes == nodesEdge(n))) THEN + ! Node already in array, skip + CYCLE + + ELSE + ! If not, add element to array of nodes + nodes = [nodes, nodesEdge(n)] + + END IF + + END DO + + END IF + + END DO + + ! Point boundary to nodes + nNodes = SIZE(nodes) + ALLOCATE(self%nodes(nNodes)) + DO n = 1, nNodes + self%nodes(n)%obj => mesh%nodes(nodes(n))%obj + + END DO + + END SELECT + + END SUBROUTINE initDirichlet + + !Apply Dirichlet boundary condition to the poisson equation + SUBROUTINE applyDirichlet(self, vectorF) USE moduleMesh IMPLICIT NONE - CLASS(boundaryEM), INTENT(in):: self - CLASS(meshEdge):: edge - INTEGER:: nNodes - INTEGER, ALLOCATABLE:: nodes(:) - INTEGER:: n + CLASS(boundaryEMDirichlet), INTENT(in):: self + REAL(8), INTENT(inout):: vectorF(:) + INTEGER:: n, ni - nNodes = 1 - nNodes = edge%nNodes - nodes = edge%getNodes(nNodes) - - DO n = 1, nNodes - SELECT CASE(self%typeEM) - CASE ("dirichlet") - mesh%K(nodes(n), :) = 0.D0 - mesh%K(nodes(n), nodes(n)) = 1.D0 - - ! TODO: Change this to pointer - mesh%nodes(nodes(n))%obj%emData%type = self%typeEM - mesh%nodes(nodes(n))%obj%emData%phi = self%potential - - END SELECT + DO n = 1, self%nNodes + self%nodes(n)%obj%emData%phi = self%potential END DO - END SUBROUTINE apply + END SUBROUTINE applyDirichlet + + !Apply Dirichlet boundary condition with time temporal profile + SUBROUTINE applyDirichletTime(self, vectorF) + USE moduleMesh + USE moduleCaseParam, ONLY: timeStep, tauMin + IMPLICIT NONE + + CLASS(boundaryEMDirichletTime), INTENT(in):: self + REAL(8), INTENT(inout):: vectorF(:) + INTEGER:: n, ni + + DO n = 1, self%nNodes + self%nodes(n)%obj%emData%phi = self%potential + + END DO + + END SUBROUTINE applyDirichletTime !Assemble the source vector based on the charge density to solve Poisson's equation SUBROUTINE assembleSourceVector(vectorF) @@ -74,13 +173,14 @@ MODULE moduleEM INTEGER, ALLOCATABLE:: nodes(:) REAL(8), ALLOCATABLE:: rho(:) INTEGER:: nNodes - INTEGER:: e, i, ni + INTEGER:: e, i, ni, b CLASS(meshNode), POINTER:: node !$OMP SINGLE vectorF = 0.D0 !$OMP END SINGLE + ! Calculate charge density in each node !$OMP DO REDUCTION(+:vectorF) DO e = 1, mesh%numCells nNodes = mesh%cells(e)%obj%nNodes @@ -112,18 +212,12 @@ MODULE moduleEM !$OMP END DO !Apply boundary conditions - !$OMP DO - DO i = 1, mesh%numNodes - node => mesh%nodes(i)%obj - - SELECT CASE(node%emData%type) - CASE ("dirichlet") - vectorF(i) = node%emData%phi - - END SELECT + !$OMP SINGLE + DO b = 1, nBoundaryEM + CALL boundaryEM(b)%obj%apply(vectorF) END DO - !$OMP END DO + !$OMP END SINGLE END SUBROUTINE assembleSourceVector diff --git a/src/modules/solver/moduleSolver.f90 b/src/modules/solver/moduleSolver.f90 index 0b2837f..5928508 100644 --- a/src/modules/solver/moduleSolver.f90 +++ b/src/modules/solver/moduleSolver.f90 @@ -491,47 +491,46 @@ MODULE moduleSolver END SUBROUTINE updateParticleCell !Update the information about if a species needs to be moved this iteration - SUBROUTINE updatePushSpecies(self, t) + SUBROUTINE updatePushSpecies(self) USE moduleSpecies + USE moduleCaseparam, ONLY: timeStep IMPLICIT NONE CLASS(solverGeneric), INTENT(inout):: self - INTEGER, INTENT(in):: t INTEGER:: s DO s=1, nSpecies - self%pusher(s)%pushSpecies = MOD(t, self%pusher(s)%every) == 0 + self%pusher(s)%pushSpecies = MOD(timeStep, self%pusher(s)%every) == 0 END DO END SUBROUTINE updatePushSpecies !Output the different data and information - SUBROUTINE doOutput(t) + SUBROUTINE doOutput() USE moduleMesh USE moduleOutput USE moduleSpecies USE moduleCompTime USE moduleProbe + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE - INTEGER, INTENT(in):: t - - CALL outputProbes(t) + CALL outputProbes() counterOutput = counterOutput + 1 IF (counterOutput >= triggerOutput .OR. & - t == tFinal .OR. t == tInitial) THEN + timeStep == tFinal .OR. timeStep == tInitial) THEN !Resets output counter counterOutput=0 - CALL mesh%printOutput(t) - IF (ASSOCIATED(meshForMCC)) CALL meshForMCC%printColl(t) - CALL mesh%printEM(t) - WRITE(*, "(5X,A21,I10,A1,I10)") "t/tFinal: ", t, "/", tFinal + CALL mesh%printOutput() + IF (ASSOCIATED(meshForMCC)) CALL meshForMCC%printColl() + CALL mesh%printEM() + WRITE(*, "(5X,A21,I10,A1,I10)") "t/tFinal: ", timeStep, "/", tFinal WRITE(*, "(5X,A21,I10)") "Particles: ", nPartOld - IF (t == 0) THEN + IF (timeStep == 0) THEN WRITE(*, "(5X,A21,F8.1,A2)") " init time: ", 1.D3*tStep, "ms" ELSE @@ -549,34 +548,32 @@ MODULE moduleSolver counterCPUTime = counterCPUTime + 1 IF (counterCPUTime >= triggerCPUTime .OR. & - t == tFinal .OR. t == tInitial) THEN + timeStep == tFinal .OR. timeStep == tInitial) THEN !Reset CPU Time counter counterCPUTime = 0 - CALL printTime(t, t == 0) + CALL printTime(timeStep == 0) END IF !Output average values - IF (useAverage .AND. t == tFinal) THEN + IF (useAverage .AND. timeStep == tFinal) THEN CALL mesh%printAverage() END IF END SUBROUTINE doOutput - SUBROUTINE doAverage(t) + SUBROUTINE doAverage() USE moduleAverage USE moduleMesh IMPLICIT NONE - INTEGER, INTENT(in):: t INTEGER:: tAverage, n - IF (useAverage) THEN - tAverage = t - tAverageStart + tAverage = timeStep - tAverageStart IF (tAverage == 1) THEN !First iteration in which average scheme is used From 10dee05922e17d72258fbd432ed1c689f08571ba Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 12 Jul 2024 23:30:35 +0200 Subject: [PATCH 49/84] NOT WORKING: Compilation okay, but not Dirichlet BC The code compiles but the right BC is not being applied to the vectorF. I'll check this tomorrow. --- src/modules/init/moduleInput.f90 | 12 +- .../solver/electromagnetic/moduleEM.f90 | 126 ++++++++++++------ 2 files changed, 92 insertions(+), 46 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 6800ac1..eea1937 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -1148,8 +1148,8 @@ MODULE moduleInput CHARACTER(:), ALLOCATABLE:: typeEM REAL(8):: potential INTEGER:: physicalSurface - CHARACTER(:), ALLOCATABLE:: timeProfile - INTEGER:: b, e, s, n, ni + CHARACTER(:), ALLOCATABLE:: temporalProfile + INTEGER:: b, s, n, ni CHARACTER(2):: bString INTEGER:: info EXTERNAL:: dgetrf @@ -1187,12 +1187,20 @@ MODULE moduleInput END IF + CALL config%get(object // '.temporalProfile', temporalProfile, found) + IF (.NOT. found) THEN + CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') + + END IF + CALL config%get(object // '.physicalSurface', physicalSurface, found) IF (.NOT. found) THEN CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') END IF + CALL initDirichletTime(boundaryEM(b)%obj, physicalSurface, potential, temporalProfile) + CASE DEFAULT CALL criticalError('Boundary type ' // typeEM // ' not yet supported', 'readEMBoundary') diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index 30a23ad..b480330 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -66,20 +66,65 @@ MODULE moduleEM REAL(8), ALLOCATABLE:: qSpecies(:) CONTAINS - ! Initialize Dirichlet boundary condition - SUBROUTINE initDirichlet(self, physicalSurface, potential) + SUBROUTINE findNodes(self, physicalSurface) USE moduleMesh - USE moduleRefParam, ONLY: Volt_ref IMPLICIT NONE - CLASS(boundaryEMGeneric), ALLOCATABLE, INTENT(out):: self - INTEGER:: physicalSurface - REAL(8), INTENT(in):: potential + CLASS(boundaryEMGeneric), INTENT(inout):: self + INTEGER, INTENT(in):: physicalSurface CLASS(meshEdge), POINTER:: edge INTEGER, ALLOCATABLE:: nodes(:), nodesEdge(:) INTEGER:: nNodes, nodesNew INTEGER:: e, n + !Temporal array to hold nodes + ALLOCATE(nodes(0)) + + ! Loop thorugh the edges and identify those that are part of the boundary + DO e = 1, mesh%numEdges + edge => mesh%edges(e)%obj + IF (edge%physicalSurface == physicalSurface) THEN + ! Edge is of the right boundary index + ! Get nodes in the edge + nNodes = edge%nNodes + nodesEdge = edge%getNodes(nNodes) + ! Collect all nodes that are not already in the temporal array + DO n = 1, nNodes + IF (ANY(nodes == nodesEdge(n))) THEN + ! Node already in array, skip + CYCLE + + ELSE + ! If not, add element to array of nodes + nodes = [nodes, nodesEdge(n)] + + END IF + + END DO + + END IF + + END DO + + ! Point boundary to nodes + nNodes = SIZE(nodes) + ALLOCATE(self%nodes(nNodes)) + DO n = 1, nNodes + self%nodes(n)%obj => mesh%nodes(nodes(n))%obj + + END DO + + END SUBROUTINE findNodes + + ! Initialize Dirichlet boundary condition + SUBROUTINE initDirichlet(self, physicalSurface, potential) + USE moduleRefParam, ONLY: Volt_ref + IMPLICIT NONE + + CLASS(boundaryEMGeneric), ALLOCATABLE, INTENT(out):: self + INTEGER, INTENT(in):: physicalSurface + REAL(8), INTENT(in):: potential + ! Allocate boundary edge ALLOCATE(boundaryEMDirichlet:: self) @@ -87,48 +132,39 @@ MODULE moduleEM TYPE IS(boundaryEMDirichlet) self%potential = potential / Volt_ref - !TODO: This is going into a function - !Temporal array to hold nodes - ALLOCATE(nodes(0)) - - ! Loop thorugh the edges and identify those that are part of the boundary - DO e = 1, mesh%numEdges - edge => mesh%edges(e)%obj - IF (edge%physicalSurface == physicalSurface) THEN - ! Edge is of the right boundary index - ! Get nodes in the edge - nNodes = edge%nNodes - nodesEdge = edge%getNodes(nNodes) - ! Collect all nodes that are not already in the temporal array - DO n = 1, nNodes - IF (ANY(nodes == nodesEdge(n))) THEN - ! Node already in array, skip - CYCLE - - ELSE - ! If not, add element to array of nodes - nodes = [nodes, nodesEdge(n)] - - END IF - - END DO - - END IF - - END DO - - ! Point boundary to nodes - nNodes = SIZE(nodes) - ALLOCATE(self%nodes(nNodes)) - DO n = 1, nNodes - self%nodes(n)%obj => mesh%nodes(nodes(n))%obj - - END DO + CALL findNodes(self, physicalSurface) END SELECT END SUBROUTINE initDirichlet + ! Initialize Dirichlet boundary condition + SUBROUTINE initDirichletTime(self, physicalSurface, potential, temporalProfile) + USE moduleRefParam, ONLY: Volt_ref, ti_ref + IMPLICIT NONE + + CLASS(boundaryEMGeneric), ALLOCATABLE, INTENT(out):: self + INTEGER, INTENT(in):: physicalSurface + REAL(8), INTENT(in):: potential + CHARACTER(:), ALLOCATABLE, INTENT(in):: temporalProfile + + ! Allocate boundary edge + ALLOCATE(boundaryEMDirichletTime:: self) + + SELECT TYPE(self) + TYPE IS(boundaryEMDirichletTime) + self%potential = potential / Volt_ref + + CALL findNodes(self, physicalSurface) + + CALL self%temporalProfile%init(temporalProfile) + + CALL self%temporalProfile%convert(1.D0/ti_ref, 1.D0) + + END SELECT + + END SUBROUTINE initDirichletTime + !Apply Dirichlet boundary condition to the poisson equation SUBROUTINE applyDirichlet(self, vectorF) USE moduleMesh @@ -140,6 +176,7 @@ MODULE moduleEM DO n = 1, self%nNodes self%nodes(n)%obj%emData%phi = self%potential + vectorF(self%nodes(n)%obj%n) = self%nodes(n)%obj%emData%phi END DO @@ -156,7 +193,8 @@ MODULE moduleEM INTEGER:: n, ni DO n = 1, self%nNodes - self%nodes(n)%obj%emData%phi = self%potential + self%nodes(n)%obj%emData%phi = self%potential !TODO: Correct for time + vectorF(self%nodes(n)%obj%n) = self%nodes(n)%obj%emData%phi END DO From 2d4b405fb10f203b72a456871ac7bba26c328c1c Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 13 Jul 2024 12:06:41 +0200 Subject: [PATCH 50/84] Functionality added Now we have a new boundary condition that can change the value of the potential in a surface based on a file. --- src/modules/init/moduleInput.f90 | 25 ++++++++++++------- .../solver/electromagnetic/moduleEM.f90 | 7 ++++-- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index eea1937..b5f6881 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -1137,7 +1137,6 @@ MODULE moduleInput USE moduleOutput USE moduleErrors USE moduleEM - USE moduleRefParam USE moduleSpecies USE json_module IMPLICIT NONE @@ -1148,7 +1147,7 @@ MODULE moduleInput CHARACTER(:), ALLOCATABLE:: typeEM REAL(8):: potential INTEGER:: physicalSurface - CHARACTER(:), ALLOCATABLE:: temporalProfile + CHARACTER(:), ALLOCATABLE:: temporalProfile, temporalProfilePath INTEGER:: b, s, n, ni CHARACTER(2):: bString INTEGER:: info @@ -1156,11 +1155,14 @@ MODULE moduleInput CALL config%info('boundaryEM', found, n_children = nBoundaryEM) - IF (found) ALLOCATE(boundaryEM(1:nBoundaryEM)) + IF (found) THEN + ALLOCATE(boundaryEM(1:nBoundaryEM)) + + END IF DO b = 1, nBoundaryEM WRITE(bString, '(I2)') b - object = 'boundaryEM(' // trim(bString) // ')' + object = 'boundaryEM(' // TRIM(bString) // ')' CALL config%get(object // '.type', typeEM, found) @@ -1174,7 +1176,8 @@ MODULE moduleInput CALL config%get(object // '.physicalSurface', physicalSurface, found) IF (.NOT. found) THEN - CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') + CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', & + 'readEMBoundary') END IF @@ -1183,23 +1186,27 @@ MODULE moduleInput CASE ("dirichletTime") CALL config%get(object // '.potential', potential, found) IF (.NOT. found) THEN - CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') + CALL criticalError('Required parameter "potential" for Dirichlet Time boundary condition not found', & + 'readEMBoundary') END IF CALL config%get(object // '.temporalProfile', temporalProfile, found) IF (.NOT. found) THEN - CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') + CALL criticalError('Required parameter "temporalProfile" for Dirichlet Time boundary condition not found', & + 'readEMBoundary') END IF + temporalProfilePath = path // temporalProfile CALL config%get(object // '.physicalSurface', physicalSurface, found) IF (.NOT. found) THEN - CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') + CALL criticalError('Required parameter "physicalSurface" for Dirichlet Time boundary condition not found', & + 'readEMBoundary') END IF - CALL initDirichletTime(boundaryEM(b)%obj, physicalSurface, potential, temporalProfile) + CALL initDirichletTime(boundaryEM(b)%obj, physicalSurface, potential, temporalProfilePath) CASE DEFAULT CALL criticalError('Boundary type ' // typeEM // ' not yet supported', 'readEMBoundary') diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index b480330..703b31c 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -109,6 +109,7 @@ MODULE moduleEM ! Point boundary to nodes nNodes = SIZE(nodes) ALLOCATE(self%nodes(nNodes)) + self%nNodes = nNodes DO n = 1, nNodes self%nodes(n)%obj => mesh%nodes(nodes(n))%obj @@ -190,10 +191,13 @@ MODULE moduleEM CLASS(boundaryEMDirichletTime), INTENT(in):: self REAL(8), INTENT(inout):: vectorF(:) + REAL(8):: timeFactor INTEGER:: n, ni + timeFactor = self%temporalProfile%get(DBLE(timeStep)*tauMin) + DO n = 1, self%nNodes - self%nodes(n)%obj%emData%phi = self%potential !TODO: Correct for time + self%nodes(n)%obj%emData%phi = self%potential * timeFactor vectorF(self%nodes(n)%obj%n) = self%nodes(n)%obj%emData%phi END DO @@ -274,7 +278,6 @@ MODULE moduleEM ALLOCATE(tempF(1:mesh%numNodes)) !$OMP END SINGLE - !TODO: Is this done every time step??? Then things are gonna be really simple. CALL assembleSourceVector(tempF) !$OMP SINGLE From e4dfba45f8c109748bed005549fd540183543a70 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 13 Jul 2024 12:13:39 +0200 Subject: [PATCH 51/84] Manual updated New dirichletTime condition is documented. --- doc/user-manual/fpakc_UserManual.pdf | Bin 186195 -> 187186 bytes doc/user-manual/fpakc_UserManual.tex | 18 +++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index ef1494ac62b3a07c882225d34ac2998d565ae727..1666f42de4b56c9b9e049349df1126da6f6f973f 100644 GIT binary patch delta 23768 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 BX|MnQ delta 22743 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�ROsR%jeE-0^P7;y1mUrPre6LOZ?-mUxyFYN8H zsUGV|;X1<)WHfVcq_)Eg)FK1xf#H(CzaVg0Mgt!B-~T_^fcHiK0;u5{N%(U_dJn1`RkXfq?zV2hiY zgu}pC#=+5W2=?LsAs7J$V+lq;U|44nP!zTo;3zD?NXY-)2iX6QhCrCGynsL5^(6hz4{;jqa={naYBMHtpkHV5IB|)Bn*UMF~A2xVkwA(L$SPt zM4@!7!=>pdtSBj3H3(fR0EE4S@?G*oVOg%yxv%HAbf5UOXh*keUZ-o6jd;fC+jKb`ezzPXPVJZ!Sp}_wNZ(4aL9tj$b zc^eW1Mq-%(0UYwZbLnS0Iy96Kv0>U%{ z=o^^L91I2i!Q=x$pqM2C+y|5Rmka(A1b~RZZ2ACA0`>>vMV3Oarw!1JvCl%m*k^(1 zh2bqQ2nqwEv4lY3m~I6a5lC!4Bm|p=LSWHgAgu8Ufv;i(efMHmI5fCIs z@C4CVc_IPC5K~V8S70_OkObo5)0;nghy)S~F95?Gt0F-XNaSBS{Wm3m_6^7MI0*1K zRw6@yo{p(B1Ofjy%DGSq43a=$gdd;6VwX$^Q{15CDn)dlvoQ zlmO;CrWZgc@PCE}aQwfO3qTUAcp`xA@OO^=a~~8F|A8-{F@}O@fC%)0KQ#nH;6NY8 zpdp|j><){9VS-WMJ~(zr0051FD*!%V1aSQyApYArz=J^h!w?L>1bl4+sYOIEG-L z?ZVQi-{R2ngqy|GS zqJ0taf5jXE#ws}gQG)*CD!>VUy8wIvGcmdh;1&rGMjZltSaA8m1(0i69~ zp}YtJa3Kti6*wSnSb@73Lw{NaD2T*dhk*Nl4{847yP#pVMnFLXE+}nx7>^eHKRk*2 zA6`RZCm00Sy)b1#fkuo)1A>o119IuF9&+QKC;$@~3z2~V{DgTJ$p8N#7=}vgdWT1s zMm+==g@qr$P$X7^0%+L%3D|+L90*h^W`6?1z*wUIm}q~Ef`4rT01>No1F#ws%m76L z#Tt@8zrbt>z}y7=iTp3J2uPwol)lI<;Eeg21XFp z3IouvRv2KLf?#a}01>;2fdPw^Kk$qC1^)ZDf^ZNV6Z8O2b65}n$g;mf@(=Vw0cD3d zb%DtJFB(=A1Kz@VQUY|wf{0)MQvB&b0Q!O9a4hHt(6GBDfVHub3y!sh0C9(6jSMgx ziCI~|l!JpYp&tkiFk-tJfM6J|h5+S@(PjW=A+Qq@c42Ax8H~Cu#3M>J_@&W>@ z0Rw`uIzI>jEc%$90nEViAV32Q`Okp;r?CNO0rQmw@C<Il#Yfw^e|G+w^ z;I#vT4+I#DnJmDoCt%+H-S^+w2waG@L0-_X3ldoVG2#gzaKPCZ3PJ!Bjgid&g2C)8 z7qbz_Q%ptx(qp}Bfl+YmszU)^P{I%l20r${C~ZInHaZ1X1TZMA<^vuL8i8pLuoe7w zeEt2<0MM}N2m*rr_2m0ce+S-nv2+4xSoS~=e?KMuQv|?9CV}-f2}MG%XaE$%cwhqd zNg&5CdNeSvfe>Oi2mmO58V3{s7)TSWhf)A|V1*S9uwi-&Xi-?p5dsj6#RniQ%*X&U z34v7v7vC+zWR!paAO2xj0s+*<$)P#`H0@-VPGFyfH1(*Iu$6Eay@ cGItLPHxC~-8(T79lmPE6Wc>WfH&w{~A3jogl>h($ diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index 13be4cd..e572331 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -585,12 +585,20 @@ make Type of boundary. Accepted values are: \begin{itemize} - \item \textbf{dirichlet}: Elastic reflection of particles. + \item \textbf{dirichlet}: Constant value of electric potential on the surface. + \item \textbf{dirichletTime}: Constant value of the electric potential with a time variable profile. + The value of \textbf{boundaryEM.potential} will be multiplied for the corresponding value in the file \textbf{boundaryEM.temporalProfile}. \end{itemize} - \item \textbf{potential}: Real. - Fixed potential for Dirichlet boundary condition. + \item \textbf{potential}: Real. + Fixed potential for Dirichlet boundary condition. \item \textbf{physicalSurface}: Integer. Identification of the edge in the mesh file. + \item \textbf{temporalProfile}: Character. + Filename of the 2 column file containing the time variable profile. + File must be located in \textbf{output.path}. + The first column is the time in $\unit{s}$. + The second column is the factor that will multiply the value of the boundary. + \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -611,7 +619,7 @@ make \begin{itemize} \item \textbf{A}: Ampere. \item \textbf{Am2}: Ampere per square meter. - This value will be multiplied by the surface of injection. + This value will be multiplied by the area of injection. \item \textbf{sccm}: Standard cubic centimetre. \item \textbf{part/s}: Particles (real) per second. \end{itemize} @@ -717,7 +725,7 @@ make Output file from previous run used as an initial state for the species. The file format must be the same as in \textbf{geometry.meshType} Initial particles are assumed to have a Maxwellian distribution. - File must be located at \textbf{output.path}. + File must be located in \textbf{output.path}. \item \textbf{particlesPerCell}: Integer. Optional. Initial number of particles per cell. From 6f185c418846a518a1afb338e71ab3204b869188 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 13 Jul 2024 12:35:42 +0200 Subject: [PATCH 52/84] Organizing things Move the array of pointers to the nodes to moduleMesh. --- src/modules/mesh/moduleMesh.f90 | 7 +++++++ src/modules/solver/electromagnetic/moduleEM.f90 | 8 -------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index f933dd1..7ab3914 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -59,6 +59,13 @@ MODULE moduleMesh END TYPE meshNodeCont + ! Array of pointers to nodes. + TYPE:: meshNodePointer + CLASS(meshNode), POINTER:: obj + CONTAINS + + END TYPE meshNodePointer + !Type for array of boundary functions (one per species) TYPE, PUBLIC:: fBoundaryGeneric PROCEDURE(boundary_interface), POINTER, NOPASS:: apply => NULL() diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index 703b31c..126f9a6 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -4,14 +4,6 @@ MODULE moduleEM USE moduleTable IMPLICIT NONE - ! Array of pointers to nodes. - !TODO: This is probably better in moduleMesh as multiple modules could use this. - TYPE:: meshNodePointer - CLASS(meshNode), POINTER:: obj - CONTAINS - - END TYPE meshNodePointer - ! Generic type for electromagnetic boundary conditions TYPE, PUBLIC, ABSTRACT:: boundaryEMGeneric INTEGER:: nNodes From 98ee3e9c9c38ec6d461c50268a44a99912c8eb70 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Mon, 30 Sep 2024 17:06:25 +0200 Subject: [PATCH 53/84] Still not working, but will be fixed I have the solution in the plasma expansion code, but I need to do other stuff. --- src/modules/moduleInject.f90 | 3 +- .../solver/electromagnetic/moduleEM.f90 | 50 +++++++++---------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 4e57083..496ea6a 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -108,7 +108,8 @@ MODULE moduleInject CASE ("A") !Input current in Ampers - self%nParticles = INT(flow*tauInject*ti_ref/(qe*species(sp)%obj%weight)) + ! TODO: Make this only available for charge species + self%nParticles = INT(flow*tauInject*ti_ref/(qe*abs(species(sp)%obj%qm*species(sp)%obj%m)*species(sp)%obj%weight)) CASE ("part/s") !Input current in Ampers diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index 0f02bed..a8a5323 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -46,7 +46,7 @@ MODULE moduleEM END DO - END SUBROUTINE + END SUBROUTINE apply !Assemble the source vector based on the charge density to solve Poisson's equation SUBROUTINE assembleSourceVector(vectorF, n_e) @@ -169,25 +169,16 @@ MODULE moduleEM INTEGER, INTENT(in):: n REAL(8), INTENT(in):: phi(1:n) REAL(8):: n_e(1:n) - REAL(8):: n_e0 = 1.0D16, phi_0 = -520.0D0, T_e = 11604.0 + REAL(8):: n_e0 = 1.0D16, phi_0 = -500.0D0, T_e = 11604.0 INTEGER:: i - DO i =1, n - IF (phi(i)*Volt_ref >= phi_0) THEN - n_e(i) = n_e0 / n_ref * EXP(-qe * (phi(i)*Volt_ref - phi_0) / (kb * T_e)) - - ELSE - n_e(i) = 0.D0 - - END IF - - END DO + n_e = n_e0 / n_ref * exp(qe * (phi*Volt_ref - phi_0) / (kb * T_e)) RETURN END FUNCTION BoltzmannElectron - SUBROUTINE solveElecFieldBoltzmann + SUBROUTINE solveElecFieldBoltzmann() USE moduleMesh USE moduleErrors IMPLICIT NONE @@ -195,7 +186,7 @@ MODULE moduleEM INTEGER, SAVE:: INFO INTEGER:: n REAL(8), ALLOCATABLE, SAVE:: tempF(:) - REAL(8), ALLOCATABLE, SAVE:: n_e(:), phi_old(:) + REAL(8), ALLOCATABLE, SAVE:: n_e(:), phi_old(:), phi(:) INTEGER:: k EXTERNAL:: dgetrs @@ -203,22 +194,29 @@ MODULE moduleEM ALLOCATE(tempF(1:mesh%numNodes)) ALLOCATE(n_e(1:mesh%numNodes)) ALLOCATE(phi_old(1:mesh%numNodes)) - n_e = 0.D0 - CALL assembleSourceVector(tempF, n_e) - + ALLOCATE(phi(1:mesh%numNodes)) !$OMP END SINGLE + !$OMP DO + DO n = 1, mesh%numNodes + phi_old(n) = mesh%nodes(n)%obj%emData%phi + + END DO + !$OMP END DO + !$OMP SINGLE - DO k = 1, 10 - phi_old = tempF + DO k = 1, 100 + n_e = BoltzmannElectron(phi_old, mesh%numNodes) + CALL assembleSourceVector(tempF, n_e) + CALL dgetrs('N', mesh%numNodes, 1, mesh%K, mesh%numNodes, & mesh%IPIV, tempF, mesh%numNodes, info) + phi = tempF - PRINT *, MAXVAL(n_e), MINVAL(n_e) - PRINT *, MAXVAL(tempF), MINVAL(tempF) - PRINT*, k, "diff = ", MAXVAL(ABS(tempF - phi_old)) - n_e = BoltzmannElectron(tempF, mesh%numNodes) - CALL assembleSourceVector(tempF, n_e) + PRINT *, MAXVAL(n_e), MINVAL(n_e) + PRINT *, MAXVAL(phi), MINVAL(phi) + PRINT*, k, "diff = ", MAXVAL(ABS(phi - phi_old)) + phi_old = phi END DO !$OMP END SINGLE @@ -227,7 +225,7 @@ MODULE moduleEM !Suscessful resolution of Poission equation !$OMP DO DO n = 1, mesh%numNodes - mesh%nodes(n)%obj%emData%phi = tempF(n) + mesh%nodes(n)%obj%emData%phi = phi_old(n) END DO !$OMP END DO @@ -240,7 +238,7 @@ MODULE moduleEM END IF !$OMP SINGLE - DEALLOCATE(tempF, n_e, phi_old) + DEALLOCATE(tempF, n_e, phi_old, phi) !$OMP END SINGLE END SUBROUTINE solveElecFieldBoltzmann From 2af10acd70850359cf6bfa3fcf1828885271cced Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Sun, 13 Oct 2024 13:32:57 +0200 Subject: [PATCH 54/84] Issue with injecting current Values were not right in 1D geometry. Fixed. --- src/modules/mesh/1DCart/moduleMesh1DCart.f90 | 2 +- src/modules/mesh/1DRad/moduleMesh1DRad.f90 | 2 +- src/modules/moduleInject.f90 | 19 +++++++++++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 index f400ab0..bbc72e2 100644 --- a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 +++ b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 @@ -123,7 +123,7 @@ MODULE moduleMesh1DCart self%x = r1(1) - self%surface = 1.D0 / L_ref**2 + self%surface = 1.D0 self%normal = (/ 1.D0, 0.D0, 0.D0 /) diff --git a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 index fd617bd..e260900 100644 --- a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 +++ b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 @@ -123,7 +123,7 @@ MODULE moduleMesh1DRad self%r = r1(1) - self%surface = 1.D0 / L_ref**2 + self%surface = 1.D0 self%normal = (/ 1.D0, 0.D0, 0.D0 /) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 18c7fbb..4f4d23c 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -159,11 +159,26 @@ MODULE moduleInject CASE ("A") !Current in Ampers - fluxPerStep = flow/qe + SELECT TYPE(sp => self%species) + CLASS IS(speciesCharged) + fluxPerStep = flow/(qe*abs(sp%q)) + + CLASS DEFAULT + call criticalError('Attempted to assign a flux in "A" to a species without charge.', 'initInject') + + END SELECT CASE ("Am2") !Input current in Ampers per square meter - fluxPerStep = flow*self%surface*L_ref**2/qe + SELECT TYPE(sp => self%species) + CLASS IS(speciesCharged) + fluxPerStep = flow*self%surface*L_ref**2/(qe*abs(sp%q)) + + CLASS DEFAULT + call criticalError('Attempted to assign a flux in "Am2" to a species without charge.', 'initInject') + + END SELECT + CASE ("part/s") !Input current in Ampers From d28dd16c2e14c42c0ce712b05f33ecbf6a1afd01 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 17 Jul 2025 18:34:11 +0200 Subject: [PATCH 55/84] Average fix and data for Xe --- data/collisions/IO_e-Xe.dat | 52 ++++++++++++++++++++++++++++++++ src/modules/init/moduleInput.f90 | 6 +++- 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 data/collisions/IO_e-Xe.dat diff --git a/data/collisions/IO_e-Xe.dat b/data/collisions/IO_e-Xe.dat new file mode 100644 index 0000000..3067578 --- /dev/null +++ b/data/collisions/IO_e-Xe.dat @@ -0,0 +1,52 @@ +# EL cross sections extracted from PROGRAM MAGBOLTZ, VERSION 7.1 JUNE 2004 www.lxcat.net/Biagi-v7.1 +# Relative energy (eV) cross section (m^2) +1.21E+01 0 +1.41E+01 3.923E-21 +1.64E+01 1.194E-20 +1.91E+01 2.1E-20 +2.22E+01 2.946E-20 +2.58E+01 3.65E-20 +3.00E+01 4.185E-20 +3.49E+01 4.552E-20 +4.06E+01 4.766E-20 +4.72E+01 4.85E-20 +5.49E+01 4.828E-20 +6.39E+01 5.031E-20 +7.43E+01 5.1E-20 +8.64E+01 5.1E-20 +1.01E+02 5.032E-20 +1.17E+02 4.906E-20 +1.36E+02 4.732E-20 +1.58E+02 4.521E-20 +1.84E+02 4.283E-20 +2.14E+02 4.029E-20 +2.49E+02 3.764E-20 +2.90E+02 3.497E-20 +3.37E+02 3.233E-20 +3.92E+02 2.975E-20 +4.56E+02 2.726E-20 +5.31E+02 2.489E-20 +6.17E+02 2.266E-20 +7.18E+02 2.056E-20 +8.35E+02 1.861E-20 +9.72E+02 1.68E-20 +1.13E+03 1.514E-20 +1.32E+03 1.361E-20 +1.53E+03 1.221E-20 +1.78E+03 1.094E-20 +2.07E+03 9.781E-21 +2.41E+03 8.735E-21 +2.80E+03 7.789E-21 +3.26E+03 6.938E-21 +3.79E+03 6.171E-21 +4.41E+03 5.484E-21 +5.13E+03 4.868E-21 +5.97E+03 4.316E-21 +6.94E+03 3.824E-21 +8.07E+03 3.385E-21 +9.39E+03 2.994E-21 +1.09E+04 2.646E-21 +1.27E+04 2.336E-21 +1.48E+04 2.062E-21 +1.72E+04 1.818E-21 +2.00E+04 1.602E-21 diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 5090942..18c6e65 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -1331,6 +1331,7 @@ MODULE moduleInput USE moduleCaseParam, ONLY: tauMin USE moduleMesh, ONLY: mesh USE moduleSpecies, ONLY: nSpecies + USE moduleRefParam, ONLY: ti_ref IMPLICIT NONE TYPE(json_file), INTENT(inout):: config @@ -1344,8 +1345,11 @@ MODULE moduleInput CALL config%get('average.startTime', tStart, found) IF (found) THEN - tAverageStart = INT(tStart / tauMin) + tAverageStart = INT(tStart / ti_ref / tauMin) + ELSE + tAverageStart = 0 + END IF ALLOCATE(averageScheme(1:mesh%numNodes)) From a2f9957f32219725485e77a03a7475854d96a213 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 18 Jul 2025 16:31:52 +0200 Subject: [PATCH 56/84] I am dumb The Poisson equation was not working because I didn't finish implementing the new type of BCs. Dirichlet is probably untested. I should stop doing shitty developments and no testing. --- src/modules/output/moduleOutput.f90 | 1 - .../solver/electromagnetic/moduleEM.f90 | 33 ++++++++----------- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/src/modules/output/moduleOutput.f90 b/src/modules/output/moduleOutput.f90 index e6dc91f..2af3c70 100644 --- a/src/modules/output/moduleOutput.f90 +++ b/src/modules/output/moduleOutput.f90 @@ -22,7 +22,6 @@ MODULE moduleOutput !Type for EM data in node TYPE emNode - CHARACTER(:), ALLOCATABLE:: type REAL(8):: phi REAL(8):: B(1:3) diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index 740fd14..7f6891c 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -11,7 +11,6 @@ MODULE moduleEM CONTAINS PROCEDURE(applyEM_interface), DEFERRED, PASS:: apply - !PROCEDURE, PASS:: update !only for time dependent boundary conditions or maybe change apply????? That might be better. END TYPE boundaryEMGeneric @@ -168,8 +167,8 @@ MODULE moduleEM INTEGER:: n, ni DO n = 1, self%nNodes - self%nodes(n)%obj%emData%phi = self%potential - vectorF(self%nodes(n)%obj%n) = self%nodes(n)%obj%emData%phi + self%nodes(n)%obj%emData%phi = self%potential + vectorF(self%nodes(n)%obj%n) = self%nodes(n)%obj%emData%phi END DO @@ -189,8 +188,8 @@ MODULE moduleEM timeFactor = self%temporalProfile%get(DBLE(timeStep)*tauMin) DO n = 1, self%nNodes - self%nodes(n)%obj%emData%phi = self%potential * timeFactor - vectorF(self%nodes(n)%obj%n) = self%nodes(n)%obj%emData%phi + self%nodes(n)%obj%emData%phi = self%potential * timeFactor + vectorF(self%nodes(n)%obj%n) = self%nodes(n)%obj%emData%phi END DO @@ -211,11 +210,11 @@ MODULE moduleEM INTEGER:: e, i, ni, b CLASS(meshNode), POINTER:: node - ! !$OMP SINGLE + !$OMP SINGLE vectorF = 0.D0 - ! !$OMP END SINGLE + !$OMP END SINGLE - ! !$OMP DO REDUCTION(+:vectorF) + !$OMP DO REDUCTION(+:vectorF) DO e = 1, mesh%numCells nNodes = mesh%cells(e)%obj%nNodes nodes = mesh%cells(e)%obj%getNodes(nNodes) @@ -247,21 +246,15 @@ MODULE moduleEM DEALLOCATE(nodes, rho) END DO - ! !$OMP END DO + !$OMP END DO !Apply boundary conditions - ! !$OMP DO - DO i = 1, mesh%numNodes - node => mesh%nodes(i)%obj + !$OMP SINGLE + do b = 1, nBoundaryEM + call boundaryEM(b)%obj%apply(vectorF) - SELECT CASE(node%emData%type) - CASE ("dirichlet") - vectorF(i) = node%emData%phi - - END SELECT - - END DO - ! !$OMP END DO + end do + !$OMP END SINGLE END SUBROUTINE assembleSourceVector From 69215ef66d52557f84232c8ffedd906d0cb2bc90 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez - Galactica Date: Tue, 22 Jul 2025 19:52:39 +0200 Subject: [PATCH 57/84] Change in calculating ionization I don't know why I normalizing density n_0 by Vol_ref and not n_ref --- src/modules/moduleBoundary.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/moduleBoundary.f90 b/src/modules/moduleBoundary.f90 index 0b76105..b5bda2f 100644 --- a/src/modules/moduleBoundary.f90 +++ b/src/modules/moduleBoundary.f90 @@ -126,7 +126,7 @@ MODULE moduleBoundary SELECT TYPE(boundary) TYPE IS(boundaryIonization) boundary%m0 = m0 / m_ref - boundary%n0 = n0 * Vol_ref + boundary%n0 = n0 / n_ref boundary%v0 = v0 / v_ref boundary%vTh = DSQRT(kb*T0/m0)/v_ref boundary%species => species(ion)%obj From 7f73b69dc2f42933344d75e887a63a76697e9c89 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 27 Jul 2025 17:14:38 +0200 Subject: [PATCH 58/84] Fix injection Half-Maxwellian distribution should inject particles correctly --- src/modules/common/moduleRandom.f90 | 17 +++++++++++++++++ src/modules/moduleInject.f90 | 5 +---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index ae5c548..7d9cec6 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -66,6 +66,23 @@ MODULE moduleRandom END FUNCTION randomMaxwellian + !Returns a random number in a Maxwellian distribution of mean 0 and width 1 + FUNCTION randomHalfMaxwellian() RESULT(rnd) + IMPLICIT NONE + + REAL(8):: rnd + REAL(8):: x + + rnd = 0.D0 + x = 0.D0 + DO WHILE (x == 0.D0) + CALL RANDOM_NUMBER(x) + END DO + + rnd = DSQRT(-DLOG(x)) + + END FUNCTION randomHalfMaxwellian + !Returns a random number weighted with the cumWeight array FUNCTION randomWeighted(cumWeight, sumWeight) RESULT(rnd) IMPLICIT NONE diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index b4e0ed2..b6fc64b 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -298,10 +298,7 @@ MODULE moduleInject REAL(8):: v v = 0.D0 - DO WHILE (v <= 0.D0) - v = self%vTh*randomMaxwellian() - - END DO + v = self%vTh*randomHalfMaxwellian() END FUNCTION randomVelHalfMaxwellian From 8e531ede08bea0d68863279b17d459fa155b1aaa Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 27 Jul 2025 17:16:57 +0200 Subject: [PATCH 59/84] Vol_ref was the right answer --- src/modules/moduleBoundary.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/moduleBoundary.f90 b/src/modules/moduleBoundary.f90 index b5bda2f..0b76105 100644 --- a/src/modules/moduleBoundary.f90 +++ b/src/modules/moduleBoundary.f90 @@ -126,7 +126,7 @@ MODULE moduleBoundary SELECT TYPE(boundary) TYPE IS(boundaryIonization) boundary%m0 = m0 / m_ref - boundary%n0 = n0 / n_ref + boundary%n0 = n0 * Vol_ref boundary%v0 = v0 / v_ref boundary%vTh = DSQRT(kb*T0/m0)/v_ref boundary%species => species(ion)%obj From d1e73297eb9f51a6586c78e07bb53dc39ed8c4ea Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 27 Jul 2025 18:17:01 +0200 Subject: [PATCH 60/84] Adjust flux when no particlesPerEdge is used This does not affects the cases of the IEPC, but I am also doing other stuff. --- src/modules/moduleInject.f90 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index b6fc64b..000823e 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -199,17 +199,21 @@ MODULE moduleInject END DO + self%nParticles = SUM(self%particlesPerEdge) + ELSE ! No particles assigned per edge, use the species weight self%weightPerEdge = self%species%weight DO et = 1, self%nEdges - self%particlesPerEdge(et) = FLOOR(fluxPerStep*mesh%edges(self%edges(et))%obj%surface /self%species%weight) - + self%particlesPerEdge(et) = max(1,FLOOR(fluxPerStep*mesh%edges(self%edges(et))%obj%surface / self%species%weight)) END DO - END IF + self%nParticles = SUM(self%particlesPerEdge) - self%nParticles = SUM(self%particlesPerEdge) + !Rescale weight to match flux + self%weightPerEdge = fluxPerStep * self%surface / (real(self%nParticles)) + + END IF !Scale particles for different species steps IF (self%nParticles == 0) CALL criticalError("The number of particles for inject is 0.", 'initInject') From 78cb9a245335ce68720c5f3e13cf97c7ccc0139c Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez - Galactica Date: Sat, 2 Aug 2025 10:31:06 +0200 Subject: [PATCH 61/84] No reflection of particles at injection, that should be a boundary condition --- src/modules/moduleInject.f90 | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 000823e..4fb855a 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -385,12 +385,6 @@ MODULE moduleInject self%v(2)%obj%randomVel(), & self%v(3)%obj%randomVel() /) - !If velocity is not in the right direction, invert it - IF (DOT_PRODUCT(direction, partInj(n)%v) < 0.D0) THEN - partInj(n)%v = - partInj(n)%v - - END IF - !Obtain natural coordinates of particle in cell partInj(n)%Xi = mesh%cells(partInj(n)%cell)%obj%phy2log(partInj(n)%r) !Push new particle with the minimum time step From 4b040c35c39064c0832dbc6631dc99b2385ed263 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 2 Aug 2025 13:25:48 +0200 Subject: [PATCH 62/84] Fixes to random variables After reading some works and reviewing what I had, I've done some corrections to how the randomb velicities in Maxwellian distributions are calculated. These should be correct now. --- src/modules/common/moduleRandom.f90 | 19 ++++++++++--------- src/modules/moduleInject.f90 | 4 ++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index 7d9cec6..156f5e4 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -47,22 +47,23 @@ MODULE moduleRandom END FUNCTION randomIntAB - !Returns a random number in a Maxwellian distribution of mean 0 and width 1 + !Returns a random number in a Maxwellian distribution of mean 0 and width 1 with the Box-Muller Method FUNCTION randomMaxwellian() RESULT(rnd) USE moduleConstParam, ONLY: PI IMPLICIT NONE REAL(8):: rnd - REAL(8):: x, y + REAL(8):: v1, v2, Rsquare - rnd = 0.D0 - x = 0.D0 - DO WHILE (x == 0.D0) - CALL RANDOM_NUMBER(x) - END DO - CALL RANDOM_NUMBER(y) + Rsquare = 1.D0 + do while (Rsquare >= 1.D0 .and. Rsquare > 0.D0) + v1 = 2.D0 * random() - 1.D0 + v2 = 2.D0 * random() - 1.D0 + Rsquare = v1**2 + v2**2 - rnd = DSQRT(-2.D0*DLOG(x))*DCOS(2.D0*PI*y) + end do + + rnd = v2 * sqrt(-2.D0 * log(Rsquare) / Rsquare) END FUNCTION randomMaxwellian diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 4fb855a..5e72835 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -289,7 +289,7 @@ MODULE moduleInject REAL(8):: v v = 0.D0 - v = self%vTh*randomMaxwellian() + v = sqrt(2.0)*self%vTh*randomMaxwellian() END FUNCTION randomVelMaxwellian @@ -302,7 +302,7 @@ MODULE moduleInject REAL(8):: v v = 0.D0 - v = self%vTh*randomHalfMaxwellian() + v = sqrt(2.0)*self%vTh*randomHalfMaxwellian() END FUNCTION randomVelHalfMaxwellian From d86c8480f3cc772bd7bac19c4eb3e921a86fe32d Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez - Galactica Date: Sat, 2 Aug 2025 16:51:00 +0200 Subject: [PATCH 63/84] Fixed issue with some velocities. Still, at some point I need to rething all the injection thing. --- src/modules/moduleInject.f90 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 5e72835..2a2c393 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -385,6 +385,13 @@ MODULE moduleInject self%v(2)%obj%randomVel(), & self%v(3)%obj%randomVel() /) + !If injecting a no-drift distribution and velocity is negative, reflect + if ((self%vMod == 0.D0) .and. & + (dot_product(direction, partInj(n)%v) < 0.D0)) then + partInj(n)%v = - partInj(n)%v + + end if + !Obtain natural coordinates of particle in cell partInj(n)%Xi = mesh%cells(partInj(n)%cell)%obj%phy2log(partInj(n)%r) !Push new particle with the minimum time step From 7e193b9fa8133a105326c4e96c5f1b32779ebcb8 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 3 Aug 2025 15:32:55 +0200 Subject: [PATCH 64/84] Minor changes, no improvement made yet --- src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 2 ++ src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 4 ++-- src/modules/solver/moduleSolver.f90 | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index dbc8b25..c7308bf 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -701,6 +701,8 @@ MODULE moduleMesh2DCart pDer(2, 1:2) = (/ DOT_PRODUCT(dPsi(1,1:3),self%y(1:3)), & DOT_PRODUCT(dPsi(2,1:3),self%y(1:3)) /) + pDer(3,3) = 1.D0 + END FUNCTION partialDerTria !Gather electric field at position Xi diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index ae1eb92..bb94440 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -705,8 +705,8 @@ MODULE moduleMesh2DCyl dPsi = 0.D0 - dPsi(1,:) = (/ -1.D0, 1.D0, 0.D0 /) - dPsi(2,:) = (/ -1.D0, 0.D0, 1.D0 /) + dPsi(1,1:3) = (/ -1.D0, 1.D0, 0.D0 /) + dPsi(2,1:3) = (/ -1.D0, 0.D0, 1.D0 /) END FUNCTION dPsiTria diff --git a/src/modules/solver/moduleSolver.f90 b/src/modules/solver/moduleSolver.f90 index f85d812..df8d5e8 100644 --- a/src/modules/solver/moduleSolver.f90 +++ b/src/modules/solver/moduleSolver.f90 @@ -140,6 +140,7 @@ MODULE moduleSolver CASE('ElectrostaticBoltzmann') self%solveEM => solveElecFieldBoltzmann + END SELECT END SUBROUTINE initEM From 102fd013f3d30f39b425806bd1968d9d233de7b7 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 3 Aug 2025 20:46:12 +0200 Subject: [PATCH 65/84] Issue with triangles fixed Now they give the right electric field. I have to change 2DCyl. However, there was some insonsistency between the change of coordinates in phy2log and the Jacobian for the K matrix. I fixed it putting a transpose() in phy2log, but I don't like that solution. I need to review the basic procedure of phy2log. --- src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index c7308bf..eb834e5 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -520,7 +520,7 @@ MODULE moduleMesh2DCart fPsi = self%fPsi(XiO, 4) f(1:2) = (/ DOT_PRODUCT(fPsi,self%x), & DOT_PRODUCT(fPsi,self%y) /) - r(1:2) - Xi = XiO - MATMUL(invJ, f)/detJ + Xi = XiO - MATMUL(transpose(invJ), f)/detJ conv = MAXVAL(DABS(Xi-XiO),1) XiO = Xi @@ -831,14 +831,14 @@ MODULE moduleMesh2DCart REAL(8):: deltaR(1:3) REAL(8):: dPsi(1:3, 1:3) REAL(8):: pDer(1:3, 1:3) - REAL(8):: invJ(1:3, 1:3), detJ + REAL(8):: invJ(1:3, 1:3), detJ !Direct method to convert coordinates Xi = 0.D0 deltaR = (/ r(1) - self%x(1), r(2) - self%y(1), 0.D0 /) dPsi = self%dPsi(Xi, 3) pDer = self%partialDer(3, dPsi) - invJ = self%invJac(pDer) + invJ = transpose(self%invJac(pDer)) detJ = self%detJac(pDer) Xi = MATMUL(invJ,deltaR)/detJ @@ -915,8 +915,8 @@ MODULE moduleMesh2DCart invJ = 0.D0 - invJ(1, 1:2) = (/ pDer(2,2), -pDer(1,2) /) - invJ(2, 1:2) = (/ -pDer(2,1), pDer(1,1) /) + invJ(1, 1:2) = (/ pDer(2,2), -pDer(2,1) /) + invJ(2, 1:2) = (/ -pDer(1,2), pDer(1,1) /) invJ(3, 3) = 1.D0 END FUNCTION invJ2DCart From 3d7b1ce476a804d45fce35fbcb7a20d64c6d3186 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 3 Aug 2025 22:14:19 +0200 Subject: [PATCH 66/84] Fixed! So it seems that rectangles and triangles are now working properly. I have also checked the phy2log routine, now it seems a bit more complicated, but it is much clearer. Maybe in the future is worth rethinking to improve speed (specially for quad elements) --- src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 58 ++++++++++---------- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 56 ++++++++++--------- 2 files changed, 58 insertions(+), 56 deletions(-) diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index eb834e5..126d40c 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -495,34 +495,36 @@ MODULE moduleMesh2DCart END FUNCTION insideQuad - !Transform physical coordinates to element coordinates + !Transform physical coordinates to element coordinates with a Taylor series PURE FUNCTION phy2logQuad(self,r) RESULT(Xi) IMPLICIT NONE CLASS(meshCell2DCartQuad), INTENT(in):: self REAL(8), INTENT(in):: r(1:3) REAL(8):: Xi(1:3) - REAL(8):: XiO(1:3), detJ, invJ(1:3,1:3), f(1:3) + REAL(8):: Xi0(1:3), detJ, pDerInv(1:2,1:2), deltaR(1:2), x0(1:2) REAL(8):: dPsi(1:3,1:4), fPsi(1:4) REAL(8):: pDer(1:3, 1:3) REAL(8):: conv !Iterative newton method to transform coordinates - conv = 1.D0 - XiO = 0.D0 + conv = 1.D0 + Xi0 = 0.D0 + Xi(3) = 0.D0 - f(3) = 0.D0 DO WHILE(conv > 1.D-4) - dPsi = self%dPsi(XiO, 4) - pDer = self%partialDer(4, dPsi) - detJ = self%detJac(pDer) - invJ = self%invJac(pDer) - fPsi = self%fPsi(XiO, 4) - f(1:2) = (/ DOT_PRODUCT(fPsi,self%x), & - DOT_PRODUCT(fPsi,self%y) /) - r(1:2) - Xi = XiO - MATMUL(transpose(invJ), f)/detJ - conv = MAXVAL(DABS(Xi-XiO),1) - XiO = Xi + fPsi = self%fPsi(Xi0, 4) + x0(1) = dot_product(fPsi, self%x) + x0(2) = dot_product(fPsi, self%y) + deltaR = r(1:2) - x0 + dPsi = self%dPsi(Xi0, 4) + pDer = self%partialDer(4, dPsi) + detJ = self%detJac(pDer) + pDerInv(1,1:2) = (/ pDer(2,2), -pDer(1,2) /) + pDerInv(2,1:2) = (/ -pDer(2,1), pDer(1,1) /) + Xi(1:2) = Xi0(1:2) + MATMUL(pDerInv, deltaR)/detJ + conv = MAXVAL(DABS(Xi(1:2)-Xi0(1:2)),1) + Xi0(1:2) = Xi(1:2) END DO @@ -680,8 +682,8 @@ MODULE moduleMesh2DCart dPsi = 0.D0 - dPsi(1,:) = (/ -1.D0, 1.D0, 0.D0 /) - dPsi(2,:) = (/ -1.D0, 0.D0, 1.D0 /) + dPsi(1,1:3) = (/ -1.D0, 1.D0, 0.D0 /) + dPsi(2,1:3) = (/ -1.D0, 0.D0, 1.D0 /) END FUNCTION dPsiTria @@ -701,8 +703,6 @@ MODULE moduleMesh2DCart pDer(2, 1:2) = (/ DOT_PRODUCT(dPsi(1,1:3),self%y(1:3)), & DOT_PRODUCT(dPsi(2,1:3),self%y(1:3)) /) - pDer(3,3) = 1.D0 - END FUNCTION partialDerTria !Gather electric field at position Xi @@ -828,19 +828,19 @@ MODULE moduleMesh2DCart CLASS(meshCell2DCartTria), INTENT(in):: self REAL(8), INTENT(in):: r(1:3) REAL(8):: Xi(1:3) - REAL(8):: deltaR(1:3) - REAL(8):: dPsi(1:3, 1:3) + REAL(8):: detJ, pDerInv(1:2,1:2), deltaR(1:2) + REAL(8):: dPsi(1:3,1:4) REAL(8):: pDer(1:3, 1:3) - REAL(8):: invJ(1:3, 1:3), detJ !Direct method to convert coordinates - Xi = 0.D0 - deltaR = (/ r(1) - self%x(1), r(2) - self%y(1), 0.D0 /) - dPsi = self%dPsi(Xi, 3) - pDer = self%partialDer(3, dPsi) - invJ = transpose(self%invJac(pDer)) - detJ = self%detJac(pDer) - Xi = MATMUL(invJ,deltaR)/detJ + Xi(3) = 0.D0 + deltaR = (/ r(1) - self%x(1), r(2) - self%y(1) /) + dPsi = self%dPsi(Xi, 3) + pDer = self%partialDer(3, dPsi) + detJ = self%detJac(pDer) + pDerInv(1,1:2) = (/ pDer(2,2), -pDer(1,2) /) + pDerInv(2,1:2) = (/ -pDer(2,1), pDer(1,1) /) + Xi(1:2) = MATMUL(pDerInv,deltaR)/detJ END FUNCTION phy2logTria diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index bb94440..1f5f33c 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -510,34 +510,36 @@ MODULE moduleMesh2DCyl END FUNCTION insideQuad - !Transform physical coordinates to element coordinates + !Transform physical coordinates to element coordinates with a Taylor series PURE FUNCTION phy2logQuad(self,r) RESULT(Xi) IMPLICIT NONE CLASS(meshCell2DCylQuad), INTENT(in):: self REAL(8), INTENT(in):: r(1:3) REAL(8):: Xi(1:3) - REAL(8):: XiO(1:3), detJ, invJ(1:3,1:3), f(1:3) + REAL(8):: Xi0(1:3), detJ, pDerInv(1:2,1:2), deltaR(1:2), x0(1:2) REAL(8):: dPsi(1:3,1:4), fPsi(1:4) REAL(8):: pDer(1:3, 1:3) REAL(8):: conv !Iterative newton method to transform coordinates - conv = 1.D0 - XiO = 0.D0 + conv = 1.D0 + Xi0 = 0.D0 + Xi(3) = 0.D0 - f(3) = 0.D0 DO WHILE(conv > 1.D-4) - dPsi = self%dPsi(XiO, 4) - pDer = self%partialDer(4, dPsi) - detJ = self%detJac(pDer) - invJ = self%invJac(pDer) - fPsi = self%fPsi(XiO, 4) - f(1:2) = (/ DOT_PRODUCT(fPsi,self%z), & - DOT_PRODUCT(fPsi,self%r) /) - r(1:2) - Xi = XiO - MATMUL(invJ, f)/detJ - conv = MAXVAL(DABS(Xi-XiO),1) - XiO = Xi + fPsi = self%fPsi(Xi0, 4) + x0(1) = dot_product(fPsi, self%z) + x0(2) = dot_product(fPsi, self%r) + deltaR = r(1:2) - x0 + dPsi = self%dPsi(Xi0, 4) + pDer = self%partialDer(4, dPsi) + detJ = self%detJac(pDer) + pDerInv(1,1:2) = (/ pDer(2,2), -pDer(1,2) /) + pDerInv(2,1:2) = (/ -pDer(2,1), pDer(1,1) /) + Xi(1:2) = Xi0(1:2) + MATMUL(pDerInv, deltaR)/detJ + conv = MAXVAL(DABS(Xi(1:2)-Xi0(1:2)),1) + Xi0(1:2) = Xi(1:2) END DO @@ -858,19 +860,19 @@ MODULE moduleMesh2DCyl CLASS(meshCell2DCylTria), INTENT(in):: self REAL(8), INTENT(in):: r(1:3) REAL(8):: Xi(1:3) - REAL(8):: deltaR(1:3) - REAL(8):: dPsi(1:3, 1:3) + REAL(8):: detJ, pDerInv(1:2,1:2), deltaR(1:2) + REAL(8):: dPsi(1:3,1:4) REAL(8):: pDer(1:3, 1:3) - REAL(8):: invJ(1:3, 1:3), detJ !Direct method to convert coordinates - Xi = 0.D0 - deltaR = (/ r(1) - self%z(1), r(2) - self%r(1), 0.D0 /) - dPsi = self%dPsi(Xi, 3) - pDer = self%partialDer(3, dPsi) - invJ = self%invJac(pDer) - detJ = self%detJac(pDer) - Xi = MATMUL(invJ,deltaR)/detJ + Xi(3) = 0.D0 + deltaR = (/ r(1) - self%z(1), r(2) - self%r(1) /) + dPsi = self%dPsi(Xi, 3) + pDer = self%partialDer(3, dPsi) + detJ = self%detJac(pDer) + pDerInv(1,1:2) = (/ pDer(2,2), -pDer(1,2) /) + pDerInv(2,1:2) = (/ -pDer(2,1), pDer(1,1) /) + Xi(1:2) = MATMUL(pDerInv,deltaR)/detJ END FUNCTION phy2logTria @@ -948,8 +950,8 @@ MODULE moduleMesh2DCyl invJ = 0.D0 - invJ(1, 1:2) = (/ pDer(2,2), -pDer(1,2) /) - invJ(2, 1:2) = (/ -pDer(2,1), pDer(1,1) /) + invJ(1, 1:2) = (/ pDer(2,2), -pDer(2,1) /) + invJ(2, 1:2) = (/ -pDer(1,2), pDer(1,1) /) invJ(3, 3) = 1.D0 END FUNCTION invJ2DCyl From 5166a650d28a65524800cbfc81a0127a20b248de Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 6 Aug 2025 10:59:03 +0200 Subject: [PATCH 67/84] Data for Kr, just to test --- data/collisions/IO_e-Kr.dat | 52 +++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 data/collisions/IO_e-Kr.dat diff --git a/data/collisions/IO_e-Kr.dat b/data/collisions/IO_e-Kr.dat new file mode 100644 index 0000000..532ca4d --- /dev/null +++ b/data/collisions/IO_e-Kr.dat @@ -0,0 +1,52 @@ +# D108525 "refs": {"B56": {"note": "CLM-R294 (1989)"}} +# Relative energy (eV) cross section (m^2) +1.40E+01 0 +1.62E+01 7.249E-21 +1.88E+01 1.199E-20 +2.18E+01 1.644E-20 +2.53E+01 2.1E-20 +2.94E+01 2.542E-20 +3.41E+01 2.937E-20 +3.95E+01 3.26E-20 +4.58E+01 3.499E-20 +5.32E+01 3.653E-20 +6.17E+01 3.726E-20 +7.15E+01 3.728E-20 +8.29E+01 3.671E-20 +9.62E+01 3.566E-20 +1.12E+02 3.426E-20 +1.29E+02 3.259E-20 +1.50E+02 3.075E-20 +1.74E+02 2.881E-20 +2.02E+02 2.682E-20 +2.34E+02 2.484E-20 +2.72E+02 2.289E-20 +3.15E+02 2.101E-20 +3.65E+02 1.922E-20 +4.24E+02 1.751E-20 +4.91E+02 1.592E-20 +5.70E+02 1.443E-20 +6.61E+02 1.305E-20 +7.67E+02 1.177E-20 +8.89E+02 1.06E-20 +1.03E+03 9.526E-21 +1.20E+03 8.547E-21 +1.39E+03 7.658E-21 +1.61E+03 6.851E-21 +1.87E+03 6.121E-21 +2.16E+03 5.462E-21 +2.51E+03 4.868E-21 +2.91E+03 4.334E-21 +3.38E+03 3.855E-21 +3.92E+03 3.426E-21 +4.54E+03 3.041E-21 +5.27E+03 2.698E-21 +6.11E+03 2.391E-21 +7.09E+03 2.118E-21 +8.22E+03 1.875E-21 +9.53E+03 1.658E-21 +1.11E+04 1.466E-21 +1.28E+04 1.295E-21 +1.49E+04 1.143E-21 +1.72E+04 1.009E-21 +2.00E+04 8.898E-22 From dff9a87f0d5c39b74076f81537f6313457d9207a Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 8 Aug 2025 19:27:27 +0200 Subject: [PATCH 68/84] Implemenint injecting particles without direction I was almost sure this was implemented in the past, but it was not working. Now, if n = 0 or if n is not provided, particles are injected with the normal to the surface. --- src/modules/moduleInject.f90 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 2a2c393..528cb91 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -377,7 +377,13 @@ MODULE moduleInject !Assign particle type partInj(n)%species => self%species - direction = self%n + if (all(self%n == 0.D0)) then + direction = randomEdge%normal + + else + direction = self%n + + end if partInj(n)%v = 0.D0 From 9d789ef7a67eb9e444abe4c822ca03ff2a5307e1 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 24 Sep 2025 19:33:25 +0200 Subject: [PATCH 69/84] Add citation file I think it follows the standard. --- CITATION.cff | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 CITATION.cff diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..18cd6d7 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,50 @@ +# This CITATION.cff file was generated with cffinit. +# Visit https://bit.ly/cffinit to generate yours today! + +cff-version: 1.2.0 +title: Finite element Particle Kinetic Code +message: >- + If you use this software, please cite it using the + metadata from this file. +type: software +authors: + - given-names: Jorge + family-names: Gonzalez + email: jorge.gonzalez@upm.es + affiliation: Universidad Politécnica de Madrid + orcid: 'https://orcid.org/0000-0001-7905-5001' +repository-code: 'https://gitlab.com/JorgeGonz/fpakc' +abstract: >- + Welcome to fpakc (Finite element PArticle Kinetic Code), a + modern object oriented Fortran open-source code for + particle simulations of plasma and gases. This code works + by simulating charged and neutral particles, following + their trajectories, collisions and boundary conditions + imposed by the user. + + One of our aims is to make a code easy to maintain as well + as easy to use by a variety of reserchers and students. + + This code is currenlty in very early steps of development. + + The code aims to be easy to maintain and easy to use, + allowing its application from complex problems to easy + examples that can be used, for example, as teaching + exercises. + + Parallelization techniques such as OpenMP, MPI will be + used to distribute the cpu load. We aim to make fpakc GPU + compatible in the future. + + The codefpakc makes use of finite elements to generate + meshes in complex geometries. Particle properties are + deposited in the nodes and cells of the mesh. The + electromagnetic field, with the boundary conditions + imposed by the user, is solved also in this mesh. +keywords: + - particle-in-cell + - plasma + - finite elements +license: GPL-3.0 +version: beta +date-released: '2025-10-01' From 55e062a9efe5766b628e89f894b187911f1d7a9b Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 11 Oct 2025 14:00:16 +0200 Subject: [PATCH 70/84] Fixed issue with volume in triangles The right value in 2D Cartesian is used for calculating the volume. --- src/modules/init/moduleInput.f90 | 4 ++-- src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 18c6e65..9a8ace6 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -968,9 +968,9 @@ MODULE moduleInput !Read the 0D mesh CALL mesh%readMesh(pathMeshParticle) - !Get the volumne + !Get the volume CALL config%get(object // '.volume', volume, found) - !Rescale the volumne + !Rescale the volume IF (found) THEN mesh%cells(1)%obj%volume = mesh%cells(1)%obj%volume*volume / Vol_ref mesh%nodes(1)%obj%v = mesh%cells(1)%obj%volume diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index 126d40c..dcd2128 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -577,7 +577,7 @@ MODULE moduleMesh2DCart fPsi = self%fPsi(Xi, 4) !Compute total volume of the cell - self%volume = detJ*4.D0/L_ref + self%volume = detJ*4.D0 !Compute volume per node self%n1%v = self%n1%v + fPsi(1)*self%volume self%n2%v = self%n2%v + fPsi(2)*self%volume From 9f9bacca7cc06adf790dc4902775480ad742e840 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Mon, 19 Jan 2026 14:48:06 +0100 Subject: [PATCH 71/84] Skeleton implementation of text mesh for simple 1D cases. --- src/makefile | 1 + src/modules/init/moduleInput.f90 | 15 ++++ src/modules/mesh/inout/makefile | 5 +- src/modules/mesh/inout/text/makefile | 7 ++ .../mesh/inout/text/moduleMeshInputText.f90 | 85 +++++++++++++++++++ .../mesh/inout/text/moduleMeshOutputText.f90 | 67 +++++++++++++++ 6 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 src/modules/mesh/inout/text/makefile create mode 100644 src/modules/mesh/inout/text/moduleMeshInputText.f90 create mode 100644 src/modules/mesh/inout/text/moduleMeshOutputText.f90 diff --git a/src/makefile b/src/makefile index 247c7d2..83cf8db 100644 --- a/src/makefile +++ b/src/makefile @@ -9,6 +9,7 @@ OBJECTS = $(OBJDIR)/moduleMesh.o $(OBJDIR)/moduleMeshBoundary.o $(OBJDIR)/module $(OBJDIR)/moduleMeshInputVTU.o $(OBJDIR)/moduleMeshOutputVTU.o \ $(OBJDIR)/moduleMeshInputGmsh2.o $(OBJDIR)/moduleMeshOutputGmsh2.o \ $(OBJDIR)/moduleMeshInput0D.o $(OBJDIR)/moduleMeshOutput0D.o \ + $(OBJDIR)/moduleMeshInputText.o $(OBJDIR)/moduleMeshOutputText.o \ $(OBJDIR)/moduleMesh3DCart.o \ $(OBJDIR)/moduleMesh2DCyl.o \ $(OBJDIR)/moduleMesh2DCart.o \ diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 9a8ace6..74da279 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -910,6 +910,7 @@ MODULE moduleInput USE moduleMeshInputGmsh2, ONLY: initGmsh2 USE moduleMeshInputVTU, ONLY: initVTU USE moduleMeshInput0D, ONLY: init0D + USE moduleMeshInputText, ONLY: initText USE moduleMesh3DCart USE moduleMesh2DCyl USE moduleMesh2DCart @@ -1058,6 +1059,20 @@ MODULE moduleInput END IF + case ("text") + !Check if the geometry is right. + if (mesh%dimen /= 1) then + call criticalError("Text mesh is only allowed for 1D geometries", 'readGeometry') + + end if + + !Read the mesh + call initText(mesh) + if (doubleMesh) then + call initText(meshColl) + + end if + CASE DEFAULT CALL criticalError('Mesh format ' // meshFormat // ' not defined.', 'readGeometry') diff --git a/src/modules/mesh/inout/makefile b/src/modules/mesh/inout/makefile index a93161d..1b8883d 100644 --- a/src/modules/mesh/inout/makefile +++ b/src/modules/mesh/inout/makefile @@ -1,4 +1,4 @@ -all: vtu.o gmsh2.o 0D.o +all: vtu.o gmsh2.o 0D.o text.o vtu.o: moduleMeshInoutCommon.o $(MAKE) -C vtu all @@ -9,5 +9,8 @@ gmsh2.o: 0D.o: $(MAKE) -C 0D all +text.o: + $(MAKE) -C text all + %.o: %.f90 $(FC) $(FCFLAGS) -c $< -o $(OBJDIR)/$@ diff --git a/src/modules/mesh/inout/text/makefile b/src/modules/mesh/inout/text/makefile new file mode 100644 index 0000000..26d0f10 --- /dev/null +++ b/src/modules/mesh/inout/text/makefile @@ -0,0 +1,7 @@ +all: moduleMeshInputText.o moduleMeshOutputText.o + +moduleMeshInputText.o: moduleMeshOutputText.o moduleMeshInputText.f90 + $(FC) $(FCFLAGS) -c $(subst .o,.f90,$@) -o $(OBJDIR)/$@ + +%.o: %.f90 + $(FC) $(FCFLAGS) -c $< -o $(OBJDIR)/$@ diff --git a/src/modules/mesh/inout/text/moduleMeshInputText.f90 b/src/modules/mesh/inout/text/moduleMeshInputText.f90 new file mode 100644 index 0000000..4e29d03 --- /dev/null +++ b/src/modules/mesh/inout/text/moduleMeshInputText.f90 @@ -0,0 +1,85 @@ +module moduleMeshInputText + !The mesh is stored as a column-wise text file. + !Aimed for simple geometries in 1D + + contains + !Inits the text mesh + subroutine initText(self) + use moduleMesh + use moduleMeshOutputText + implicit none + + class(meshGeneric), intent(inout), target:: self + + if (associated(meshForMCC,self)) then + self%printColl => printCollText + + end if + + select type(self) + type is (meshParticles) + self%printOutput => printOutputText + self%printEM => printEMText + self%printAverage => printAverageText + + self%readInitial => readInitialText + + end select + + self%readMesh => readText + + end subroutine initText + + !Reads the text mesh + subroutine readText(self, filename) + use moduleMesh + use moduleMesh1DCart + use moduleMesh1DRad + use moduleErrors + implicit none + + class(meshGeneric), intent(inout):: self + character(:), allocatable, intent(in):: filename !Dummy file, not used + integer:: fileID, reason + CHARACTER(LEN=256):: line + real(8):: r !dummy 1D coordinate + integer:: physicalID + + fileID = 10 + + open(fileID, file=trim(filename)) + + !Skip header + read(fileID) + + do + read(fileID, *, iostat=reason) r, physicalID + + if (reason > 0) then + call criticalError('Error reading mesh file', 'readText') + + else if (reason < 0) then + exit + + end if + + write(*, *) r, physicalID + + + end do + + close(fileID) + + end subroutine readText + + subroutine readInitialText(filename, density, velocity, temperature) + implicit none + + character(:), allocatable, intent(in):: filename + real(8), allocatable, intent(out), dimension(:):: density + real(8), allocatable, intent(out), dimension(:,:):: velocity + real(8), allocatable, intent(out), dimension(:):: temperature + + end subroutine readInitialText + +end module moduleMeshInputText diff --git a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 new file mode 100644 index 0000000..c1b288d --- /dev/null +++ b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 @@ -0,0 +1,67 @@ +module moduleMeshOutputText + contains + + subroutine writeSpeciesOutput(self, fileID, speciesIndex) + use moduleMesh + use moduleOutput + implicit none + + class(meshParticles), INTENT(in):: self + integer, intent(in):: fileID + integer, intent(in):: speciesIndex + + end subroutine writeSpeciesOutput + + subroutine writeCollOutput(self, fileID) + use moduleMesh + use moduleCollisions + implicit none + + class(meshGeneric), intent(in):: self + integer, intent(in):: fileID + + end subroutine writeCollOutput + + subroutine writeEMOutput(self, fileID) + use moduleMesh + use moduleRefParam + implicit none + + class(meshParticles), intent(in):: self + integer, intent(in):: fileID + + end subroutine writeEMOutput + + subroutine printOutputText(self) + use moduleMesh + implicit none + + class(meshParticles), intent(in):: self + + end subroutine printOutputText + + subroutine printCollText(self) + use moduleMesh + implicit none + + class(meshGeneric), intent(in):: self + + end subroutine printCollText + + subroutine printEMText(self) + use moduleMesh + implicit none + + class(meshParticles), intent(in):: self + + end subroutine printEMText + + subroutine printAverageText(self) + use moduleMesh + implicit none + + class(meshParticles), intent(in):: self + + end subroutine printAverageText + +end module moduleMeshOutputText From 7d4f4b98c37f86a8744fabc699bbba4253bc37e8 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Mon, 19 Jan 2026 15:37:31 +0100 Subject: [PATCH 72/84] Implementing input subroutines --- .../mesh/inout/text/moduleMeshInputText.f90 | 90 +++++++++++++++++-- src/modules/mesh/moduleMesh.f90 | 8 +- 2 files changed, 88 insertions(+), 10 deletions(-) diff --git a/src/modules/mesh/inout/text/moduleMeshInputText.f90 b/src/modules/mesh/inout/text/moduleMeshInputText.f90 index 4e29d03..f28de9c 100644 --- a/src/modules/mesh/inout/text/moduleMeshInputText.f90 +++ b/src/modules/mesh/inout/text/moduleMeshInputText.f90 @@ -41,19 +41,25 @@ module moduleMeshInputText class(meshGeneric), intent(inout):: self character(:), allocatable, intent(in):: filename !Dummy file, not used integer:: fileID, reason - CHARACTER(LEN=256):: line - real(8):: r !dummy 1D coordinate + character(len=256):: line + integer:: nNodes + real(8):: r(1:3) !dummy 3D coordinate integer:: physicalID + integer:: n, c + integer, allocatable:: p(:) + integer:: bt fileID = 10 open(fileID, file=trim(filename)) !Skip header - read(fileID) + read(fileID, *) + !Get number of nodes + nNodes = 0 do - read(fileID, *, iostat=reason) r, physicalID + read(fileID, *, iostat=reason) line if (reason > 0) then call criticalError('Error reading mesh file', 'readText') @@ -61,10 +67,82 @@ module moduleMeshInputText else if (reason < 0) then exit + else if (len(line) > 0) then + nNodes = nNodes + 1 + end if - write(*, *) r, physicalID - + end do + + if (nNodes == 0) then + call criticalError('No nodes read in mesh file', 'readText') + + end if + + self%numNodes = nNodes + self%numCells = nNodes - 1 + allocate(self%nodes(1:self%numNodes)) + allocate(self%cells(1:self%numCells)) + + select type(self) + type is (meshParticles) + self%numEdges = 2 + + allocate(self%edges(1:self%numEdges)) + + end select + + !Read the mesh now + rewind(fileID) + + !Skip header + read(fileID, *) + + !Allocate nodes and edges + do n = 1, self%numNodes + r = 0.D0 + + read(fileID, *) r(1), physicalID + + select case(self%geometry) + case("Cart") + allocate(meshNode1DCart:: self%nodes(n)%obj) + + case("Rad") + allocate(meshNode1DRad:: self%nodes(n)%obj) + + end select + + !Init nodes + call self%nodes(n)%obj%init(n, r) + + !Allocate edges if required) + select type(self) + type is (meshParticles) + if ((physicalID == 1) .or. (physicalID == 2)) then + select case(self%geometry) + case("Cart") + allocate(meshEdge1DCart:: self%edges(physicalID)%obj) + + case("Rad") + allocate(meshEdge1DRad:: self%edges(physicalID)%obj) + + end select + + allocate(p(1)) + p(1) = n + bt = getBoundaryId(physicalID) + call self%edges(physicalID)%obj%init(physicalID, p, physicalID, physicalID) + deallocate(p) + + end if + + end select + + end do + + !Allocate cells + do c = 1, self%numCells end do diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index 7ab3914..78cc772 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -344,10 +344,10 @@ MODULE moduleMesh !Array of cell elements TYPE(meshCellCont), ALLOCATABLE:: cells(:) !PROCEDURES SPECIFIC OF FILE TYPE - PROCEDURE(readMesh_interface), POINTER, PASS:: readMesh => NULL() - PROCEDURE(readInitial_interface), POINTER, NOPASS:: readInitial => NULL() - PROCEDURE(connectMesh_interface), POINTER, PASS:: connectMesh => NULL() - PROCEDURE(printColl_interface), POINTER, PASS:: printColl => NULL() + PROCEDURE(readMesh_interface), POINTER, PASS:: readMesh => NULL() + PROCEDURE(readInitial_interface), POINTER, NOPASS:: readInitial => NULL() + PROCEDURE(connectMesh_interface), POINTER, PASS:: connectMesh => NULL() + PROCEDURE(printColl_interface), POINTER, PASS:: printColl => NULL() CONTAINS !GENERIC PROCEDURES PROCEDURE, PASS:: doCollisions From 3083e20ff7ca72d9a43e6f5145ccab02f1dc6516 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 22 Jan 2026 14:06:20 +0100 Subject: [PATCH 73/84] Subroutine for reading mesh It is now complete and working. I also added some minor improvements to moduleMesh.f90 using 'associate' to practice. I noticed there are a lot of things (allocating K, for example) that are common for all meshes and should be moved to a general module. --- .../mesh/inout/text/moduleMeshInputText.f90 | 33 ++++++++++++++++++- src/modules/mesh/moduleMesh.f90 | 27 +++++++-------- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/src/modules/mesh/inout/text/moduleMeshInputText.f90 b/src/modules/mesh/inout/text/moduleMeshInputText.f90 index f28de9c..26c7a6c 100644 --- a/src/modules/mesh/inout/text/moduleMeshInputText.f90 +++ b/src/modules/mesh/inout/text/moduleMeshInputText.f90 @@ -80,8 +80,18 @@ module moduleMeshInputText end if self%numNodes = nNodes - self%numCells = nNodes - 1 allocate(self%nodes(1:self%numNodes)) + + SELECT TYPE(self) + TYPE IS(meshParticles) + ALLOCATE(self%K(1:self%numNodes, 1:self%numNodes)) + ALLOCATE(self%IPIV(1:self%numNodes, 1:self%numNodes)) + self%K = 0.D0 + self%IPIV = 0 + + END SELECT + + self%numCells = nNodes - 1 allocate(self%cells(1:self%numCells)) select type(self) @@ -142,12 +152,33 @@ module moduleMeshInputText end do !Allocate cells + n = 1 + allocate(p(1:2)) do c = 1, self%numCells + p(1) = n + n = n + 1 + p(2) = n + + select case(self%geometry) + case("Cart") + allocate(meshCell1DCartSegm:: self%cells(c)%obj) + + case("Rad") + allocate(meshCell1DRadSegm:: self%cells(c)%obj) + + end select + + call self%cells(c)%obj%init(c, p, self%nodes) + end do + deallocate(p) close(fileID) + !Call mesh connectivity + CALL self%connectMesh + end subroutine readText subroutine readInitialText(filename, density, velocity, temperature) diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index 78cc772..01b03c7 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -499,28 +499,29 @@ MODULE moduleMesh IMPLICIT NONE CLASS(meshParticles), INTENT(inout):: self - INTEGER:: e - INTEGER:: nNodes + INTEGER:: c INTEGER, ALLOCATABLE:: n(:) REAL(8), ALLOCATABLE:: localK(:,:) INTEGER:: i, j - DO e = 1, self%numCells - nNodes = self%cells(e)%obj%nNodes - ALLOCATE(n(1:nNodes)) - ALLOCATE(localK(1:nNodes, 1:nNodes)) - n = self%cells(e)%obj%getNodes(nNodes) - localK = self%cells(e)%obj%elemK(nNodes) + DO c = 1, self%numCells + associate(nNodes => self%cells(c)%obj%nNodes) + ALLOCATE(n(1:nNodes)) + ALLOCATE(localK(1:nNodes, 1:nNodes)) + n = self%cells(c)%obj%getNodes(nNodes) + localK = self%cells(c)%obj%elemK(nNodes) - DO i = 1, nNodes - DO j = 1, nNodes - self%K(n(i), n(j)) = self%K(n(i), n(j)) + localK(i, j) + DO i = 1, nNodes + DO j = 1, nNodes + self%K(n(i), n(j)) = self%K(n(i), n(j)) + localK(i, j) + + END DO END DO - END DO + DEALLOCATE(n, localK) - DEALLOCATE(n, localK) + end associate END DO From 27158c7c1dbb1592f7952cef775dd42116e89d97 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 22 Jan 2026 18:44:25 +0100 Subject: [PATCH 74/84] Output for species First output done. Now it is mostly Copy Paste. There are so many things I need to reform in other parts... Learning new things is awful. --- .../mesh/inout/text/moduleMeshOutputText.f90 | 34 +++++++++++++++++++ .../mesh/inout/vtu/moduleMeshOutputVTU.f90 | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 index c1b288d..e5ac44d 100644 --- a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 +++ b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 @@ -4,11 +4,24 @@ module moduleMeshOutputText subroutine writeSpeciesOutput(self, fileID, speciesIndex) use moduleMesh use moduleOutput + use moduleRefParam, only: L_ref implicit none class(meshParticles), INTENT(in):: self integer, intent(in):: fileID integer, intent(in):: speciesIndex + type(outputFormat):: output + real(8):: r(1:3) + integer:: n + + do n = 1, self%numNodes + call calculateOutput(self%nodes(n)%obj%output(speciesIndex), output, self%nodes(n)%obj%v, species(speciesIndex)%obj) + r = self%nodes(n)%obj%getCoordinates() + + write(fileID, '(5(ES0.6E3,","),ES0.6E3)') r(1)*L_ref, output%density, output%velocity, output%temperature + + end do + end subroutine writeSpeciesOutput @@ -34,10 +47,31 @@ module moduleMeshOutputText subroutine printOutputText(self) use moduleMesh + use moduleSpecies + use moduleMeshInoutCommon + use moduleCaseParam, ONLY: timeStep implicit none class(meshParticles), intent(in):: self + INTEGER:: s, fileID + character(:), allocatable:: fileName + + fileID = 60 + + do s = 1, nSpecies + fileName = formatFileName(prefix, species(s)%obj%name, 'csv', timeStep) + write(*, "(6X,A15,A)") "Creating file: ", fileName + open (fileID, file = path // folder // '/' // fileName) + + write(fileID, '(5(A,","),A)') 'Position (m)', 'Density (m^-3)', 'Velocity:1 (m s^-1)', 'Velocity:2 (m s^-1)', 'Velocity:3 (m s^-1)', 'Temperature (K)' + + call writeSpeciesOutput(self, fileID, s) + + close(fileID) + + end do + end subroutine printOutputText subroutine printCollText(self) diff --git a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 index 81e4bbf..8e8f91a 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 @@ -11,7 +11,7 @@ MODULE moduleMeshOutputVTU WRITE(fileID,"(A)") '' WRITE(fileID,"(2X, A)") '' - WRITE(fileID,"(4X, A,ES20.6E3,A)") '' + WRITE(fileID,"(4X, A)") '' WRITE(fileID,"(6X, A, I10, A, I10, A)") '' END SUBROUTINE writeHeader From 8c8c6409f6db713f70655318d2d148263997e496 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 23 Jan 2026 12:16:52 +0100 Subject: [PATCH 75/84] Output for EM The output for the EM field properties is done. --- .../mesh/inout/text/moduleMeshOutputText.f90 | 68 ++++++++++++++++++- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 index e5ac44d..fb067c3 100644 --- a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 +++ b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 @@ -22,7 +22,6 @@ module moduleMeshOutputText end do - end subroutine writeSpeciesOutput subroutine writeCollOutput(self, fileID) @@ -37,11 +36,35 @@ module moduleMeshOutputText subroutine writeEMOutput(self, fileID) use moduleMesh - use moduleRefParam + use moduleRefParam, only: L_ref, Volt_ref, B_ref, EF_ref implicit none class(meshParticles), intent(in):: self integer, intent(in):: fileID + integer:: n, c + real(8):: r(1:3), Xi(1:3) + + do n = 1, self%numNodes + r = self%nodes(n)%obj%getCoordinates() + if (n == self%numNodes) then + Xi = (/ 1.D0, 0.D0, 0.D0 /) + c = self%numNodes - 1 + + else + Xi = (/ 0.D0, 0.D0, 0.D0 /) + c = n + + end if + + associate(output => self%nodes(n)%obj%emData) + write(fileID, '(7(ES0.6E3,","),ES0.6E3)') r(1)*L_ref, & + output%phi*Volt_ref, & + self%cells(c)%obj%gatherElectricField(Xi)*EF_ref, & + output%B*B_ref + + end associate + + end do end subroutine writeEMOutput @@ -64,7 +87,10 @@ module moduleMeshOutputText write(*, "(6X,A15,A)") "Creating file: ", fileName open (fileID, file = path // folder // '/' // fileName) - write(fileID, '(5(A,","),A)') 'Position (m)', 'Density (m^-3)', 'Velocity:1 (m s^-1)', 'Velocity:2 (m s^-1)', 'Velocity:3 (m s^-1)', 'Temperature (K)' + write(fileID, '(5(A,","),A)') 'Position (m)', & + 'Density (m^-3)', & + 'Velocity (m s^-1):0', 'Velocity (m s^-1):1', 'Velocity (m s^-1):2', & + 'Temperature (K)' call writeSpeciesOutput(self, fileID, s) @@ -76,17 +102,53 @@ module moduleMeshOutputText subroutine printCollText(self) use moduleMesh + use moduleOutput + use moduleMeshInoutCommon + use moduleCaseParam, only: timeStep implicit none class(meshGeneric), intent(in):: self + integer:: fileID + character(:), allocatable:: fileName + + fileID = 62 + + if (collOutput) then + fileName = formatFileName(prefix, 'Collisions', 'csv', timeStep) + write(*, "(6X,A15,A)") "Creating file: ", fileName + open (fileID, file = path // folder // '/' // fileName) + + end if end subroutine printCollText subroutine printEMText(self) use moduleMesh + use moduleMeshInoutCommon + use moduleCaseParam, only: timeStep implicit none class(meshParticles), intent(in):: self + integer:: fileID + character(:), allocatable:: fileName + + fileID = 64 + + if (emOutput) then + fileName = formatFileName(prefix, 'EMField', 'csv', timeStep) + write(*, "(6X,A15,A)") "Creating file: ", fileName + open (fileID, file = path // folder // '/' // fileName) + + write(fileID, '(8(A,","),A)') 'Position (m)', & + 'Potential (V)', & + 'Electric Field (V m^-1):0', 'Electric Field (V m^-1):1', 'Electric Field (V m^-1):2', & + 'Magnetic Field (T):0', 'Magnetic Field (T):1', 'Magnetic Field (T):2' + + call writeEMOutput(self, fileID) + + close(fileID) + + end if end subroutine printEMText From 46b9f263ea173e2ae00d1ac2609fb19fb868f7f8 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 23 Jan 2026 14:26:39 +0100 Subject: [PATCH 76/84] Average done Now we can output averages in this format. --- .../mesh/inout/text/moduleMeshOutputText.f90 | 75 ++++++++++++++++++- 1 file changed, 73 insertions(+), 2 deletions(-) diff --git a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 index fb067c3..0eb6a21 100644 --- a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 +++ b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 @@ -10,13 +10,13 @@ module moduleMeshOutputText class(meshParticles), INTENT(in):: self integer, intent(in):: fileID integer, intent(in):: speciesIndex - type(outputFormat):: output real(8):: r(1:3) + type(outputFormat):: output integer:: n do n = 1, self%numNodes - call calculateOutput(self%nodes(n)%obj%output(speciesIndex), output, self%nodes(n)%obj%v, species(speciesIndex)%obj) r = self%nodes(n)%obj%getCoordinates() + call calculateOutput(self%nodes(n)%obj%output(speciesIndex), output, self%nodes(n)%obj%v, species(speciesIndex)%obj) write(fileID, '(5(ES0.6E3,","),ES0.6E3)') r(1)*L_ref, output%density, output%velocity, output%temperature @@ -68,6 +68,41 @@ module moduleMeshOutputText end subroutine writeEMOutput + subroutine writeAverage(self, fileIDMean, & + fileIDDeviation, & + speciesIndex) + + use moduleMesh + use moduleOutput + use moduleAverage + use moduleRefParam, only: L_ref + implicit none + + class(meshParticles), intent(in):: self + integer, intent(in):: fileIDMean, fileIDDeviation + INTEGER, intent(in):: speciesIndex + real(8):: r(1:3) + type(outputFormat):: outputMean + type(outputFormat):: outputDeviation + integer:: n + + do n = 1, self%numNodes + r = self%nodes(n)%obj%getCoordinates() + + call calculateOutput(averageScheme(n)%mean%output(speciesIndex), outputMean, & + self%nodes(n)%obj%v, species(speciesIndex)%obj) + + write(fileIDMean, '(5(ES0.6E3,","),ES0.6E3)') r(1)*L_ref, outputMean%density, outputMean%velocity, outputMean%temperature + + call calculateOutput(averageScheme(n)%deviation%output(speciesIndex), outputDeviation, & + self%nodes(n)%obj%v, species(speciesIndex)%obj) + + write(fileIDDeviation, '(5(ES0.6E3,","),ES0.6E3)') r(1)*L_ref, outputDeviation%density, outputDeviation%velocity, outputDeviation%temperature + + end do + + end subroutine writeAverage + subroutine printOutputText(self) use moduleMesh use moduleSpecies @@ -118,6 +153,8 @@ module moduleMeshOutputText write(*, "(6X,A15,A)") "Creating file: ", fileName open (fileID, file = path // folder // '/' // fileName) + close(fileID) + end if end subroutine printCollText @@ -154,9 +191,43 @@ module moduleMeshOutputText subroutine printAverageText(self) use moduleMesh + use moduleSpecies + use moduleMeshInoutCommon implicit none class(meshParticles), intent(in):: self + integer:: s + integer:: fileIDMean, fileIDDeviation + character(:), allocatable:: fileNameMean, fileNameDeviation + + fileIDMean = 66 + fileIDDeviation = 67 + + do s = 1, nSpecies + fileNameMean = formatFileName('Average_mean', species(s)%obj%name, 'csv', timeStep) + write(*, "(6X,A15,A)") "Creating file: ", fileNameMean + open (fileIDMean, file = path // folder // '/' // fileNameMean) + + write(fileIDMean, '(5(A,","),A)') 'Position (m)', & + 'Density, mean (m^-3)', & + 'Velocity, mean (m s^-1):0', 'Velocity (m s^-1):1', 'Velocity (m s^-1):2', & + 'Temperature, mean (K)' + + fileNameDeviation = formatFileName('Average_deviation', species(s)%obj%name, 'csv', timeStep) + write(*, "(6X,A15,A)") "Creating file: ", fileNameDeviation + open (fileIDDeviation, file = path // folder // '/' // fileNameDeviation) + + write(fileIDDeviation, '(5(A,","),A)') 'Position (m)', & + 'Density, deviation (m^-3)', & + 'Velocity, deviation (m s^-1):0', 'Velocity (m s^-1):1', 'Velocity (m s^-1):2', & + 'Temperature, deviation (K)' + + call writeAverage(self, fileIDMean, fileIDDeviation, s) + + close(fileIDMean) + close(fileIDDeviation) + + end do end subroutine printAverageText From d34e72d2e8c4f4d5e6acad173783a6a182731717 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 23 Jan 2026 14:51:49 +0100 Subject: [PATCH 77/84] Collisions done Thanks to the advance statement the output of collisions is done. --- .../mesh/inout/text/moduleMeshOutputText.f90 | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 index 0eb6a21..d69ddda 100644 --- a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 +++ b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 @@ -27,10 +27,26 @@ module moduleMeshOutputText subroutine writeCollOutput(self, fileID) use moduleMesh use moduleCollisions + use moduleRefParam, only: L_ref implicit none class(meshGeneric), intent(in):: self integer, intent(in):: fileID + integer:: n, k, c + + do n = 1, self%numCells + write(fileID, '(I0)', advance='no') n + + do k = 1, nCollPairs + do c = 1, interactionMatrix(k)%amount + write(fileID, '(",",I0)', advance='no') self%cells(n)%obj%tallyColl(k)%tally(c) + + end do + + end do + write(fileID, *) + + end do end subroutine writeCollOutput @@ -145,6 +161,8 @@ module moduleMeshOutputText class(meshGeneric), intent(in):: self integer:: fileID character(:), allocatable:: fileName + integer:: k, c + character (len=2):: cString fileID = 62 @@ -153,6 +171,19 @@ module moduleMeshOutputText write(*, "(6X,A15,A)") "Creating file: ", fileName open (fileID, file = path // folder // '/' // fileName) + write(fileID, '(A)', advance='no') "Cell" + do k = 1, nCollPairs + do c = 1, interactionMatrix(k)%amount + write(cString, "(I2)") c + write(fileID, '(",",A)', advance='no') 'Pair ' // interactionMatrix(k)%sp_i%name // '-' // interactionMatrix(k)%sp_j%name // ' collision ' // cString + + end do + end do + + write(fileID, *) + + call writeCollOutput(self, fileID) + close(fileID) end if From 1b1a574edc9e85c7c87bc906e781358cbfd2cfea Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 23 Jan 2026 15:04:39 +0100 Subject: [PATCH 78/84] Read initial Now we can read an initial condition as we do with other formats. Only documentation left. --- .../mesh/inout/text/moduleMeshInputText.f90 | 38 +++++++++++++++++++ .../mesh/inout/vtu/moduleMeshInputVTU.f90 | 2 + 2 files changed, 40 insertions(+) diff --git a/src/modules/mesh/inout/text/moduleMeshInputText.f90 b/src/modules/mesh/inout/text/moduleMeshInputText.f90 index 26c7a6c..a41e6d3 100644 --- a/src/modules/mesh/inout/text/moduleMeshInputText.f90 +++ b/src/modules/mesh/inout/text/moduleMeshInputText.f90 @@ -182,12 +182,50 @@ module moduleMeshInputText end subroutine readText subroutine readInitialText(filename, density, velocity, temperature) + use moduleErrors implicit none character(:), allocatable, intent(in):: filename real(8), allocatable, intent(out), dimension(:):: density real(8), allocatable, intent(out), dimension(:,:):: velocity real(8), allocatable, intent(out), dimension(:):: temperature + integer:: fileID, reason + character(len=256):: line + integer:: nNodes + integer:: n + + fileID = 10 + + open(fileID, file=trim(filename)) + + do + read(fileID, *, iostat=reason) line + + if (reason > 0) then + call criticalError('Error reading mesh file', 'readText') + + else if (reason < 0) then + exit + + else if (len(line) > 0) then + nNodes = nNodes + 1 + + end if + + end do + + allocate(density(1:nNodes)) + allocate(velocity(1:nNodes, 1:3)) + allocate(temperature(1:nNodes)) + + rewind(fileID) + + do n = 1, nNodes + read(fileID, *) density(n), velocity(n, 1:3), temperature(n) + + end do + + close(fileID) end subroutine readInitialText diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index e07db01..c7b89b5 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -548,6 +548,8 @@ MODULE moduleMeshInputVTU CALL readDataBlock(fileID, numNodes, temperature) REWIND(fileID) + close(fileID) + END SUBROUTINE readInitialVTU END MODULE moduleMeshInputVTU From 0c0017b84aaf27bf2deab22d2d95b1e7ce58a6cd Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 23 Jan 2026 15:21:26 +0100 Subject: [PATCH 79/84] txs auto checkin --- doc/user-manual/fpakc_UserManual.tex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index e572331..845cc9a 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -1,5 +1,5 @@ \documentclass[10pt,a4paper,twoside]{book} -\usepackage[latin1]{inputenc} +%\usepackage[latin1]{inputenc} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} @@ -460,6 +460,10 @@ make \begin{itemize} \item \textbf{gmsh2}: \Gls{gmsh} file format in version 2.0. This has to be in ASCII format. \item \textbf{vtu}: \Gls{vtu} file format. This has to be in ASCII format. + \item \textbf{text}: Plain text file format only intended for 1D cases. + This has to be in ASCII format and comma separated. + The first column represents the position and the second column the physical ID of the node. + Values have to be $1$ (left boundary), $2$ (right boundary), or $0$ (no boundary.) \end{itemize} \item \textbf{meshFile}: Character. Mesh filename. From 56a17300f3fc872be2e1ae0f80b207bafe3e7f51 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 23 Jan 2026 15:26:23 +0100 Subject: [PATCH 80/84] Change in manual --- doc/logos/fpakc.pdf | Bin 0 -> 6823 bytes doc/user-manual/figures/logos/PPartiC.eps | 177 ------------ doc/user-manual/figures/logos/PPartiC.svg | 159 ----------- doc/user-manual/figures/logos/fpakc.eps | 294 -------------------- doc/user-manual/figures/scatteringQuad.eps | 303 --------------------- doc/user-manual/fpakc_UserManual.pdf | Bin 187186 -> 271611 bytes 6 files changed, 933 deletions(-) create mode 100644 doc/logos/fpakc.pdf delete mode 100644 doc/user-manual/figures/logos/PPartiC.eps delete mode 100644 doc/user-manual/figures/logos/PPartiC.svg delete mode 100644 doc/user-manual/figures/logos/fpakc.eps delete mode 100644 doc/user-manual/figures/scatteringQuad.eps diff --git a/doc/logos/fpakc.pdf b/doc/logos/fpakc.pdf new file mode 100644 index 0000000000000000000000000000000000000000..36bc5ab100d9186d95d0ff24fd5e291d5cea9054 GIT binary patch literal 6823 zcmc&(c|4Tu*RMxerU+RIF_JCY3}YBeiZS*jG(^KQ#u!r=X2!leC4^*2*|JoY$d)y0 zvXdp*3t1!CBNWwp5A{4fzuwRLzW=@VxR>kP=Q`)U&ULPHeZF79#z>SDR9YS+T)LRQ z4T6CoV3O@+kctXeMj!7?pgMr%0g(v^3lb|8Mr%QsdywFN3z3%&YS^JsAN3W z3FMh{*Ssp9SAlhLQ^G=IKa#@lTS_0WZ@-CR1tzNA*u_bai&a$9UyY!BxwPsw+8p9I zAC)x0*F|YNxPxH*rn3<7Xl|I}O^;gYNL6H=-xm+>@3KwP8Z5%5YRncTGfBx|GEhyC zZOywl?WK3H8Xwg_4VP(a>qpDh-@k1Qu5QQ4^hU~PY!;|hj8jgwHGRENn!38#zP>GB z!MyZRXH;g1*MIPK`GCkPnP9IvJy$c|(@WDKs&@lpqKmgbD0*?i#rhufEj%oc-*2)} zh&1;*5Dz+*HT7Ox++~&XG;DhWR#$1vEE2O*{p^#%Cbp8mFZtpU=A_IUW>~A+5E!EP zP9itVJl7ugsnKmkvP~XR`x%a@Y6A2v#wGO&U#Sky6`eEUs&^!FXUHhC#8XS`tBbET zrqQl0whJBQQAp!25kM@Y6|z)CEb1^CLH(z`9-FRy9taA>ZssYG$x`;^BY?8?Hc5x z9GXgJT6NW%?twlt_0klvxCS}3;M?ivQUWS1d;itI-ec~*<#SQ!WbH=zAwG{+g*bjs z%LdMeo!H8tE|h+9U$Zo>pP4}dclhK$bOwtk)$#5Tu|QjGDb8rYtTDP1%v#xWM)aEP zl1f6RzDcg@!rhW#9Zat1k?uasz|x7~hD^cAqOFBe;TwZDd%Jlm;taWRthkf98IISS zDx*JNc!+~d6|iEOaZNO*IinRYvvh-@Y=1D}JW=vx7;j?bjQjEsKb-m1-6j;NeZmc~ z!Frm0sV3D9A~`!$YW0!4ET!)6958|U7;L7YU2;CWImRqTdE7kzI96edE-0yS(x`6I zjvHy;V3wz=y%I_uQ*ao*3^7ebmVw@W?{2=1irQpM%)AT|ZVMSV$?GJ3IC(N;{1qR{Dp?B=ip{bSryxc&jHfcrFuSfuu(h=2d=}ca*v~tRq{U4acbq~!<{}@Ec|-;P)oe2w44^w zHg}T6mM&N`Jid23z~tT~sPWWPdTNNO=grBvTrT5%=A`BWUE z{79LSgp_NiEyKWazTc5Y5d(!(uOb=+RYq?f}|G5^8&55nX3F;14^sbb=&VH zJOn+Q0UP3;5PO4<=%?~D6JGgcLcwVa{S_M!BB;kUR!n#?9b@IMIE^W71#ng>Faj z6@++Nila)q_|(y5*`{dw#uVu7)uOD-GO)?^)3^(-`~zBA9F?yXS$H3?Arg^l`rqkd z3c>RrytCbpLI*t2N+hi=((XWIgv!F;GzD5y?(Yh^TQfC1samE~pk9JiRA>U=kikNL z23SVp92g3g!C`?bP(^_kdsi70$(j0#w!IWY3Ic}ztipg2@b|-+?BCA7GG<;bc(9By zmVgHfgQ2_5jj?1rU<>-QuZ#iSj)+w!d4jC~5d@_N!I)iT4Ztm+O###PfW3mR zMJBnq{PHP#E_S6q$6^XNCS#o`E;Ls-ub*NaFqQ0v|Jl+2w2*jrA`Wk&rA`z67^w-K zLUJSH@DwmDY9_x7OaW;B$3CR^_h6V#%t9dklJ4#c=jmc;bUP@tr|kie?qRYX36s~z2p^|unhZ{b&{ui|0$%j zEiYKpndtzB#7V}92lp>LxXaZypqsMnhxd?czINA9NfUn1TBoiXMA2}r#uyNir(N`YwFna zUYSVXL_*i%3+&F6R@$DwmEGDG`I&yEMxH|GSFwEck!h_HIm4}!cDg^yye*F}FF}Pt zn>)eLfjyy?o$GUYX7AMoLKXe(DaXOr`3s&6ge|||0^LVTmg!U*^ey}CTQW0=&a;S9 zSw~u`-%O`_CUWSzX|v&8+p^!AJ6JV`&*378Q0|nxMzx@nPt4wY<0!1@v~io5u`QMu zFqSHto8vPy(ctRkMMr#|an>VlO807lBikM38Ty-O5q8-g17bi8r5!>hGcb46eGqDD zK%PxDGpO=N^&FhuanzpJ;{V``s<^-E;{k2#do0pE=Y0Ypb~l*5_jXw~v8qrrrK}on zBjbNFuJ^WQSi)Am-b4zo0XOi)`;#Fn=*MNQlf zU+>tWng+;0MInkF#+h7?5|RDos%u6}IhFpGzoq1ry1A8>-sFDjTijwds+6X`cwx+C z*eY01#_8=&&&JHmBA*rUrNFv^B3$A#(R9VnrjR{jF7@gQZJXFcFajmuhcw#}OLe;Tdi+tc$O3ZK2jH z+I`{*I;>`VTDPN?q06{uiDz=EbA0br-}60(;?Yfs^m$0gtQslq z7#+Vj@BgNE(s^US{izop{-M6_J;!T*g2{^k`&&=+4Yv$OwQbwNj~y$>FYQy2b?V9G zoYcBJn(Pz1V#bAl{ukRQg1tw{yF zIfm$xy(m%KG4P`FBKZM2O)4tVGWLp5>)lvFi5vO4@U{IRo5$<9g?;N+O2bYUo`?NK zImcVjoO80@j_m&3#Buzq6Wel@f0Bl$4aLg_13MM3FWPu<)W6<+pt7m^>8VwBk$YON zTM@9=uly8Q#o=#N+!n*8^zzHLO=HttN}1BsG<*-O3DQq3GRGy$L}krJV3Z%MHgWUn z4II>S-!V=;uf`qIbhXFk{lO2uV4uNEgQ`F1`fu<@9y`fi&b-Px>Z^QiB1Sxz>ZG#i z>@RfI-BMk3lK;FQS7=M4+#9yVYK7i=i=CTgUwVAJ>k0JoH>)%e^Yf&+sf($b$=^t7 z0e(r`2I2i{BZ;I^p^=ENwD0pBwS#ou+FG@JMSE*`iGMA-d_xHM^OBLAC+@3#EWc_g zcHjuE#fB?3cpH6Q9g~|{7pwOP|1fa-vY!Mo*XE(eNA|?l2glbLBX_=_U9WER;!|qO za$`MSWMk(;(pD@7-_1`x?&$rPWmYh7XnpjHiJyX1$6(HSMqe|`NI8wvH@|MW^X+c1 z(9xy|8%37O>{Cd3d7{BX<8tJK0i6QPNrAcxN@o0VEpvRyM~}WPy32JLy_&fda3s&9 z@E!s4XuiJTQhuyNeu$Ccb9Mvtz+`kfHm(mprxNZj0^$NgRxymeE0zr3KVD`C<% zEezMMG7g&Yd}*VMVi#)33`pQh0s~A(>UzjSr=$4mE@ePu8v0lJb8RhgQz7H4@ z-=H)i+ZzpQMpQJ69*CI6SnHbC4|N~Ui&>37R)-VLgE6PiSBB<4w74@r+z=9N^Grm0 zt7A&vwNI=$L10#&Q6noNDOXiQ`AuDpkD6c3?_uXjU<68BMr|T2S zV_MbSX?)LntLcO%lyP>PN1IJ;EE^xyG|&1*)!g2>wB}k6xf43@JWfTE)n7J#gX_!- zQE_k6kcz{)c8UIavHXRHA_c42YHldSS7zTPS|abg7(;|`oLLmSEyQjfxDnQ!&S((c zePCi*CW3>BOk5}T$Y$)AP;Gw8E$G(izQoDr!7n^cx5gT`8m5@RM3~N9&ax#ami%sdi^q|^l9Jp73H9@V3!GB z8LtQIvpy3I_D^@7unSZ##|Z?kJQJuzOvTkQP1JZKf2=`P`*aD8xlJa~5ynDe2{oRg zJfz~LVZo${PcOGzzq~%?r9}70Q0ZN^e$qmCjA-)v@CGJys&<2`=v$=$!7&p>_Y!^n z`R9f7Umc#z8q}&-2B)3-YM>S&R((FS!AN-;8#HLTdL?L(gQX@>=19=WhX{_(m(N%u z;w5dE#>e+-@as2Ui?Hx|ezxV?vDa)jze0yvx;Dg1Bo+*w7fh}QfP6Tt(L>3BHkIA6 zA(-l}d{%ezQ@OwsjEF2-MEu&;ESs)|Pot28dZ&vTza_ zr>}qMIF3fh(aYs#i5W$4-r5nkE!ck4rIxdo^99FWI)}Yd>r1l5$%*x5GntuxhN%-7 z)y(2Me4h}C>T5v4&LdNeqcN90F0qOf+TK2NRJ44$kyRvIVfp}fGjDnOt;v&*Bn{8L zQq+h{bWU zW6%+4tw!7O69*d{i@jxReS=g)pA|q(@n5IJy!%s)%z(f<%aV`GUC)IhT0_q< zdmDmLGm6ni`{ zDUA(Rq25Eayft#iu0E?7ZG}V`!V~xdWVoK)UvjI*1r6USF^kh*6OxBpXI4hN=^`}q zs5S-LnMdpA-?*7v8P=^Q*mm}$kKSRyYj`GqMF}<%*s$);x5h4JCkK|I3Rgo^(}zzy zQFsp@7*Y>m0wdOxW_H2xu)2>$RUDxGOTv*nH6yi7(hA<^@ z<)Zt}jy-I47(Gx`Fh8U_#Z!Nz>peT9XY>9my9#bL>!$Ft5}zUON1hUu?cR(v&T_Fv z$S)@fzmu0fCl+3Bpsk2gb-{TD7=E8ul@Eq}utL_qoKIXp>}M`+^#Z}a(a(c(wxx|bpp_=iTMT8`HK=r{ADcK%@lx{QtBi}yT6rC zSSO;R7g%iXJ(#8-zW34*O8`Kn?BAN|d!Sbe3V|cQQZT4I7>ZB;E>PgI2Y+>_SVto6 zoHM}@4~FdaJ4eCM&@)0-akokPNLpJ;R!)9bpn-MK#uEt+0Kf*!?21gOcqcR%$Rye@ zXbtV34cagP+=`b4)1d9IP?v`6e-Fu?1vgvjE~+;Jz%(sfyHa&51;5J?{Ey)wk||UT z2Q2w#6!ft_+EC~}VfiQUz!?6{a7|}`+9f&@z%u4U=X1^!;!nY@dvl^4)q(PZL7*** z|GytxfyPzHBWN@T1Pqg-Q8If!IQ*Yy1z@&!=NO;<~edW*RLc4WoDR(suLEG}9Cb^z7|Li;An zuNMBHj%aiV1)ySfjhfKtk{_iB`YSNnofn6fO+`i#brKE)*ph zfLa2i1Txmefrz6>lgI?|z15)s@b$o21FN7kQ78xmhJZlen!u?JfhfoUciIUBo*}?p z9s-dC?s7m|7SNG{{kQ`re|v1ejPC0U3p90HYPzeYC-y!0^#_uO1M|qLBLQr2pGzb0}Pj!2a?Mk{6i+MhyYeC?EpLfltEz% zKqg#&r=pFZGnuwV43WGqnd$h-ebG9`NBX)&eMMH3PUSUR-H j+S^cdob7?!-D4erOs7z>Wa{oLz+q4Ykg%|(5eoEQQ>Glq literal 0 HcmV?d00001 diff --git a/doc/user-manual/figures/logos/PPartiC.eps b/doc/user-manual/figures/logos/PPartiC.eps deleted file mode 100644 index 5517180..0000000 --- a/doc/user-manual/figures/logos/PPartiC.eps +++ /dev/null @@ -1,177 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: cairo 1.16.0 (https://cairographics.org) -%%CreationDate: Wed Oct 07 12:01:13 2020 -%%Pages: 1 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%BoundingBox: 6 7 205 57 -%%EndComments -%%BeginProlog -50 dict begin -/q { gsave } bind def -/Q { grestore } bind def -/cm { 6 array astore concat } bind def -/w { setlinewidth } bind def -/J { setlinecap } bind def -/j { setlinejoin } bind def -/M { setmiterlimit } bind def -/d { setdash } bind def -/m { moveto } bind def -/l { lineto } bind def -/c { curveto } bind def -/h { closepath } bind def -/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto - 0 exch rlineto 0 rlineto closepath } bind def -/S { stroke } bind def -/f { fill } bind def -/f* { eofill } bind def -/n { newpath } bind def -/W { clip } bind def -/W* { eoclip } bind def -/BT { } bind def -/ET { } bind def -/BDC { mark 3 1 roll /BDC pdfmark } bind def -/EMC { mark /EMC pdfmark } bind def -/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def -/Tj { show currentpoint cairo_store_point } bind def -/TJ { - { - dup - type /stringtype eq - { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse - } forall - currentpoint cairo_store_point -} bind def -/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore - cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def -/Tf { pop /cairo_font exch def /cairo_font_matrix where - { pop cairo_selectfont } if } bind def -/Td { matrix translate cairo_font_matrix matrix concatmatrix dup - /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point - /cairo_font where { pop cairo_selectfont } if } bind def -/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def - cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def -/g { setgray } bind def -/rg { setrgbcolor } bind def -/d1 { setcachedevice } bind def -/cairo_data_source { - CairoDataIndex CairoData length lt - { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } - { () } ifelse -} def -/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def -/cairo_image { image cairo_flush_ascii85_file } def -/cairo_imagemask { imagemask cairo_flush_ascii85_file } def -%%EndProlog -%%BeginSetup -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: 6 7 205 57 -%%EndPageSetup -q 6 7 199 50 rectclip -1 0 0 -1 0 71 cm q -0 g -49.766 27.305 m 49.766 29.898 49.078 31.813 47.703 33.039 c 46.328 34.27 - 44.297 34.883 41.609 34.883 c 36.625 34.883 l 36.625 47.945 l 32.438 47.945 - l 32.438 14.352 l 41.516 14.352 l 44.234 14.352 46.285 14.953 47.672 16.148 - c 49.066 17.348 49.766 19.242 49.766 21.836 c h -45.594 21.398 m 45.594 20.18 45.313 19.301 44.75 18.758 c 44.195 18.219 - 43.313 17.945 42.094 17.945 c 36.625 17.945 l 36.625 31.289 l 42.094 31.289 - l 43.313 31.289 44.195 31.008 44.75 30.445 c 45.313 29.883 45.594 29 45.594 - 27.789 c h -45.594 21.398 m f -75.641 27.305 m 75.641 29.898 74.953 31.813 73.578 33.039 c 72.203 34.27 - 70.172 34.883 67.484 34.883 c 62.5 34.883 l 62.5 47.945 l 58.313 47.945 - l 58.313 14.352 l 67.391 14.352 l 70.109 14.352 72.16 14.953 73.547 16.148 - c 74.941 17.348 75.641 19.242 75.641 21.836 c h -71.469 21.398 m 71.469 20.18 71.188 19.301 70.625 18.758 c 70.07 18.219 - 69.188 17.945 67.969 17.945 c 62.5 17.945 l 62.5 31.289 l 67.969 31.289 - l 69.188 31.289 70.07 31.008 70.625 30.445 c 71.188 29.883 71.469 29 71.469 - 27.789 c h -71.469 21.398 m f -99.891 47.945 m 99.473 47.945 99.016 47.82 98.516 47.57 c 98.023 47.313 - 97.602 46.957 97.25 46.508 c 96.508 47.469 95.535 47.945 94.328 47.945 -c 90.047 47.945 l 87.617 47.945 85.852 47.461 84.75 46.492 c 83.645 45.516 - 83.094 43.836 83.094 41.461 c 83.094 40.508 l 83.094 35.551 85.426 33.07 - 90.094 33.07 c 96.047 33.07 l 96.047 30.664 l 96.047 29.676 95.742 28.91 - 95.141 28.367 c 94.535 27.816 93.641 27.539 92.453 27.539 c 85.016 27.539 - l 85.016 23.945 l 91.969 23.945 l 94.75 23.945 96.801 24.555 98.125 25.773 - c 99.457 26.984 100.125 28.938 100.125 31.633 c 100.125 43.148 l 100.125 - 43.629 100.305 43.988 100.672 44.227 c 101.047 44.469 101.664 44.586 102.531 - 44.586 c 102.531 47.945 l h -93.844 44.352 m 94.801 44.352 95.406 44.129 95.656 43.68 c 95.914 43.234 - 96.047 42.656 96.047 41.945 c 96.047 36.664 l 90.047 36.664 l 89.211 36.664 - 88.523 36.941 87.984 37.492 c 87.441 38.035 87.172 38.719 87.172 39.539 - c 87.172 41.945 l 87.172 42.781 87.363 43.391 87.75 43.773 c 88.133 44.16 - 88.742 44.352 89.578 44.352 c h -93.844 44.352 m f -114.047 44.352 m 114.047 27.539 l 110.547 27.539 l 110.547 23.945 l 117.891 - 23.945 l 117.891 25.242 l 118.953 24.379 120.234 23.945 121.734 23.945 -c 126.672 23.945 l 126.672 27.789 l 121.25 27.789 l 120.227 27.789 119.461 - 28.117 118.953 28.773 c 118.441 29.43 118.172 30.094 118.141 30.758 c 118.141 - 44.352 l 123.359 44.352 l 123.359 47.945 l 110.547 47.945 l 110.547 44.352 - l h -114.047 44.352 m f -146.359 47.945 m 144.723 47.945 143.473 47.422 142.609 46.367 c 141.754 - 45.305 141.328 43.91 141.328 42.18 c 141.328 27.539 l 136.766 27.539 l -136.766 23.945 l 141.328 23.945 l 141.328 18.18 l 145.406 18.18 l 145.406 - 23.945 l 152.406 23.945 l 152.406 27.539 l 145.406 27.539 l 145.406 42.43 - l 145.406 43.129 145.578 43.625 145.922 43.914 c 146.273 44.207 146.82 -44.352 147.563 44.352 c 152.406 44.352 l 152.406 47.945 l h -146.359 47.945 m f -172.719 14.352 m 172.719 18.664 l 168.156 18.664 l 168.156 14.352 l h -161.344 27.539 m 161.344 23.945 l 172.469 23.945 l 172.469 44.352 l 179.578 - 44.352 l 179.578 47.945 l 168.391 47.945 l 168.391 27.539 l h -161.344 27.539 m f -197.25 47.945 m 194.469 47.945 192.332 47.27 190.844 45.914 c 189.352 44.551 - 188.609 42.508 188.609 39.789 c 188.609 22.508 l 188.609 19.789 189.352 - 17.754 190.844 16.398 c 192.332 15.035 194.469 14.352 197.25 14.352 c 204.063 - 14.352 l 204.063 17.992 l 196.766 17.992 l 195.578 17.992 194.613 18.348 - 193.875 19.055 c 193.145 19.754 192.781 20.598 192.781 21.586 c 192.781 - 40.695 l 192.781 41.688 193.145 42.535 193.875 43.242 c 194.613 43.953 -195.578 44.305 196.766 44.305 c 204.063 44.305 l 204.063 47.945 l h -197.25 47.945 m f -0.831373 0 0 rg -17.277 53.707 m 17.277 56.629 14.91 58.996 11.988 58.996 c 9.066 58.996 - 6.695 56.629 6.695 53.707 c 6.695 50.785 9.066 48.414 11.988 48.414 c 14.91 - 48.414 17.277 50.785 17.277 53.707 c f -0 0 0.501961 rg -23.906 61.84 m 23.906 62.969 22.992 63.883 21.863 63.883 c 20.734 63.883 - 19.82 62.969 19.82 61.84 c 19.82 60.715 20.734 59.801 21.863 59.801 c 22.992 - 59.801 23.906 60.715 23.906 61.84 c f -0.596078 g -0.751181 w -0 J -0 j -[] 0.0 d -4 M q 1 0 0 1 0 0 cm -16.941 50.758 m 29.465 47.813 l S Q -27.848 47.258 m 30.453 47.578 l 28.262 49.023 l 28.523 48.41 28.355 47.699 - 27.848 47.258 c h -27.848 47.258 m f* -0.137102 w -1 j -q -1 0.235294 -0.235294 -1 0 0 cm --15.851 -50.987 m -18.248 -51.872 l -15.849 -52.753 l -16.234 -52.23 -16.233 - -51.519 -15.851 -50.987 c h --15.851 -50.987 m S Q -0.6 g -0.751178 w -0 j -q 1 0 0 1 0 0 cm -23.234 59.613 m 30.398 49.301 l S Q -28.824 49.969 m 30.973 48.461 l 30.313 51 l 30.098 50.375 29.496 49.957 - 28.824 49.969 c h -28.824 49.969 m f* -0.115667 w -1 j -q -0.694805 1 -1 -0.694805 0 0 cm -20.193 -42.855 m 18.17 -43.597 l 20.191 -44.342 l 19.87 -43.904 19.87 -43.302 - 20.193 -42.855 c h -20.193 -42.855 m S Q -Q Q -showpage -%%Trailer -end -%%EOF diff --git a/doc/user-manual/figures/logos/PPartiC.svg b/doc/user-manual/figures/logos/PPartiC.svg deleted file mode 100644 index 9966134..0000000 --- a/doc/user-manual/figures/logos/PPartiC.svg +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - PPartiC - - - - - - diff --git a/doc/user-manual/figures/logos/fpakc.eps b/doc/user-manual/figures/logos/fpakc.eps deleted file mode 100644 index 667a7f0..0000000 --- a/doc/user-manual/figures/logos/fpakc.eps +++ /dev/null @@ -1,294 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: cairo 1.16.0 (https://cairographics.org) -%%CreationDate: Sat Nov 21 21:23:19 2020 -%%Pages: 1 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%BoundingBox: 8 15 191 78 -%%EndComments -%%BeginProlog -50 dict begin -/q { gsave } bind def -/Q { grestore } bind def -/cm { 6 array astore concat } bind def -/w { setlinewidth } bind def -/J { setlinecap } bind def -/j { setlinejoin } bind def -/M { setmiterlimit } bind def -/d { setdash } bind def -/m { moveto } bind def -/l { lineto } bind def -/c { curveto } bind def -/h { closepath } bind def -/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto - 0 exch rlineto 0 rlineto closepath } bind def -/S { stroke } bind def -/f { fill } bind def -/f* { eofill } bind def -/n { newpath } bind def -/W { clip } bind def -/W* { eoclip } bind def -/BT { } bind def -/ET { } bind def -/BDC { mark 3 1 roll /BDC pdfmark } bind def -/EMC { mark /EMC pdfmark } bind def -/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def -/Tj { show currentpoint cairo_store_point } bind def -/TJ { - { - dup - type /stringtype eq - { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse - } forall - currentpoint cairo_store_point -} bind def -/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore - cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def -/Tf { pop /cairo_font exch def /cairo_font_matrix where - { pop cairo_selectfont } if } bind def -/Td { matrix translate cairo_font_matrix matrix concatmatrix dup - /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point - /cairo_font where { pop cairo_selectfont } if } bind def -/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def - cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def -/g { setgray } bind def -/rg { setrgbcolor } bind def -/d1 { setcachedevice } bind def -/cairo_data_source { - CairoDataIndex CairoData length lt - { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } - { () } ifelse -} def -/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def -/cairo_image { image cairo_flush_ascii85_file } def -/cairo_imagemask { imagemask cairo_flush_ascii85_file } def -%%EndProlog -%%BeginSetup -%%BeginResource: font f-0-0 -%!FontType1-1.1 f-0-0 1.0 -11 dict begin -/FontName /f-0-0 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/FontBBox {30 -240 640 735 } readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 97 /a put -dup 99 /c put -dup 102 /f put -dup 107 /k put -dup 112 /p put -readonly def -currentdict end -currentfile eexec -f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467 -b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de -800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f -2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b -9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799 -69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5 -8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251caad907dcd8c61e -23500065b1568be79a17d2379b63d656e8f7715cdfdf357f0e30d9ab91d113c88231d875d60897 -1dee27eb5da34a09d2f1b1a2e7ab8be1036393cd6ae53eff0d77f452e9bf45eccc9e4836ae77c5 -b74262fa43bfccfd9a147a18dcdae6e50cc518129a64f669a5fae69c8082dec571d7d01a4e9f05 -6d3e52de0ea004acdbd1b3bf9b19aa17f839a75365a77b7275442a967093ffdf1694a72f9978a2 -304ac331d401b48e3e62a3a92cd39516dd480f088980d1ad8993a1f6fefb07e0d86b6f0293bb41 -68ac465726267cacb7516a0e910fe67c2dbfef06d8b64a9811506650d32fa182a0adcab8e2e21e -ca6d0dc81959c25ea2d3f7ccec13e0cb4a7ef88e97c36e74fa13010220d6835ebdcbabdb507d84 -239e5483e8a8b7a52d6e1ea4ea1f5e6bef4534710c4055265aaa86fb445f3b2fc62cfdd9e283d8 -8bd083d09f0971cde00f2031b58b304d5f647f02aabf7ba9062c33979cd391f692c72ee179b7a8 -16f9c9e668d20021bd2b6a0f0114898729c6228be2895a696aaef0ebbcc842e64d5e72cc1d9b75 -44314028987a238f8fc4c18a0db3546c9ea42194b6bbdc45587e36d605fe2b7608d9292ddc0c9b -be3e420b36fd52f9aef97f13533e101f34d4f882848f4845a7a824da815a710abe11a1ec8363c1 -06daa18dffb5a451af7bf3b20d79a63c94e305050ea893b7a61cc8cfdb2e8a593a073c2021b298 -40863c70742ab1734e1d6811cf1927832da10f562f6895575b50044179588ddd9ec4c413f68c3e -3063f9594dc94115af4d9d4d6259c2ebb5afa796131772de3d297a8cc04f7f10398acc9142b1aa -2da9741ad314918ff1553dafe4751b4c0efdc9d6a549acbf1b3d209f6ebe8f6561d627f37bbce1 -7213b92bf332c27718ca9f868f1724cda0774ea4c3a5a2ba99509eb9128c456e5526f234dc3adc -37ac61ead9dafba1b5d58a9443ceb92474535cd3515e9ce357420b230fe927e81f06b2363c70aa -b6e00858a44972ad3f8759069235bba0b8ae2c65a59fe3ee5642f88a8550a765907eb4f9432ac4 -9e896114d0bc969bc2c14acd9a50c31e2095133b6b4fc11a1136dbba4b515eaabf0cba23ffe795 -3532a1fca89780a841f3a5fe2514d31fd6d41fbcb5b8caadd53c1fa7b06506963f37006269d0ae -fc1d5d6bd7f6788544e01a77bdf35aaacdd41dd4fc16237759516c60ee9b57e7b56606e0fb5a25 -9e6cb3b2e22d3ac4db73c228fda1b327cace7cbe25594ea2a9445efeda7826604e3daf18ca977a -9a2788cddcea95b5460b648c12bebc3c39302a07481fe18ceed4c9e12ac7d51f8104bd589cf9f6 -68371d3aa8510b5ff08c972b84fd4e48c356f9098b9d130085f59bc7e748ac59e9715060d29b38 -d828e479d8a85e0aaaa7b4ab34b547643b9c3417305b29be240ba9514cd4656079f26f378a6af9 -f7c694b1332a14baa203faa5c6745eea7c9cc0b3fc13f722ff941857d141db5665b32ada8b7831 -06f5c01361bd4b161450546ad8812d364b394658c4d3e1e2cf1daba58315787fbe299a27a387f2 -1545b5d4bc3022e6a6803e971698504ebc44c9f7c02256a5ae01c9fb3194baf05fb7c9cd862427 -95ca9cfd57ba76d6697fc842ee19ff35ce8b9d3299a185a4d28537058b5ea471a818f521183ffa -4b171f078577707cfbb3b2c6de4659b6dbacb952a0213b0586bd5879096ec53540ad07463e5b25 -1a38d715de6a0bb6f92d3e20e1b25be654fe7aad2e057428b68e2d6830f2ee0ca384fb862813ba -d48832ec89991fa5e6bf9d3135378f0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndResource -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: 8 15 191 78 -%%EndPageSetup -q 8 15 183 63 rectclip -1 0 0 -1 0 86 cm q -0 g -BT -56.000126 0 0 -56.000126 52.419201 52.791732 Tm -/f-0-0 1 Tf -[(fpak)10(c)]TJ -ET -0.749999 w -0 J -0 j -[] 0.0 d -4 M q 1 0 0 1 0 0 cm -8.996 27.238 m 20.621 9.359 l 34.656 9.363 l 34.621 14.746 l 25.941 18.195 - l 17.332 33.629 l 17.41 55.852 l 9.316 55.785 l h -8.996 27.238 m S Q -q 1 0 0 1 0 0 cm -21.156 69.262 m 21.156 38.387 l 40.305 38.387 l 40.305 53.027 l 27.457 -53.027 l 27.457 69.52 l h -21.156 69.262 m S Q -q 1 0 0 1 0 0 cm -27.898 43.988 m 27.898 47.73 l 33.426 47.73 l 33.426 43.898 l h -27.898 43.988 m S Q -0.283465 w -q 1 0 0 1 0 0 cm -9.094 50.535 m 17.414 50.297 l S Q -q 1 0 0 1 0 0 cm -9.34 43.07 m 17.094 44.93 l S Q -q 1 0 0 1 0 0 cm -9.43 34.727 m 17.348 41.363 l S Q -q 1 0 0 1 0 0 cm -17.332 33.629 m 8.996 27.238 l S Q -q 1 0 0 1 0 0 cm -13.297 31.055 m 11.32 36.062 l 12.719 43.309 l 14.023 50.113 l 12.02 55.516 - l S Q -q 1 0 0 1 0 0 cm -17.332 33.629 m 12.203 21.801 l S Q -q 1 0 0 1 0 0 cm -21.246 26.223 m 12.203 21.801 l S Q -q 1 0 0 1 0 0 cm -15.379 16.828 m 21.246 26.223 l S Q -q 1 0 0 1 0 0 cm -23.562 22.152 m 15.379 16.828 l S Q -q 1 0 0 1 0 0 cm -25.941 18.195 m 15.379 16.828 l S Q -q 1 0 0 1 0 0 cm -13.297 31.055 m 14.234 26.23 l S Q -q 1 0 0 1 0 0 cm -14.234 26.23 m 21.246 26.223 l S Q -q 1 0 0 1 0 0 cm -25.941 18.195 m 17.918 13.906 l S Q -q 1 0 0 1 0 0 cm -20.621 9.359 m 25.941 18.195 l S Q -q 1 0 0 1 0 0 cm -34.656 9.363 m 25.941 18.195 l S Q -q 1 0 0 1 0 0 cm -25.941 18.195 m 26.527 9.582 l S Q -1 0 0 rg -23.523 67.027 m 23.523 67.027 23.523 67.031 23.523 67.031 c 23.52 67.031 - 23.52 67.027 23.52 67.027 c 23.52 67.027 23.52 67.027 23.523 67.027 c h -23.523 67.027 m f -0 g -0.749999 w -q 1 0 0 1 0 0 cm -23.523 67.027 m 23.523 67.027 23.523 67.031 23.523 67.031 c 23.52 67.031 - 23.52 67.027 23.52 67.027 c 23.52 67.027 23.52 67.027 23.523 67.027 c h -23.523 67.027 m S Q -1 0 0 rg -24.66 63.297 m 24.66 63.297 24.656 63.297 24.656 63.297 c 24.656 63.293 - 24.66 63.293 24.66 63.293 c 24.66 63.293 24.66 63.293 24.66 63.297 c h -24.66 63.297 m f -0 g -q 1 0 0 1 0 0 cm -24.66 63.297 m 24.66 63.297 24.656 63.297 24.656 63.297 c 24.656 63.293 - 24.66 63.293 24.66 63.293 c 24.66 63.293 24.66 63.293 24.66 63.297 c h -24.66 63.297 m S Q -0 0 1 rg -23.797 64.039 m 23.797 64.273 23.609 64.465 23.371 64.465 c 23.137 64.465 - 22.949 64.273 22.949 64.039 c 22.949 63.805 23.137 63.613 23.371 63.613 - c 23.609 63.613 23.797 63.805 23.797 64.039 c h -23.797 64.039 m f -1 0 0 rg -37.844 42.566 m 37.844 42.945 37.535 43.254 37.156 43.254 c 36.773 43.254 - 36.465 42.945 36.465 42.566 c 36.465 42.184 36.773 41.875 37.156 41.875 - c 37.535 41.875 37.844 42.184 37.844 42.566 c h -37.844 42.566 m f -0 g -0.141732 w -q 1 0 0 1 0 0 cm -35.977 42.188 m 31.02 39.777 l S Q -31.531 40.027 m 31.91 39.895 l 30.895 39.715 l 31.66 40.406 l h -31.531 40.027 m f* -0.0679747 w -q 1 0.486446 -0.486446 1 0 0 cm -41.243 19.965 m 41.497 19.708 l 40.605 19.963 l 41.496 20.22 l h -41.243 19.965 m S Q -0.141732 w -q 1 0 0 1 0 0 cm -29.828 39.73 m 23.582 45.012 l S Q -24.016 44.645 m 24.047 44.246 l 23.473 45.102 l 24.414 44.68 l h -24.016 44.645 m f* -0.0577315 w -q 1 -0.845211 0.845211 1 0 0 cm --8.002 37.881 m -7.787 37.664 l -8.544 37.88 l -7.787 38.098 l h --8.002 37.881 m S Q -0.141732 w -q 1 0 0 1 0 0 cm -23.82 46.355 m 25.027 51.145 l S Q -24.887 50.594 m 24.543 50.387 l 25.059 51.281 l 25.094 50.25 l h -24.887 50.594 m f* -0.0732958 w -q -0.252177 -1 1 -0.252177 0 0 cm --53.469 11.403 m -53.193 11.129 l -54.156 11.402 l -53.195 11.679 l h --53.469 11.403 m S Q -0.141732 w -q 1 0 0 1 0 0 cm -23.453 63.156 m 26.16 58.465 l S Q -25.875 58.953 m 25.98 59.34 l 26.23 58.34 l 25.488 59.059 l h -25.875 58.953 m f* -0.0654792 w -q -0.576787 1 -1 -0.576787 0 0 cm -33.038 -44.931 m 33.282 -45.177 l 32.424 -44.932 l 33.284 -44.686 l h -33.038 -44.931 m S Q -0.141732 w -q 1 0 0 1 0 0 cm -26.215 57.066 m 26.281 52.215 l S Q -26.273 52.785 m 26.555 53.07 l 26.285 52.074 l 25.984 53.062 l h -26.273 52.785 m f* -0.0755832 w -q -0.0137977 1 -1 -0.0137977 0 0 cm -52.413 -26.997 m 52.694 -27.282 l 51.702 -26.999 l 52.694 -26.711 l h -52.413 -26.997 m S Q -0.141732 w -q 1 0 0 1 0 0 cm -26.5 50.707 m 34.664 48.957 l S Q -34.109 49.074 m 33.895 49.41 l 34.805 48.926 l 33.773 48.859 l h -34.109 49.074 m f* -0.0739077 w -q -1 0.214603 -0.214603 -1 0 0 cm --22.54 -53.911 m -22.266 -54.188 l -23.235 -53.912 l -22.263 -53.637 l -h --22.54 -53.911 m S Q -0.141732 w -q 1 0 0 1 0 0 cm -36.809 49.66 m 38.371 43.828 l S Q -38.223 44.379 m 38.426 44.727 l 38.406 43.691 l 37.879 44.578 l h -38.223 44.379 m f* -0.0730145 w -q -0.26796 1 -1 -0.26796 0 0 cm -31.85 -46.757 m 32.123 -47.034 l 31.163 -46.757 l 32.122 -46.486 l h -31.85 -46.757 m S Q -Q Q -showpage -%%Trailer -end -%%EOF diff --git a/doc/user-manual/figures/scatteringQuad.eps b/doc/user-manual/figures/scatteringQuad.eps deleted file mode 100644 index ca8fd14..0000000 --- a/doc/user-manual/figures/scatteringQuad.eps +++ /dev/null @@ -1,303 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: cairo 1.16.0 (https://cairographics.org) -%%CreationDate: Thu Oct 08 15:41:58 2020 -%%Pages: 1 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%BoundingBox: 13 30 125 153 -%%EndComments -%%BeginProlog -50 dict begin -/q { gsave } bind def -/Q { grestore } bind def -/cm { 6 array astore concat } bind def -/w { setlinewidth } bind def -/J { setlinecap } bind def -/j { setlinejoin } bind def -/M { setmiterlimit } bind def -/d { setdash } bind def -/m { moveto } bind def -/l { lineto } bind def -/c { curveto } bind def -/h { closepath } bind def -/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto - 0 exch rlineto 0 rlineto closepath } bind def -/S { stroke } bind def -/f { fill } bind def -/f* { eofill } bind def -/n { newpath } bind def -/W { clip } bind def -/W* { eoclip } bind def -/BT { } bind def -/ET { } bind def -/BDC { mark 3 1 roll /BDC pdfmark } bind def -/EMC { mark /EMC pdfmark } bind def -/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def -/Tj { show currentpoint cairo_store_point } bind def -/TJ { - { - dup - type /stringtype eq - { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse - } forall - currentpoint cairo_store_point -} bind def -/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore - cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def -/Tf { pop /cairo_font exch def /cairo_font_matrix where - { pop cairo_selectfont } if } bind def -/Td { matrix translate cairo_font_matrix matrix concatmatrix dup - /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point - /cairo_font where { pop cairo_selectfont } if } bind def -/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def - cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def -/g { setgray } bind def -/rg { setrgbcolor } bind def -/d1 { setcachedevice } bind def -/cairo_data_source { - CairoDataIndex CairoData length lt - { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } - { () } ifelse -} def -/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def -/cairo_image { image cairo_flush_ascii85_file } def -/cairo_imagemask { imagemask cairo_flush_ascii85_file } def -%%EndProlog -%%BeginSetup -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: 13 30 125 153 -%%EndPageSetup -q 13 30 112 123 rectclip -1 0 0 -1 0 171 cm q -0 0.784314 0 rg -20.836 84.285 52.273 43.371 re f -0 g -0.751178 w -0 J -0 j -[] 0.0 d -4 M q 1 0 0 1 0 0 cm -20.836 84.285 52.273 43.371 re S Q -1 0.627451 0 rg -73.109 84.285 43.184 43.371 re f -0 g -q 1 0 0 1 0 0 cm -73.109 84.285 43.184 43.371 re S Q -0.0431373 0 1 rg -73.109 32.199 43.184 52.086 re f -0 g -q 1 0 0 1 0 0 cm -73.109 32.199 43.184 52.086 re S Q -1 0 0 rg -20.836 32.199 52.273 52.086 re f -0 g -q 1 0 0 1 0 0 cm -20.836 32.199 52.273 52.086 re S Q -q 1 0 0 1 0 0 cm -20.836 32.199 95.457 95.457 re S Q -0 0 1 rg -22.902 127.77 m 22.902 128.914 21.973 129.844 20.824 129.844 c 19.68 129.844 - 18.75 128.914 18.75 127.77 c 18.75 126.621 19.68 125.691 20.824 125.691 - c 21.973 125.691 22.902 126.621 22.902 127.77 c h -22.902 127.77 m f -q 1 0 0 1 0 0 cm -22.902 127.77 m 22.902 128.914 21.973 129.844 20.824 129.844 c 19.68 129.844 - 18.75 128.914 18.75 127.77 c 18.75 126.621 19.68 125.691 20.824 125.691 - c 21.973 125.691 22.902 126.621 22.902 127.77 c h -22.902 127.77 m S Q -1 0 0 rg -118.059 127.23 m 118.059 128.379 117.129 129.309 115.98 129.309 c 114.836 - 129.309 113.906 128.379 113.906 127.23 c 113.906 126.086 114.836 125.156 - 115.98 125.156 c 117.129 125.156 118.059 126.086 118.059 127.23 c f -q 1 0 0 1 0 0 cm -118.059 127.23 m 118.059 128.379 117.129 129.309 115.98 129.309 c 114.836 - 129.309 113.906 128.379 113.906 127.23 c 113.906 126.086 114.836 125.156 - 115.98 125.156 c 117.129 125.156 118.059 126.086 118.059 127.23 c S Q -0 0.784314 0 rg -117.789 32.41 m 117.789 33.559 116.859 34.488 115.715 34.488 c 114.566 -34.488 113.637 33.559 113.637 32.41 c 113.637 31.266 114.566 30.336 115.715 - 30.336 c 116.859 30.336 117.789 31.266 117.789 32.41 c f -q 1 0 0 1 0 0 cm -117.789 32.41 m 117.789 33.559 116.859 34.488 115.715 34.488 c 114.566 -34.488 113.637 33.559 113.637 32.41 c 113.637 31.266 114.566 30.336 115.715 - 30.336 c 116.859 30.336 117.789 31.266 117.789 32.41 c S Q -1 0.627451 0 rg -23.238 32.41 m 23.238 33.559 22.309 34.488 21.16 34.488 c 20.016 34.488 - 19.086 33.559 19.086 32.41 c 19.086 31.266 20.016 30.336 21.16 30.336 c - 22.309 30.336 23.238 31.266 23.238 32.41 c f -q 1 0 0 1 0 0 cm -23.238 32.41 m 23.238 33.559 22.309 34.488 21.16 34.488 c 20.016 34.488 - 19.086 33.559 19.086 32.41 c 19.086 31.266 20.016 30.336 21.16 30.336 c - 22.309 30.336 23.238 31.266 23.238 32.41 c S Q -0 g -76.465 84.191 m 76.465 86.262 74.785 87.941 72.715 87.941 c 70.645 87.941 - 68.965 86.262 68.965 84.191 c 68.965 82.121 70.645 80.441 72.715 80.441 - c 74.785 80.441 76.465 82.121 76.465 84.191 c h -76.465 84.191 m f -q 1 0 0 1 0 0 cm -76.465 84.191 m 76.465 86.262 74.785 87.941 72.715 87.941 c 70.645 87.941 - 68.965 86.262 68.965 84.191 c 68.965 82.121 70.645 80.441 72.715 80.441 - c 74.785 80.441 76.465 82.121 76.465 84.191 c h -76.465 84.191 m S Q -0.749999 w -q 1 0 0 1 0 0 cm -20.355 84.105 m 115.98 84.105 l S Q -q 1 0 0 1 0 0 cm -72.922 127.277 m 72.922 32.008 l S Q -14.742 139.539 m 16.68 139.539 l 16.68 132.867 l 14.57 133.289 l 14.57 -132.211 l 16.664 131.789 l 17.852 131.789 l 17.852 139.539 l 19.789 139.539 - l 19.789 140.539 l 14.742 140.539 l h -14.742 139.539 m f -120.676 136.695 m 124.816 136.695 l 124.816 137.695 l 119.254 137.695 l - 119.254 136.695 l 119.699 136.238 120.309 135.617 121.082 134.836 c 121.863 - 134.047 122.352 133.535 122.551 133.305 c 122.934 132.891 123.199 132.535 - 123.348 132.242 c 123.504 131.941 123.582 131.648 123.582 131.367 c 123.582 - 130.898 123.414 130.52 123.082 130.227 c 122.758 129.938 122.336 129.789 - 121.816 129.789 c 121.441 129.789 121.043 129.852 120.629 129.977 c 120.223 - 130.102 119.785 130.301 119.316 130.57 c 119.316 129.367 l 119.793 129.18 - 120.238 129.039 120.645 128.945 c 121.059 128.844 121.441 128.789 121.785 - 128.789 c 122.691 128.789 123.414 129.02 123.957 129.477 c 124.496 129.926 - 124.77 130.531 124.77 131.289 c 124.77 131.645 124.699 131.984 124.566 -132.305 c 124.43 132.629 124.184 133.008 123.832 133.445 c 123.727 133.563 - 123.414 133.891 122.895 134.43 c 122.371 134.973 121.633 135.727 120.676 - 136.695 c h -120.676 136.695 m f -122.875 24.07 m 123.438 24.195 123.875 24.453 124.188 24.836 c 124.508 -25.211 124.672 25.68 124.672 26.242 c 124.672 27.109 124.375 27.781 123.781 - 28.258 c 123.188 28.727 122.344 28.961 121.25 28.961 c 120.883 28.961 120.504 - 28.922 120.109 28.852 c 119.723 28.781 119.328 28.672 118.922 28.523 c -118.922 27.383 l 119.242 27.57 119.598 27.719 119.984 27.82 c 120.379 27.914 - 120.789 27.961 121.219 27.961 c 121.957 27.961 122.52 27.816 122.906 27.523 - c 123.301 27.234 123.5 26.805 123.5 26.242 c 123.5 25.734 123.316 25.332 - 122.953 25.039 c 122.586 24.75 122.086 24.602 121.453 24.602 c 120.422 -24.602 l 120.422 23.633 l 121.5 23.633 l 122.07 23.633 122.516 23.52 122.828 - 23.289 c 123.141 23.051 123.297 22.711 123.297 22.273 c 123.297 21.828 -123.133 21.484 122.813 21.242 c 122.5 21.004 122.047 20.883 121.453 20.883 - c 121.117 20.883 120.766 20.922 120.391 20.992 c 120.023 21.055 119.617 - 21.16 119.172 21.305 c 119.172 20.258 l 119.629 20.133 120.051 20.039 120.438 - 19.977 c 120.832 19.914 121.203 19.883 121.547 19.883 c 122.453 19.883 -123.164 20.086 123.688 20.492 c 124.207 20.898 124.469 21.453 124.469 22.148 - c 124.469 22.641 124.328 23.051 124.047 23.383 c 123.773 23.719 123.383 - 23.945 122.875 24.07 c h -122.875 24.07 m f -17.223 19.746 m 14.238 24.418 l 17.223 24.418 l h -16.91 18.715 m 18.41 18.715 l 18.41 24.418 l 19.66 24.418 l 19.66 25.402 - l 18.41 25.402 l 18.41 27.465 l 17.223 27.465 l 17.223 25.402 l 13.285 -25.402 l 13.285 24.262 l h -16.91 18.715 m f -39.906 47.727 m 38.297 52.07 l 41.516 52.07 l h -39.234 46.555 m 40.578 46.555 l 43.906 55.305 l 42.672 55.305 l 41.875 -53.055 l 37.938 53.055 l 37.141 55.305 l 35.891 55.305 l h -39.234 46.555 m f -45.5 57.066 m 48.188 57.066 l 48.188 57.707 l 44.578 57.707 l 44.578 57.066 - l 44.867 56.766 45.266 56.359 45.766 55.848 c 46.266 55.34 46.582 55.012 - 46.719 54.863 c 46.957 54.582 47.125 54.348 47.219 54.16 c 47.32 53.965 - 47.375 53.777 47.375 53.598 c 47.375 53.297 47.266 53.051 47.047 52.863 - c 46.836 52.668 46.566 52.566 46.234 52.566 c 45.992 52.566 45.738 52.609 - 45.469 52.691 c 45.195 52.777 44.91 52.902 44.609 53.066 c 44.609 52.301 - l 44.922 52.176 45.207 52.082 45.469 52.02 c 45.738 51.957 45.988 51.926 - 46.219 51.926 c 46.801 51.926 47.27 52.074 47.625 52.363 c 47.977 52.656 - 48.156 53.047 48.156 53.535 c 48.156 53.777 48.109 54 48.016 54.207 c 47.93 - 54.418 47.773 54.66 47.547 54.941 c 47.484 55.016 47.281 55.23 46.938 55.582 - c 46.594 55.938 46.113 56.434 45.5 57.066 c h -45.5 57.066 m f -93.52 47.684 m 91.91 52.027 l 95.129 52.027 l h -92.848 46.512 m 94.191 46.512 l 97.52 55.262 l 96.285 55.262 l 95.488 53.012 - l 91.551 53.012 l 90.754 55.262 l 89.504 55.262 l h -92.848 46.512 m f -98.582 57.02 m 99.832 57.02 l 99.832 52.676 l 98.473 52.957 l 98.473 52.254 - l 99.832 51.973 l 100.598 51.973 l 100.598 57.02 l 101.848 57.02 l 101.848 - 57.66 l 98.582 57.66 l h -98.582 57.02 m f -45.98 98.063 m 44.371 102.406 l 47.59 102.406 l h -45.309 96.891 m 46.652 96.891 l 49.98 105.641 l 48.746 105.641 l 47.949 - 103.391 l 44.012 103.391 l 43.215 105.641 l 41.965 105.641 l h -45.309 96.891 m f -53.23 104.98 m 53.605 105.055 53.895 105.215 54.105 105.465 c 54.313 105.715 - 54.418 106.023 54.418 106.387 c 54.418 106.949 54.219 107.387 53.824 107.699 - c 53.438 108.004 52.891 108.152 52.184 108.152 c 51.941 108.152 51.699 -108.125 51.449 108.074 c 51.199 108.035 50.938 107.965 50.668 107.871 c -50.668 107.137 l 50.875 107.254 51.105 107.348 51.355 107.418 c 51.613 107.48 - 51.887 107.512 52.168 107.512 c 52.645 107.512 53.012 107.418 53.262 107.23 - c 53.52 107.035 53.652 106.754 53.652 106.387 c 53.652 106.055 53.531 105.793 - 53.293 105.605 c 53.051 105.418 52.723 105.324 52.309 105.324 c 51.652 -105.324 l 51.652 104.684 l 52.34 104.684 l 52.723 104.684 53.016 104.613 - 53.215 104.465 c 53.41 104.309 53.512 104.09 53.512 103.809 c 53.512 103.52 - 53.406 103.293 53.199 103.137 c 52.988 102.98 52.691 102.902 52.309 102.902 - c 52.098 102.902 51.875 102.93 51.637 102.98 c 51.395 103.023 51.129 103.09 - 50.84 103.184 c 50.84 102.496 l 51.129 102.414 51.402 102.355 51.652 102.324 - c 51.91 102.285 52.156 102.262 52.387 102.262 c 52.969 102.262 53.426 102.398 - 53.762 102.668 c 54.105 102.93 54.277 103.285 54.277 103.73 c 54.277 104.043 - 54.184 104.309 53.996 104.527 c 53.816 104.746 53.563 104.898 53.23 104.98 - c h -53.23 104.98 m f -93.707 97.875 m 92.098 102.219 l 95.316 102.219 l h -93.035 96.703 m 94.379 96.703 l 97.707 105.453 l 96.473 105.453 l 95.676 - 103.203 l 91.738 103.203 l 90.941 105.453 l 89.691 105.453 l h -93.035 96.703 m f -100.754 102.836 m 98.801 105.867 l 100.754 105.867 l h -100.551 102.164 m 101.52 102.164 l 101.52 105.867 l 102.316 105.867 l 102.316 - 106.508 l 101.52 106.508 l 101.52 107.852 l 100.754 107.852 l 100.754 106.508 - l 98.176 106.508 l 98.176 105.773 l h -100.551 102.164 m f -27.949 77.395 m 27.949 80.301 l 27.043 80.301 l 27.043 72.754 l 27.949 -72.754 l 27.949 73.582 l 28.137 73.262 28.371 73.02 28.652 72.863 c 28.941 - 72.707 29.293 72.629 29.699 72.629 c 30.363 72.629 30.902 72.895 31.309 - 73.426 c 31.723 73.949 31.934 74.637 31.934 75.488 c 31.934 76.355 31.723 - 77.051 31.309 77.582 c 30.902 78.105 30.363 78.363 29.699 78.363 c 29.293 - 78.363 28.941 78.285 28.652 78.129 c 28.371 77.973 28.137 77.73 27.949 -77.395 c h -31.012 75.488 m 31.012 74.832 30.871 74.316 30.59 73.941 c 30.316 73.566 - 29.949 73.379 29.48 73.379 c 29 73.379 28.625 73.566 28.355 73.941 c 28.082 - 74.316 27.949 74.832 27.949 75.488 c 27.949 76.156 28.082 76.676 28.355 - 77.051 c 28.625 77.426 29 77.613 29.48 77.613 c 29.949 77.613 30.316 77.426 - 30.59 77.051 c 30.871 76.676 31.012 76.156 31.012 75.488 c h -31.012 75.488 m f -35.578 70.629 m 35.148 71.379 34.828 72.125 34.609 72.863 c 34.398 73.594 - 34.297 74.332 34.297 75.082 c 34.297 75.832 34.398 76.578 34.609 77.316 - c 34.828 78.059 35.148 78.793 35.578 79.535 c 34.797 79.535 l 34.316 78.773 - 33.953 78.027 33.703 77.285 c 33.461 76.547 33.344 75.813 33.344 75.082 - c 33.344 74.355 33.461 73.625 33.703 72.895 c 33.941 72.156 34.305 71.402 - 34.797 70.629 c h -35.578 70.629 m f -41.875 72.754 m 39.906 75.41 l 41.984 78.223 l 40.922 78.223 l 39.328 76.066 - l 37.734 78.223 l 36.672 78.223 l 38.797 75.363 l 36.859 72.754 l 37.922 - 72.754 l 39.375 74.707 l 40.813 72.754 l h -41.875 72.754 m f -43.121 79.676 m 44.168 79.676 l 44.168 76.066 l 43.027 76.301 l 43.027 -75.707 l 44.152 75.488 l 44.793 75.488 l 44.793 79.676 l 45.84 79.676 l -45.84 80.223 l 43.121 80.223 l h -43.121 79.676 m f -47.621 76.988 m 48.652 76.988 l 48.652 77.816 l 47.855 79.379 l 47.215 -79.379 l 47.621 77.816 l h -47.621 76.988 m f -55.117 72.754 m 53.148 75.41 l 55.227 78.223 l 54.164 78.223 l 52.57 76.066 - l 50.977 78.223 l 49.914 78.223 l 52.039 75.363 l 50.102 72.754 l 51.164 - 72.754 l 52.617 74.707 l 54.055 72.754 l h -55.117 72.754 m f -56.801 79.676 m 59.035 79.676 l 59.035 80.223 l 56.02 80.223 l 56.02 79.676 - l 56.27 79.426 56.602 79.094 57.02 78.676 c 57.434 78.25 57.699 77.973 -57.816 77.848 c 58.023 77.621 58.164 77.426 58.238 77.27 c 58.32 77.105 -58.363 76.941 58.363 76.785 c 58.363 76.535 58.273 76.332 58.098 76.176 -c 57.918 76.02 57.691 75.941 57.41 75.941 c 57.211 75.941 56.996 75.98 56.77 - 76.051 c 56.551 76.113 56.316 76.219 56.066 76.363 c 56.066 75.707 l 56.316 - 75.605 56.551 75.527 56.77 75.473 c 56.996 75.422 57.207 75.395 57.395 -75.395 c 57.883 75.395 58.273 75.52 58.566 75.77 c 58.855 76.012 59.004 -76.34 59.004 76.754 c 59.004 76.941 58.965 77.125 58.895 77.301 c 58.82 -77.48 58.691 77.688 58.504 77.926 c 58.449 77.988 58.277 78.168 57.988 78.457 - c 57.707 78.75 57.309 79.156 56.801 79.676 c h -56.801 79.676 m f -60.484 70.629 m 61.266 70.629 l 61.754 71.402 62.117 72.156 62.359 72.895 - c 62.609 73.625 62.734 74.355 62.734 75.082 c 62.734 75.813 62.609 76.547 - 62.359 77.285 c 62.117 78.027 61.754 78.773 61.266 79.535 c 60.484 79.535 - l 60.922 78.793 61.242 78.059 61.453 77.316 c 61.672 76.578 61.781 75.832 - 61.781 75.082 c 61.781 74.332 61.672 73.594 61.453 72.863 c 61.242 72.125 - 60.922 71.379 60.484 70.629 c h -60.484 70.629 m f -Q Q -showpage -%%Trailer -end -%%EOF diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index 1666f42de4b56c9b9e049349df1126da6f6f973f..5321ba4a3eface3b755b59540491b7e7b76399fa 100644 GIT binary patch literal 271611 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�Ge<%$PpWt! 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%0D{xOZZngY}5!BVH-hvIOc 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 a!`#io+s*0}3&_M^ScYj#5 z_F8+dRlp9H!NxrR@Ys>MUutgaaG8hAQw=rA(5O}7`sw!lxq{6-;#p7=h*0`!PAcks zN_@O2;+@ANDz>Yu-_Q5Fxo@Hy%(6Z&Wu3Aw+d$5+=SlvMJ^4RWxJSN6NEuX4@+8_4pSQ1$_#Dt)tf=kgTN#a zme6V6FkuEam`NSU!{_>(?fJ+=1V~1GWd+-a1ctQ|#j80PtXxb`JK^3aH2rT>@Uv{K zxI0r+85FfY1I^;B@Hm}ger1nvwl+Hv|M7QRSxwg{($%ngB9>$+NOp{NiUlmUQ~c39 zx9cfez}3@@A;>}ZOe_nx*t5Ah`brF@KeI-0Q7k1N(ySuM&w`rJl=|e=Lt-Env@+K# z_tJB%sIdqRh7}fHR+@w1;|P2XoB!o3KW0Imp#Bu;2)xE-Xyx^(6Zs;VNqco#VZoiR z`GDH*si+`n0Whi@>N+Ef78*&8eS@{vHjTE$rIhNrBpx7-&jH}R#5nC2ue6`9tb^gU zccGIa*?lagd9QWh7)1yNYG05tBaVBrb4r${k?~#kkxBqH+66R!+kferl*r1x)17w0 z8uV9ofd=B$khtB%WsO?@nLkYQ(fO@qXC9GO;h{n zwfczt&zVF1jGfK0-f-umtp6mo%*@6vM}Jw225fB&Zy;(^*pD8l24gh;Hm4#w0va~vOBu+%%6&KT-znxD~y7ULHCX=l4D2`wex zU5SmdAb9z*U(KSE+D{x@NWYwtaIWe1_Uli)J_Kh2WdgkLe=w{S@VtEeT`A}=4t$Ko z&O*4l)7 zZvc8jP6GFp#|{hwRhSMMumaR>TM=UwEzd#aMD-#k4jQb(I@F|ZZHb>P5{|O*J3k#@ zIFj@-?EqH~d&U&aHFadn&Xn{u$F}ZN`7)~+OSOc?X^Pv-Y zcU*gVcnHRy_~kTNd+o1ucV^TBJns$EzTXeJOj0#bjb@G~g1qeFf}yDDaEQf{sHsEe z%8xcLVbH(p(Xw_x2Igf{ek2c$ZUuK@?H0`K&A41#oz0EyVE)-UnApIua}hBS{cFR_ z#?AJhAjf}#e0+>@=JuAZRzw`!iN@<>iD;0d08nsQepyyhR@9IF__oo%BYP27- zwsqUFgI*_NflIAbZX_FnG%jR=K|mOy5{^+c0oEoO=8e)hTrJuGuuyl8=nb7@8*9aT z3Dl^ma;zt98t?|tr#6fE2-;d@5V4Ac%n*oequnuJ}R3Ak!?OW5~{DN03=rpbRJ zrGd0pE>p6vylMYsDPM{TIm(Ia%j6ff`GclatrUi*5XnTII%Ny-)ds_ha9U;Vhxx!_ z{H^GO_*x7emMX#a1MNQoStZfMn6|tv)B-LeCTRaGU9+%d(m-59?Lb915F0rQsR+H? zHQ-nZB}?Nt0NBes1(^)yVl)mzGMSHE)M4H_5GLcj=k;Y?kIdq2wAT20(X@z<1O9+8 z+bP$4SfRn}D>oqtFK$hqu|8$UN~@ahWIK!SMcF31?Lv55-nHV~`pfCzueo(X+eSu8 ziAF%9ld^2ev3y$f-L_PWYH3G7QmmKb)QcTfQE%?IIzZWwOuUie+!B?{Ut|<$t82_Y zGl%qM$Pju9{ifCGdVecOJ$4sjg-tj1!D2TV3Ku=5s{H|GBx{u%oSC!d%+>$+R25bB z&Ty`agsPh!*jwIxc}@a7@VdpJUmyEXPPJKlB%1)U;BxZHJP)qp`@)r9tJ(b*aPAQK zVX4X*4WQc!PCugdKnYyQ;hH4`t851n%_hjSz)#b)2x4iQ+i3C38`sIVmAeeMcs@V& z*Wp72Hzr=1wdGCppItCnNa@-F)PWrm%6^qeMh*g&9`~X200~?M;hCMzTSDiKD zN$`@KSz?+nK)F8_#QTU_6?{O7a`vanEt@fq5i ztc1;kF*gdcdGJSLK^>y!*iCUN-*V3T!^=%EG12Zwv5KHts=N^n1FQ&@28Y~xCe3~@0Zy8 zC~r=9go9~LkZ+#4&uMrZnR;lCIXKET>ovw8^a~$CXOp2G zfUEnX#bby)`+p@!@J#sj`H~a`h-Iir{`@lhK(Gf$aqtmN{k5nxMj4bnV};+0s&Xz< zwlL8)ncM4#Oy5nn;5f-A;7WItk_PJwqPRt(hJE3 zIm;ReeWw0f0run&^mAB@qRorlkRvl-j?X6DczI)I>6};1_ z4k{iJpbeZKoV+!xy zk!=@n-4pHLX~zw~kUVTes?8PzGyNG=q>MBg4`_l|JbNOQ$muFsbvOdCcGCSCQeyzuv6R$Y zUx|f%Q;l1p>6GUWuHA&TW>#ixV0E0jhYHl>mN_sp7wi;(R{ORh!foPum5nGU+uBjS zKUOA)_-`*asCYV31KC}M8Eh#+C!U?eJ{dA78%F3d411jLOk59@F{M9Wu)Rke;XRpj ztL~!k^u3FFOFNxAf=BUe(N>+w!uT%sT-jurpr$eSWW{<~3yr&*qH&HH^b32T1Abl8 zc9rYAftm{7(RH<<;Gf@>0(Awf4)cS1CoqzQaVJe>T`J{UZ6l*v$a^wt*8aL zyudf%>osV*!`h)GH z6@g|vY0pA@)mh;Ptbb_wr{A6T)Y(X52RjaF{>vv1oZ{RoPm zYc2rClN7v(d!51A{%{!mgoXi>iNGk>1pEo~70JaTp=w;Wc*y{cN9{L5|5}jkhe94; zB=3o2D2tmZ{c|-U%Dk`ISHiIgnza9-Y5zmO{>2bk*xA_sL)4gA{$HjBZbih*!udZW z5f=psV8KOpqD5(6SU~7Rn-@kA)~leBU$0KxNr21v! z%W9fASO;i()mQ;4aYl}4AwFv#YEtlX2d0*Ot|H5lHsD`(lQ_Idk9haH9BV`rY_l(4MxEirC0%qK1d6o2qlZR=OI0 zA~qkd>D0^cR;@V}1W)|;pv$WHkZ{)%GH#e!u0nvmoLD`MnB9qQM87Msc2rIO2ZhKEa5^1?FGL&yxOGG1~ z1&n0%D1x!U!6ncCE0X$k)0HM{%}g0tQA3;yt5B*GUb%~|rV&*%Ws)qi5)!{kV?zpU zX?xSLpmO*Lx}?!`Z?kH#VffNtZ_{2I<2w01nHp?5Q#9K1WV5%3s%ghUyOjaL+v z0$#MRuyJPpd>SwGCgz^JmucA%&s}&-&TARnd^l4qHMh1xZG_SxG;-J|qM0Qpj!uP^$EC7j*7M ztl4N&A*sRmGysAHjTx$qwvH>FZJ`8EwmcCI7pl33wkm5V5S z_LuW6_iux5C#Z%zLn!YhrX=EhNws{w9h?g4Cjr5d&Q>EcQ~-d4!&=9#{|id~0f_%p zn@p@+{~Jr#SpTc)V`fVE-yfxFe+_W!zHtxy%=b8K=Y|N*yuH0x z3TE9sLdpu}{9GKZX#(o5^=g-}jHelQa_$~G(NBiYk~JcwaB6mM$#;g4gn3PQSJQTE_IciLil?MtAgCppoVxSG~`fqnibw zMVss+E}$dL(+5P$)Su6lBad4YxIUJKP5fZPCP$V=hOE?8GF^VoZN`_`Hr*H{leSQ1 z>XEkliBiY0XpRY7PicS+wfOJf1HiZ=X`w57!uIelvx>(wbfxg#U_ z^mgc)6W&M_$9nHfybPB%i}w`+A%T0prczg!P`h*xQ(umX6}dplz~G)pKkX;S({#7@ z3v8^@o}H8rP&H?R%v8>gK7xX$;qzs`**(GdU|y$+EPe5W*0G*QEhYRI!T33N4&=n&W}CP5~g;76)*M9f%L^ z8ev;62|=z5Z^nSt9S2O?8KzPrH}cA~1ej$E%Ckyg?(W$Nm+AiX{&FYa7nL3qvZD=A z9Ii>@4`fZ@ntmN$dF?J7>r_Hz74-00gXR}5V}~qgkTeOG%HM-y+;PcQ-J6|3&Cx;d z2X`+_t8C1)n<}|{`-y%-PAil44Js3JbRGGpL-nF@3hi$ zx18L1VX{4Hdf#m`QhfvZ&dpIf+rIwqz^YZp(Ad8HkH$wMb}<7?#Qhwey6xgUXUYkj zU&$WIk@b!_1KvAJ!{=0nA#Zv`(E7bU#xkI7>a#5Ibu?bucoXYBNFg2V)2rziv*1Y+NEkC!cH#Z3N^GHa$9s#v2qArMa#OL&Y}xO-19+=JeGs-{o) zConm(jHsCCZwyJq=dFr5w5{FUqj9b;{up=+_DV8WD5j0GxsaTX+Pt0I4~FpIiHX2vP3 zqHb#3nN^QyULz~_s2^Ogs1L4gw_a(kO1%->YPq)~cb3T?p})Pmtl$?)=!KBMgKczPh6r1&bu(v)K!1#Z znNxJ@9$u>0e5kU8F=%mpM?Csdf<5>ZsYKeSEjo0)qB7v1ffkA#i<2#L2d@>}swf-{ zMZC(n6*<-YGAXuf$)5`Oi%4EgU2b?sOB5jPwW+%Ty3cAkY&y6Elyn5dg(Ue-ab5sv zH(t)=T+lR8mzU_2*Xbx!R&EoiE~a|zq$zY&OE~s5E>zq7H&P-6@N1FQmORxJXi-Vc zVfhp?KwJd~js6+F<*Ve}%q{AszEhS4R=KC21zmEaaFNN;zGjy1RlWZe%%I?5x&RQ` z0|@7=!oHaGBUe6eP_Eb3CDF