Minor improvement in mesh structure to allow different imput formats.
Organization of meshes per geometry type.
This commit is contained in:
parent
7152a232fe
commit
3b125d0952
14 changed files with 158 additions and 100 deletions
|
|
@ -1,46 +1,26 @@
|
|||
|
||||
OBJS = moduleCaseParam.o moduleCompTime.o moduleList.o\
|
||||
moduleMesh.o moduleMeshCyl.o moduleMeshCylBoundary.o\
|
||||
moduleMeshCylRead.o moduleOutput.o moduleInput.o \
|
||||
moduleSolver.o moduleCollisions.o moduleTable.o \
|
||||
moduleParallel.o moduleEM.o moduleMesh1D.o \
|
||||
moduleMesh1DBoundary.o moduleMesh1DRead.o
|
||||
OBJS = moduleCaseParam.o moduleCompTime.o moduleList.o \
|
||||
moduleOutput.o moduleInput.o moduleSolver.o \
|
||||
moduleCollisions.o moduleTable.o moduleParallel.o \
|
||||
moduleEM.o
|
||||
|
||||
all: $(OBJS)
|
||||
all: $(OBJS) mesh.o
|
||||
|
||||
moduleCollisions.o: moduleTable.o moduleSpecies.o moduleRefParam.o moduleConstParam.o moduleMeshCyl.f95
|
||||
mesh.o: moduleCollisions.o moduleBoundary.o
|
||||
$(MAKE) -C mesh all
|
||||
|
||||
moduleCollisions.o: moduleTable.o moduleSpecies.o moduleRefParam.o moduleConstParam.o moduleCollisions.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleInput.o: moduleParallel.o moduleRefParam.o moduleCaseParam.o moduleSolver.o moduleInject.o moduleBoundary.o moduleMesh.o moduleMeshCylRead.o moduleMesh1DRead.o moduleErrors.o moduleSpecies.o moduleInput.f95
|
||||
moduleInput.o: moduleParallel.o moduleRefParam.o moduleCaseParam.o moduleSolver.o moduleInject.o moduleBoundary.o moduleErrors.o moduleSpecies.o moduleInput.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleInject.o: moduleSpecies.o moduleSolver.o moduleMesh.o moduleMeshCyl.o moduleInject.f95
|
||||
moduleInject.o: moduleSpecies.o moduleSolver.o moduleInject.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleList.o: moduleSpecies.o moduleErrors.o moduleList.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMesh.o: moduleCollisions.o moduleOutput.o moduleList.o moduleSpecies.o moduleMesh.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMeshCyl.o: moduleRefParam.o moduleCollisions.o moduleOutput.o moduleMesh.o moduleMeshCyl.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMeshCylBoundary.o: moduleMeshCyl.o moduleMeshCylBoundary.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMeshCylRead.o: moduleBoundary.o moduleMeshCyl.o moduleMeshCylBoundary.o moduleMeshCylRead.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMesh1D.o: moduleRefParam.o moduleCollisions.o moduleOutput.o moduleMesh.o moduleMesh1D.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMesh1DBoundary.o: moduleMesh1D.o moduleMesh1DBoundary.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMesh1DRead.o: moduleBoundary.o moduleMesh1D.o moduleMesh1DBoundary.o moduleMesh1DRead.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleOutput.o: moduleSpecies.o moduleRefParam.o moduleOutput.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
|
|
@ -50,13 +30,13 @@ moduleRefParam.o: moduleConstParam.o moduleRefParam.f95
|
|||
moduleSpecies.o: moduleErrors.o moduleCaseParam.o moduleSpecies.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleSolver.o: moduleList.o moduleEM.o moduleSpecies.o moduleRefParam.o moduleMesh.o moduleOutput.o moduleSolver.f95
|
||||
moduleSolver.o: mesh.o moduleList.o moduleEM.o moduleSpecies.o moduleRefParam.o moduleOutput.o moduleSolver.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleTable.o: moduleErrors.o moduleTable.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleEM.o: moduleSpecies.o moduleMesh.o moduleEM.f95
|
||||
moduleEM.o: mesh.o moduleSpecies.o moduleEM.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
%.o: %.f95
|
||||
|
|
|
|||
11
src/modules/mesh/1DCart/makefile
Normal file
11
src/modules/mesh/1DCart/makefile
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
all: moduleMesh1D.o moduleMesh1DBoundary.o moduleMesh1DRead.o
|
||||
|
||||
moduleMesh1D.o: moduleMesh1D.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMesh1DBoundary.o: moduleMesh1D.o moduleMesh1DBoundary.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMesh1DRead.o: moduleMesh1D.o moduleMesh1DBoundary.o moduleMesh1DRead.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
|
|
@ -109,10 +109,10 @@ MODULE moduleMesh1D
|
|||
|
||||
END SUBROUTINE initNode1D
|
||||
|
||||
FUNCTION getCoord1D(self) RESULT(r)
|
||||
PURE FUNCTION getCoord1D(self) RESULT(r)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshNode1D):: self
|
||||
CLASS(meshNode1D), INTENT(in):: self
|
||||
REAL(8):: r(1:3)
|
||||
|
||||
r = (/ self%x, 0.D0, 0.D0 /)
|
||||
|
|
@ -369,7 +369,7 @@ MODULE moduleMesh1D
|
|||
|
||||
END FUNCTION gatherEFSegm
|
||||
|
||||
!Get nodes from segment
|
||||
!Get nodes from 1D volume
|
||||
PURE FUNCTION getNodesSegm(self) RESULT(n)
|
||||
IMPLICIT NONE
|
||||
|
||||
|
|
@ -3,9 +3,11 @@ MODULE moduleMesh1DRead
|
|||
USE moduleMesh1D
|
||||
USE moduleMesh1DBoundary
|
||||
|
||||
!TODO: make this abstract to allow different mesh formats
|
||||
TYPE, EXTENDS(meshGeneric):: mesh1DGeneric
|
||||
CONTAINS
|
||||
PROCEDURE, PASS:: readMesh => readMesh1D
|
||||
PROCEDURE, PASS:: init => init1DMesh
|
||||
PROCEDURE, PASS:: readMesh => readMesh1D
|
||||
|
||||
END TYPE
|
||||
|
||||
|
|
@ -15,11 +17,34 @@ MODULE moduleMesh1DRead
|
|||
END INTERFACE connected
|
||||
|
||||
CONTAINS
|
||||
!Init 1D mesh
|
||||
SUBROUTINE init1DMesh(self, meshFormat)
|
||||
USE moduleMesh
|
||||
USE moduleErrors
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(mesh1DGeneric), INTENT(out):: self
|
||||
CHARACTER(:), ALLOCATABLE, INTENT(in):: meshFormat
|
||||
|
||||
SELECT CASE(meshFormat)
|
||||
CASE ("gmsh")
|
||||
self%printOutput => printOutputGmsh
|
||||
self%printColl => printCollGmsh
|
||||
self%printEM => printEMGmsh
|
||||
|
||||
CASE DEFAULT
|
||||
CALL criticalError("Mesh type " // meshFormat // " not supported.", "init1D")
|
||||
|
||||
END SELECT
|
||||
|
||||
END SUBROUTINE init1DMesh
|
||||
|
||||
!Reads 1D mesh
|
||||
SUBROUTINE readMesh1D(self, filename)
|
||||
USE moduleBoundary
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(mesh1DGeneric), INTENT(out):: self
|
||||
CLASS(mesh1DGeneric), INTENT(inout):: self
|
||||
CHARACTER(:), ALLOCATABLE, INTENT(in):: filename
|
||||
REAL(8):: x
|
||||
INTEGER:: p(1:2)
|
||||
11
src/modules/mesh/Cyl/makefile
Normal file
11
src/modules/mesh/Cyl/makefile
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
all : moduleMeshCyl.o moduleMeshCylBoundary.o moduleMeshCylRead.o
|
||||
|
||||
moduleMeshCyl.o: moduleMeshCyl.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMeshCylBoundary.o: moduleMeshCyl.o moduleMeshCylBoundary.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleMeshCylRead.o: moduleMeshCyl.o moduleMeshCylBoundary.o moduleMeshCylRead.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
|
|
@ -154,10 +154,10 @@ MODULE moduleMeshCyl
|
|||
|
||||
END SUBROUTINE initNodeCyl
|
||||
|
||||
FUNCTION getCoordCyl(self) RESULT(r)
|
||||
PURE FUNCTION getCoordCyl(self) RESULT(r)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshNodeCyl):: self
|
||||
CLASS(meshNodeCyl), INTENT(in):: self
|
||||
REAL(8):: r(1:3)
|
||||
|
||||
r = (/self%z, self%r, 0.D0/)
|
||||
|
|
@ -367,7 +367,7 @@ MODULE moduleMeshCyl
|
|||
REAL(8):: r, xi(1:3)
|
||||
REAL(8):: fPsi(1:4), dPsi(1:2,1:4)
|
||||
REAL(8):: ke(1:4,1:4)
|
||||
REAL(8):: j(1:2,1:2), detJ
|
||||
REAL(8):: invJ(1:2,1:2), detJ
|
||||
INTEGER:: l, m
|
||||
|
||||
ke=0.D0
|
||||
|
|
@ -381,9 +381,9 @@ MODULE moduleMeshCyl
|
|||
dPsi(2,:) = self%dPsiXi2(xi(1))
|
||||
fPsi = self%fPsi(xi)
|
||||
detJ = self%detJac(xi,dPsi)
|
||||
j = self%invJac(xi,dPsi)
|
||||
invJ = self%invJac(xi,dPsi)
|
||||
r = DOT_PRODUCT(fPsi,self%r)
|
||||
ke = ke + MATMUL(TRANSPOSE(MATMUL(j,dPsi)),MATMUL(j,dPsi))*r*wQuad(l)*wQuad(m)/detJ
|
||||
ke = ke + MATMUL(TRANSPOSE(MATMUL(invJ,dPsi)),MATMUL(invJ,dPsi))*r*wQuad(l)*wQuad(m)/detJ
|
||||
|
||||
END DO
|
||||
END DO
|
||||
|
|
@ -3,9 +3,11 @@ MODULE moduleMeshCylRead
|
|||
USE moduleMeshCyl
|
||||
USE moduleMeshCylBoundary
|
||||
|
||||
!TODO: make this abstract to allow different mesh formats
|
||||
TYPE, EXTENDS(meshGeneric):: meshCylGeneric
|
||||
CONTAINS
|
||||
PROCEDURE, PASS:: readMesh => readMeshCyl
|
||||
PROCEDURE, PASS:: init => initCylMesh
|
||||
PROCEDURE, PASS:: readMesh => readMeshCylGmsh
|
||||
|
||||
END TYPE
|
||||
|
||||
|
|
@ -15,11 +17,34 @@ MODULE moduleMeshCylRead
|
|||
END INTERFACE connected
|
||||
|
||||
CONTAINS
|
||||
SUBROUTINE readMeshCyl(self, filename)
|
||||
USE moduleBoundary
|
||||
!Init mesh
|
||||
SUBROUTINE initCylMesh(self, meshFormat)
|
||||
USE moduleMesh
|
||||
USE moduleErrors
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshCylGeneric), INTENT(out):: self
|
||||
CHARACTER(:), ALLOCATABLE, INTENT(in):: meshFormat
|
||||
|
||||
SELECT CASE(meshFormat)
|
||||
CASE ("gmsh")
|
||||
self%printOutput => printOutputGmsh
|
||||
self%printColl => printCollGmsh
|
||||
self%printEM => printEMGmsh
|
||||
|
||||
CASE DEFAULT
|
||||
CALL criticalError("Mesh type " // meshFormat // " not supported.", "initCylMesh")
|
||||
|
||||
END SELECT
|
||||
|
||||
END SUBROUTINE initCylMesh
|
||||
|
||||
!Read mesh from gmsh file
|
||||
SUBROUTINE readMeshCylGmsh(self, filename)
|
||||
USE moduleBoundary
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshCylGeneric), INTENT(inout):: self
|
||||
CHARACTER(:), ALLOCATABLE, INTENT(in):: filename
|
||||
REAL(8):: r, z
|
||||
INTEGER:: p(1:4)
|
||||
|
|
@ -140,7 +165,7 @@ MODULE moduleMeshCylRead
|
|||
|
||||
END DO
|
||||
|
||||
END SUBROUTINE
|
||||
END SUBROUTINE readMeshCylGmsh
|
||||
|
||||
!Selects type of elements to build connection
|
||||
SUBROUTINE connectedVolVol(elemA, elemB)
|
||||
11
src/modules/mesh/makefile
Normal file
11
src/modules/mesh/makefile
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
all: moduleMesh.o Cyl.o 1DCart.o
|
||||
|
||||
Cyl.o:
|
||||
$(MAKE) -C Cyl all
|
||||
|
||||
1DCart.o:
|
||||
$(MAKE) -C 1DCart all
|
||||
|
||||
moduleMesh.o: moduleMesh.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95,$@) -o $(OBJDIR)/$@
|
||||
|
||||
|
|
@ -30,9 +30,9 @@ MODULE moduleMesh
|
|||
END SUBROUTINE initNode_interface
|
||||
|
||||
!Interface to get coordinates from node
|
||||
FUNCTION getCoord_interface(self) RESULT(r)
|
||||
PURE FUNCTION getCoord_interface(self) RESULT(r)
|
||||
IMPORT:: meshNode
|
||||
CLASS(meshNode):: self
|
||||
CLASS(meshNode), INTENT(in):: self
|
||||
REAL(8):: r(1:3)
|
||||
|
||||
END FUNCTION getCoord_interface
|
||||
|
|
@ -210,7 +210,7 @@ MODULE moduleMesh
|
|||
|
||||
END SUBROUTINE collision_interface
|
||||
|
||||
SUBROUTINE resetOutput_interface(self)
|
||||
PURE SUBROUTINE resetOutput_interface(self)
|
||||
IMPORT:: meshVol
|
||||
CLASS(meshVol), INTENT(inout):: self
|
||||
|
||||
|
|
@ -237,25 +237,44 @@ MODULE moduleMesh
|
|||
REAL(8), ALLOCATABLE, DIMENSION(:,:):: K
|
||||
!Permutation matrix for P L U factorization
|
||||
INTEGER, ALLOCATABLE, DIMENSION(:,:):: IPIV
|
||||
PROCEDURE(printOutput_interface), POINTER, PASS:: printOutput => NULL()
|
||||
PROCEDURE(printColl_interface), POINTER, PASS:: printColl => NULL()
|
||||
PROCEDURE(printEM_interface), POINTER, PASS:: printEM => NULL()
|
||||
|
||||
CONTAINS
|
||||
PROCEDURE(readMesh_interface), DEFERRED, PASS:: readMesh
|
||||
PROCEDURE, PASS:: printOutput
|
||||
PROCEDURE, PASS:: printColl
|
||||
PROCEDURE, PASS:: printEM
|
||||
PROCEDURE(initMesh_interface), DEFERRED, PASS:: init
|
||||
PROCEDURE(readMesh_interface), DEFERRED, PASS:: readMesh
|
||||
|
||||
END TYPE meshGeneric
|
||||
|
||||
ABSTRACT INTERFACE
|
||||
!Inits the mesh
|
||||
SUBROUTINE initMesh_interface(self, meshFormat)
|
||||
IMPORT meshGeneric
|
||||
|
||||
CLASS(meshGeneric), INTENT(out):: self
|
||||
CHARACTER(:), ALLOCATABLE, INTENT(in):: meshFormat
|
||||
|
||||
END SUBROUTINE initMesh_interface
|
||||
|
||||
!Reads the mesh from a file
|
||||
SUBROUTINE readMesh_interface(self, filename)
|
||||
IMPORT meshGeneric
|
||||
|
||||
CLASS(meshGeneric), INTENT(out):: self
|
||||
CLASS(meshGeneric), INTENT(inout):: self
|
||||
CHARACTER(:), ALLOCATABLE, INTENT(in):: filename
|
||||
|
||||
END SUBROUTINE readMesh_interface
|
||||
|
||||
!Prints Species data
|
||||
SUBROUTINE printOutput_interface(self, t)
|
||||
IMPORT meshGeneric
|
||||
|
||||
CLASS(meshGeneric), INTENT(in):: self
|
||||
INTEGER, INTENT(in):: t
|
||||
|
||||
END SUBROUTINE printOutput_interface
|
||||
|
||||
!Prints number of collisions
|
||||
SUBROUTINE printColl_interface(self, t)
|
||||
IMPORT meshGeneric
|
||||
|
|
@ -273,6 +292,7 @@ MODULE moduleMesh
|
|||
INTEGER, INTENT(in):: t
|
||||
|
||||
END SUBROUTINE printEM_interface
|
||||
|
||||
END INTERFACE
|
||||
|
||||
!Generic mesh
|
||||
|
|
@ -397,7 +417,7 @@ MODULE moduleMesh
|
|||
|
||||
END SUBROUTINE collision
|
||||
|
||||
SUBROUTINE printOutput(self, t)
|
||||
SUBROUTINE printOutputGmsh(self, t)
|
||||
USE moduleRefParam
|
||||
USE moduleSpecies
|
||||
USE moduleOutput
|
||||
|
|
@ -478,9 +498,9 @@ MODULE moduleMesh
|
|||
|
||||
END DO
|
||||
|
||||
END SUBROUTINE printOutput
|
||||
END SUBROUTINE printOutputGmsh
|
||||
|
||||
SUBROUTINE printColl(self, t)
|
||||
SUBROUTINE printCollGmsh(self, t)
|
||||
USE moduleRefParam
|
||||
USE moduleCaseParam
|
||||
USE moduleOutput
|
||||
|
|
@ -522,9 +542,9 @@ MODULE moduleMesh
|
|||
|
||||
END IF
|
||||
|
||||
END SUBROUTINE printColl
|
||||
END SUBROUTINE printCollGmsh
|
||||
|
||||
SUBROUTINE printEM(self, t)
|
||||
SUBROUTINE printEMGmsh(self, t)
|
||||
USE moduleRefParam
|
||||
USE moduleCaseParam
|
||||
USE moduleOutput
|
||||
|
|
@ -581,6 +601,6 @@ MODULE moduleMesh
|
|||
|
||||
END IF
|
||||
|
||||
END SUBROUTINE printEM
|
||||
END SUBROUTINE printEMGmsh
|
||||
|
||||
END MODULE moduleMesh
|
||||
|
|
@ -369,7 +369,7 @@ MODULE moduleInput
|
|||
|
||||
TYPE(json_file), INTENT(inout):: config
|
||||
LOGICAL:: found
|
||||
CHARACTER(:), ALLOCATABLE:: geometryType, meshType, meshFile
|
||||
CHARACTER(:), ALLOCATABLE:: geometryType, meshFormat, meshFile
|
||||
CHARACTER(:), ALLOCATABLE:: fullPath
|
||||
|
||||
!Selects the type of geometry.
|
||||
|
|
@ -389,18 +389,10 @@ MODULE moduleInput
|
|||
END SELECT
|
||||
|
||||
!Gets the type of mesh
|
||||
CALL config%get('geometry.meshType', meshType, found)
|
||||
SELECT CASE(meshType)
|
||||
CASE ("gmsh")
|
||||
!Gets the gmsh file
|
||||
CALL config%get('geometry.meshFile', meshFile, found)
|
||||
|
||||
CASE DEFAULT
|
||||
CALL criticalError("Mesh type " // meshType // " not supported.", "readGeometry")
|
||||
|
||||
END SELECT
|
||||
|
||||
CALL config%get('geometry.meshType', meshFormat, found)
|
||||
CALL mesh%init(meshFormat)
|
||||
!Reads the mesh
|
||||
CALL config%get('geometry.meshFile', meshFile, found)
|
||||
fullpath = path // meshFile
|
||||
CALL mesh%readMesh(fullPath)
|
||||
|
||||
|
|
|
|||
|
|
@ -95,9 +95,6 @@ MODULE moduleSolver
|
|||
CASE('Electrostatic')
|
||||
self%solveEM => solveElecField
|
||||
|
||||
CASE DEFAULT
|
||||
self%solveEM => noEMField
|
||||
|
||||
END SELECT
|
||||
|
||||
END SUBROUTINE initEM
|
||||
|
|
@ -114,9 +111,6 @@ MODULE moduleSolver
|
|||
CASE ('Volume')
|
||||
self%nonAnalogue => volumeNAScheme
|
||||
|
||||
CASE DEFAULT
|
||||
self%nonAnalogue => noNAScheme
|
||||
|
||||
END SELECT
|
||||
|
||||
END SUBROUTINE initNA
|
||||
|
|
@ -356,6 +350,7 @@ MODULE moduleSolver
|
|||
SUBROUTINE doScatter
|
||||
USE moduleSpecies
|
||||
USE moduleMesh
|
||||
IMPLICIT NONE
|
||||
|
||||
INTEGER:: n
|
||||
|
||||
|
|
@ -372,7 +367,10 @@ MODULE moduleSolver
|
|||
SUBROUTINE doEMField()
|
||||
IMPLICIT NONE
|
||||
|
||||
CALL solver%solveEM()
|
||||
IF (ASSOCIATED(solver%solveEM)) THEN
|
||||
CALL solver%solveEM()
|
||||
|
||||
END IF
|
||||
|
||||
END SUBROUTINE doEMField
|
||||
|
||||
|
|
@ -421,12 +419,6 @@ MODULE moduleSolver
|
|||
|
||||
END SUBROUTINE solveElecField
|
||||
|
||||
!Empty procedure that does no computation of EM field for neutral cases
|
||||
SUBROUTINE noEMField()
|
||||
IMPLICIT NONE
|
||||
|
||||
END SUBROUTINE noEMField
|
||||
|
||||
!Modify particle weight as a function of cell volume and splits particle
|
||||
SUBROUTINE volumeNAScheme(part, volOld, volNew)
|
||||
USE moduleSpecies
|
||||
|
|
@ -500,18 +492,6 @@ MODULE moduleSolver
|
|||
|
||||
END SUBROUTINE splitParticle
|
||||
|
||||
!Empty procedure that does no computation of EM field for neutral cases
|
||||
SUBROUTINE noNAScheme(part, volOld, volNew)
|
||||
USE moduleSpecies
|
||||
USE moduleMesh
|
||||
IMPLICIT NONE
|
||||
|
||||
TYPE(particle), INTENT(inout):: part
|
||||
CLASS(meshVol), POINTER, INTENT(in):: volOld
|
||||
CLASS(meshVol), POINTER, INTENT(inout):: volNew
|
||||
|
||||
END SUBROUTINE noNAScheme
|
||||
|
||||
SUBROUTINE updateParticleCell(self, part)
|
||||
USE moduleSpecies
|
||||
USE moduleMesh
|
||||
|
|
@ -525,7 +505,10 @@ MODULE moduleSolver
|
|||
CALL volOld%findCell(part)
|
||||
volNew => mesh%vols(part%vol)%obj
|
||||
!Call the NA shcme
|
||||
CALL self%nonAnalogue(part, volOld, volNew)
|
||||
IF (ASSOCIATED(self%nonAnalogue)) THEN
|
||||
CALL self%nonAnalogue(part, volOld, volNew)
|
||||
|
||||
END IF
|
||||
|
||||
END SUBROUTINE updateParticleCell
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue