Implementation of 0D grid for analysis of collisional operators. #15

Merged
JorgeGonz merged 5 commits from feature/Coulomb into development 2021-04-13 21:57:20 +02:00
4 changed files with 29 additions and 1 deletions
Showing only changes of commit f1d74d954c - Show all commits

Implementation of 0D dummy pusher and modifications to input parameters

to allow 0D runs.
Jorge Gonzalez 2021-04-13 17:40:33 +02:00

View file

@ -5,11 +5,14 @@ OBJECTS = $(OBJDIR)/moduleMesh.o $(OBJDIR)/moduleMeshBoundary.o $(OBJDIR)/module
$(OBJDIR)/moduleCollisions.o $(OBJDIR)/moduleTable.o $(OBJDIR)/moduleParallel.o \ $(OBJDIR)/moduleCollisions.o $(OBJDIR)/moduleTable.o $(OBJDIR)/moduleParallel.o \
$(OBJDIR)/moduleEM.o $(OBJDIR)/moduleRandom.o $(OBJDIR)/moduleMath.o \ $(OBJDIR)/moduleEM.o $(OBJDIR)/moduleRandom.o $(OBJDIR)/moduleMath.o \
$(OBJDIR)/moduleMeshInputGmsh2.o $(OBJDIR)/moduleMeshOutputGmsh2.o \ $(OBJDIR)/moduleMeshInputGmsh2.o $(OBJDIR)/moduleMeshOutputGmsh2.o \
$(OBJDIR)/moduleMeshInput0D.o $(OBJDIR)/moduleMeshOutput0D.o \
$(OBJDIR)/moduleMesh3DCart.o \ $(OBJDIR)/moduleMesh3DCart.o \
$(OBJDIR)/moduleMesh2DCyl.o \ $(OBJDIR)/moduleMesh2DCyl.o \
$(OBJDIR)/moduleMesh2DCart.o \ $(OBJDIR)/moduleMesh2DCart.o \
$(OBJDIR)/moduleMesh1DRad.o \ $(OBJDIR)/moduleMesh1DRad.o \
$(OBJDIR)/moduleMesh1DCart.o $(OBJDIR)/moduleMesh1DCart.o \
$(OBJDIR)/moduleMesh0D.o
all: $(OUTPUT) all: $(OUTPUT)

View file

@ -31,6 +31,7 @@ MODULE moduleMesh0D
!NODE FUNCTIONS !NODE FUNCTIONS
!Init node !Init node
SUBROUTINE initNode0D(self, n, r) SUBROUTINE initNode0D(self, n, r)
USE moduleSpecies
IMPLICIT NONE IMPLICIT NONE
CLASS(meshNode0D), INTENT(out):: self CLASS(meshNode0D), INTENT(out):: self
@ -39,6 +40,8 @@ MODULE moduleMesh0D
self%n = n self%n = n
ALLOCATE(self%output(1:nSpecies))
END SUBROUTINE initNode0D END SUBROUTINE initNode0D
!Get node coordinates !Get node coordinates
@ -81,6 +84,10 @@ MODULE moduleMesh0D
CLASS(meshVol0D), INTENT(in):: self CLASS(meshVol0D), INTENT(in):: self
INTEGER, ALLOCATABLE:: n(:) INTEGER, ALLOCATABLE:: n(:)
ALLOCATE(n(1:1))
n = self%n1%n
END FUNCTION getNodes0D END FUNCTION getNodes0D
FUNCTION randPos0D(self) RESULT(r) FUNCTION randPos0D(self) RESULT(r)

View file

@ -714,6 +714,7 @@ MODULE moduleInput
SUBROUTINE readGeometry(config) SUBROUTINE readGeometry(config)
USE moduleMesh USE moduleMesh
USE moduleMeshInputGmsh2, ONLY: initGmsh2 USE moduleMeshInputGmsh2, ONLY: initGmsh2
USE moduleMeshInput0D, ONLY: init0D
USE moduleMesh3DCart, ONLY: connectMesh3DCart USE moduleMesh3DCart, ONLY: connectMesh3DCart
USE moduleMesh2DCyl, ONLY: connectMesh2DCyl USE moduleMesh2DCyl, ONLY: connectMesh2DCyl
USE moduleMesh2DCart, ONLY: connectMesh2DCart USE moduleMesh2DCart, ONLY: connectMesh2DCart
@ -744,6 +745,9 @@ MODULE moduleInput
CALL initGmsh2(mesh) CALL initGmsh2(mesh)
IF (doubleMesh) CALL initGmsh2(meshColl) IF (doubleMesh) CALL initGmsh2(meshColl)
CASE ("0D")
CALL init0D(mesh)
CASE DEFAULT CASE DEFAULT
CALL criticalError("Mesh format " // meshFormat // " not recogniced", "readGeometry") CALL criticalError("Mesh format " // meshFormat // " not recogniced", "readGeometry")

View file

@ -102,6 +102,9 @@ MODULE moduleSolver
CASE('1DRadCharged') CASE('1DRadCharged')
self%pushParticle => push1DRadCharged self%pushParticle => push1DRadCharged
CASE('0D')
self%pushParticle => push0D
CASE DEFAULT CASE DEFAULT
CALL criticalError('Pusher ' // pusherType // ' not found','initPusher') CALL criticalError('Pusher ' // pusherType // ' not found','initPusher')
@ -483,6 +486,17 @@ MODULE moduleSolver
END SUBROUTINE push1DRadCharged END SUBROUTINE push1DRadCharged
!Dummy pusher for 0D geometry
PURE SUBROUTINE push0D(part, tauIn)
USE moduleSpecies
USE moduleEM
IMPLICIT NONE
TYPE(particle), INTENT(inout):: part
REAL(8), INTENT(in):: tauIn
END SUBROUTINE push0D
SUBROUTINE doReset() SUBROUTINE doReset()
USE moduleSpecies USE moduleSpecies
USE moduleMesh USE moduleMesh