Renaming of code. New name is FPAKC.
This commit is contained in:
parent
c82279f5c5
commit
7b707e7806
7 changed files with 1591 additions and 12 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,4 +1,4 @@
|
|||
PPartiC
|
||||
FPAKC
|
||||
mod/
|
||||
obj/
|
||||
doc/user_manual/
|
||||
|
|
|
|||
20
README.md
20
README.md
|
|
@ -1,10 +1,20 @@
|
|||
# Introduction
|
||||
Welcome to PPartiC (Plasma Particle Code), a modern object oriented code for kinetic simulations of plasma. This code works by simulating charged and neutral particles, following their trajectories, collisions and boundary conditions imposed by the usser.
|
||||
#Introduction
|
||||
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 exercies.
|
||||
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 techniches as OpenMP, MPI will be used, as well as making the code run in GPU architectures.
|
||||
Parallelization techniques such as OpenMP, MPI will be used to distribute the cpu load. We aim to make FPAKC GPU compatible in the future.
|
||||
|
||||
PPartiC uses Finite Element meshes to adap to complex geometries.
|
||||
FPAKC 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.
|
||||
|
||||
#User Manual
|
||||
|
||||
You will find the user manual in the *doc* folder.
|
||||
|
||||
#Installation
|
||||
|
||||
To install the software ...
|
||||
|
|
|
|||
2
makefile
2
makefile
|
|
@ -18,7 +18,7 @@ VAR := ""
|
|||
FCFLAGS := -fopenmp -Ofast -J $(MODDIR) -I $(INCDIR) -Wall -g
|
||||
|
||||
#Output file
|
||||
OUTPUT = PPartiC
|
||||
OUTPUT = FPAKC
|
||||
|
||||
export
|
||||
|
||||
|
|
|
|||
51
runs/ALPHIE_Grid/input.json
Normal file
51
runs/ALPHIE_Grid/input.json
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"output": {
|
||||
"path": "./runs/ALPHIE_Grid/",
|
||||
"trigger": 500,
|
||||
"cpuTime": false,
|
||||
"numColl": false,
|
||||
"EMField": true
|
||||
},
|
||||
"geometry": {
|
||||
"type": "2DCyl",
|
||||
"meshType": "gmsh",
|
||||
"meshFile": "mesh.msh"
|
||||
},
|
||||
"species": [
|
||||
{"name": "Argon+", "type": "charged", "mass": 6.633e-26, "charge": 1.0, "weight": 1.0e1},
|
||||
{"name": "Electron", "type": "charged", "mass": 9.109e-31, "charge":-1.0, "weight": 1.0e1}
|
||||
],
|
||||
"boundary": [
|
||||
{"name": "Ionization Chanber", "type": "absorption", "physicalSurface": 1},
|
||||
{"name": "Vacuum Chamber", "type": "absorption", "physicalSurface": 2},
|
||||
{"name": "Exterior", "type": "reflection", "physicalSurface": 3},
|
||||
{"name": "Grid Extraction", "type": "absorption", "physicalSurface": 4},
|
||||
{"name": "Grid Acceleration", "type": "absorption", "physicalSurface": 5},
|
||||
{"name": "Axis", "type": "axis", "physicalSurface": 6}
|
||||
],
|
||||
"boundaryEM": [
|
||||
{"name": "Ionization Chamber", "type": "dirichlet", "potential": 0.0, "physicalSurface": 1},
|
||||
{"name": "Extraction Grid", "type": "dirichlet", "potential": -150.0, "physicalSurface": 4},
|
||||
{"name": "Acceleration Grid", "type": "dirichlet", "potential": -600.0, "physicalSurface": 5}
|
||||
],
|
||||
"inject": [
|
||||
{"name": "Ionization Argon+", "species": "Argon+", "flow": 27.0e-6, "units": "A", "v": 322.0, "T": [ 500.0, 500.0, 500.0], "n": [ 1, 0, 0], "physicalSurface": 1},
|
||||
{"name": "Ionization Electron", "species": "Electron", "flow": 27.0e-6, "units": "A", "v": 87000.0, "T": [ 500.0, 500.0, 500.0], "n": [ 1, 0, 0], "physicalSurface": 1},
|
||||
{"name": "Cathode Electron", "species": "Electron", "flow": 9.0e-5, "units": "A", "v": 87000.0, "T": [2500.0, 2500.0, 2500.0], "n": [-1, 0, 0], "physicalSurface": 2}
|
||||
],
|
||||
"reference": {
|
||||
"density": 1.0e16,
|
||||
"mass": 9.109e-31,
|
||||
"temperature": 2500.0
|
||||
},
|
||||
"case": {
|
||||
"tau": 1.0e-11,
|
||||
"time": 2.0e-6,
|
||||
"solver": "2DCylCharged"
|
||||
},
|
||||
"parallel": {
|
||||
"OpenMP":{
|
||||
"nThreads": 8
|
||||
}
|
||||
}
|
||||
}
|
||||
1518
runs/ALPHIE_Grid/mesh.msh
Normal file
1518
runs/ALPHIE_Grid/mesh.msh
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,5 +1,5 @@
|
|||
! PPartiC neutral PIC main program.
|
||||
PROGRAM PPartiC
|
||||
! FPAKC main program
|
||||
PROGRAM FPAKC
|
||||
USE moduleInput
|
||||
USE moduleErrors
|
||||
USE OMP_LIB
|
||||
|
|
@ -90,5 +90,5 @@ PROGRAM PPartiC
|
|||
END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
END PROGRAM PPartiC
|
||||
END PROGRAM FPAKC
|
||||
|
||||
|
|
@ -79,7 +79,7 @@ MODULE moduleEM
|
|||
vectorF = 0.D0
|
||||
!$OMP END SINGLE
|
||||
|
||||
!$OMP SINGLE
|
||||
!$OMP DO REDUCTION(+:vectorF)
|
||||
DO e = 1, mesh%numVols
|
||||
nodes = mesh%vols(e)%obj%getNodes()
|
||||
nNodes = SIZE(nodes)
|
||||
|
|
@ -112,7 +112,7 @@ MODULE moduleEM
|
|||
DEALLOCATE(nodes, rho)
|
||||
|
||||
END DO
|
||||
!$OMP END SINGLE
|
||||
!$OMP END DO
|
||||
|
||||
!Apply boundary conditions
|
||||
!$OMP DO
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue