Commit befor trying to convert particle array to linked list to improve
performance.
This commit is contained in:
parent
05f5adcfe1
commit
60f38a2d95
8 changed files with 160 additions and 12 deletions
|
|
@ -10,17 +10,15 @@ PROGRAM DSMC_Neutrals
|
|||
USE moduleList
|
||||
USE moduleOutput
|
||||
USE moduleCaseParam
|
||||
USE moduleParallel
|
||||
IMPLICIT NONE
|
||||
|
||||
! t = time step; n = number of particle; e = number of element; i = number of inject
|
||||
INTEGER:: t, n, e, i
|
||||
CHARACTER(200):: arg1
|
||||
CHARACTER(:), ALLOCATABLE:: inputFile
|
||||
REAL(8), EXTERNAL::omp_get_wtime, omp_get_wtick
|
||||
REAL(8), EXTERNAL::omp_get_wtime
|
||||
|
||||
!Starts threads for OpenMP parallelization
|
||||
!TODO: make this an input parameter
|
||||
CALL OMP_SET_NUM_THREADS(8)
|
||||
|
||||
!Gets the input file
|
||||
CALL getarg(1, arg1)
|
||||
|
|
@ -39,6 +37,10 @@ PROGRAM DSMC_Neutrals
|
|||
PRINT *, "t/tmax: ", t, "/", tmax
|
||||
PRINT *, "Particles: ", n_part_old
|
||||
|
||||
!Starts threads for OpenMP parallelization
|
||||
!TODO: make this an input parameter
|
||||
CALL OMP_SET_NUM_THREADS(openMP%nThreads)
|
||||
|
||||
!$OMP PARALLEL PRIVATE(t) DEFAULT(SHARED)
|
||||
DO t = 1, tmax
|
||||
tStep = omp_get_wtime()
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ OBJECTS = $(OBJDIR)/$(OUTPUT).o \
|
|||
$(OBJDIR)/moduleErrors.o $(OBJDIR)/moduleList.o $(OBJDIR)/moduleOutput.o \
|
||||
$(OBJDIR)/moduleMeshCyl.o $(OBJDIR)/moduleMeshCylRead.o $(OBJDIR)/moduleMeshCylBoundary.o \
|
||||
$(OBJDIR)/moduleBoundary.o $(OBJDIR)/moduleCaseParam.o $(OBJDIR)/moduleRefParam.o \
|
||||
$(OBJDIR)/moduleCollisions.o $(OBJDIR)/moduleTable.o
|
||||
$(OBJDIR)/moduleCollisions.o $(OBJDIR)/moduleTable.o $(OBJDIR)/moduleParallel.o
|
||||
|
||||
|
||||
all: $(OUTPUT)
|
||||
|
|
|
|||
|
|
@ -2,14 +2,15 @@
|
|||
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
|
||||
moduleSolver.o moduleCollisions.o moduleTable.o \
|
||||
moduleParallel.o
|
||||
|
||||
all: $(OBJS)
|
||||
|
||||
moduleCollisions.o: moduleTable.o moduleSpecies.o moduleRefParam.o moduleConstParam.o moduleMeshCyl.f95
|
||||
$(FC) $(FCFLAGS) -c $(subst .o,.f95, $@) -o $(OBJDIR)/$@
|
||||
|
||||
moduleInput.o: moduleRefParam.o moduleCaseParam.o moduleSolver.o moduleInject.o moduleBoundary.o moduleMesh.o moduleMeshCylRead.o moduleErrors.o moduleSpecies.o moduleInput.f95
|
||||
moduleInput.o: moduleParallel.o moduleRefParam.o moduleCaseParam.o moduleSolver.o moduleInject.o moduleBoundary.o moduleMesh.o moduleMeshCylRead.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
|
||||
|
|
|
|||
|
|
@ -45,6 +45,9 @@ MODULE moduleInput
|
|||
!Read injection of particles
|
||||
CALL readInject(config)
|
||||
|
||||
!Read parallel parameters
|
||||
CALL readParallel(config)
|
||||
|
||||
END SUBROUTINE readConfig
|
||||
|
||||
!Reads the reference parameters
|
||||
|
|
@ -325,9 +328,9 @@ MODULE moduleInput
|
|||
|
||||
TYPE(json_file), INTENT(inout):: config
|
||||
INTEGER:: i
|
||||
character(2):: istring
|
||||
character(:), allocatable:: object
|
||||
logical:: found
|
||||
CHARACTER(2):: istring
|
||||
CHARACTER(:), ALLOCATABLE:: object
|
||||
LOGICAL:: found
|
||||
CHARACTER(:), ALLOCATABLE:: speciesName
|
||||
CHARACTER(:), ALLOCATABLE:: name
|
||||
REAL(8):: v
|
||||
|
|
@ -366,4 +369,28 @@ MODULE moduleInput
|
|||
|
||||
END SUBROUTINE readInject
|
||||
|
||||
SUBROUTINE readParallel(config)
|
||||
USE moduleParallel
|
||||
USE moduleErrors
|
||||
USE json_module
|
||||
IMPLICIT NONE
|
||||
|
||||
TYPE(json_file), INTENT(inout):: config
|
||||
CHARACTER(:), ALLOCATABLE:: object
|
||||
LOGICAL:: found
|
||||
|
||||
!Reads OpenMP parameters
|
||||
object = 'parallel.OpenMP'
|
||||
|
||||
CALL config%get(object // '.nThreads', openMP%nThreads, found)
|
||||
|
||||
IF (.NOT. found) THEN
|
||||
openMP%nthreads = 8
|
||||
CALL warningError('No OpenMP configuration detected, using 8 threads as default.')
|
||||
|
||||
END IF
|
||||
|
||||
END SUBROUTINE readParallel
|
||||
|
||||
|
||||
END MODULE moduleInput
|
||||
|
|
|
|||
10
src/modules/moduleParallel.f95
Normal file
10
src/modules/moduleParallel.f95
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
MODULE moduleParallel
|
||||
|
||||
TYPE openMP_type
|
||||
INTEGER:: nThreads
|
||||
|
||||
END TYPE
|
||||
|
||||
TYPE(openMP_type):: openMP
|
||||
|
||||
END MODULE moduleParallel
|
||||
Loading…
Add table
Add a link
Reference in a new issue