Implementation of 0D grid for analysis of collisional operators.
Still need to add a 0D pusher and the corresponding input configuration and documentation.
This commit is contained in:
parent
439a45efbf
commit
d2b36632c9
12 changed files with 339 additions and 13 deletions
66
src/modules/mesh/inout/0D/moduleMeshInput0D.f90
Normal file
66
src/modules/mesh/inout/0D/moduleMeshInput0D.f90
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
MODULE moduleMeshInput0D
|
||||
!Creates a 0D mesh. mostly used for testing collisional processes.
|
||||
!This mesh consists on 1 node and 1 volume in which all particles are located.
|
||||
!No boundary conditions and no pusher should be applied to this geometry.
|
||||
!Output should go to a single file (per species) in which each row represents an iteration.
|
||||
!In principle, no EM field is applied.
|
||||
|
||||
CONTAINS
|
||||
!Inits the 0D mesh
|
||||
SUBROUTINE init0D(self)
|
||||
USE moduleMesh
|
||||
USE moduleMeshOutput0D
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshGeneric), INTENT(inout), TARGET:: self
|
||||
|
||||
IF (ASSOCIATED(meshForMCC, self)) self%printColl => printColl0D
|
||||
SELECT TYPE(self)
|
||||
TYPE IS(meshParticles)
|
||||
self%printOutput => printOutput0D
|
||||
self%printEM => printEM0D
|
||||
|
||||
END SELECT
|
||||
self%readMesh => read0D
|
||||
|
||||
END SUBROUTINE init0D
|
||||
|
||||
!Reads a 0D mesh file.
|
||||
!No reading is actually done as the 0D mesh is a fixed one
|
||||
SUBROUTINE read0D(self, filename)
|
||||
USE moduleMesh
|
||||
USE moduleMesh0D
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshGeneric), INTENT(inout):: self
|
||||
CHARACTER(:), ALLOCATABLE, INTENT(in):: filename !Dummy file, not used
|
||||
REAL(8):: r(1:3)
|
||||
|
||||
!Allocates one node
|
||||
self%numNodes = 1
|
||||
ALLOCATE(self%nodes(1:1))
|
||||
!Allocates one volume
|
||||
self%numVols = 1
|
||||
ALLOCATE(self%vols(1:1))
|
||||
!Allocates matrix K
|
||||
SELECT TYPE(self)
|
||||
TYPE IS(meshParticles)
|
||||
ALLOCATE(self%K(1:1, 1:1))
|
||||
ALLOCATE(self%IPIV(1:1, 1:1))
|
||||
self%K = 0.D0
|
||||
self%IPIV = 0.D0
|
||||
|
||||
END SELECT
|
||||
|
||||
!Creates the node
|
||||
ALLOCATE(meshNode0D:: self%nodes(1)%obj)
|
||||
r = 0.D0
|
||||
CALL self%nodes(1)%obj%init(1, r)
|
||||
|
||||
!Creates the volume
|
||||
ALLOCATE(meshVol0D:: self%vols(1)%obj)
|
||||
CALL self%vols(1)%obj%init(1, (/ 1/), self%nodes)
|
||||
|
||||
END SUBROUTINE read0D
|
||||
|
||||
END MODULE moduleMeshInput0D
|
||||
Loading…
Add table
Add a link
Reference in a new issue