Loading InputFiles/xp_IonSlowingDown.in +2 −2 Original line number Diff line number Diff line &in_nml ! Simulation name: ! =============== in%fileDescriptor = '2021_02_04a', in%fileDescriptor = '2021_02_06a', ! Magnetic field input data: ! ========================= in%rootDir ="/home/nfc/myRepos/LinearFokkerPlanck_Axisymmetric", in%repoDir ="/home/nfc/myRepos/LinearFokkerPlanck_Axisymmetric", in%BFieldFileDir = "/BfieldData", in%BFieldFile = "/Bfield_b.txt", in%nz = 501, ! Number of points in BFieldFile Loading src/Modules.f90 +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ USE local IMPLICIT NONE TYPE inTYP CHARACTER*150 :: fileDescriptor, rootDir CHARACTER*150 :: fileDescriptor, repoDir CHARACTER*150 :: BFieldFile, BFieldFileDir REAL(r8) :: Ti0, Te0, ne0, dt REAL(r8) :: Aion, Zeff, Zion Loading src/MoveParticlePack.f90 +4 −4 Original line number Diff line number Diff line Loading @@ -466,8 +466,8 @@ REAL(r8) FUNCTION Interp1(xq, spline0) REAL(r8) :: curv2 ! Output data: !Interp1 = curv2(xq,spline0%n,spline0%x,spline0%y,spline0%yp,spline0%sigma) Interp1 = COS(xq) Interp1 = curv2(xq,spline0%n,spline0%x,spline0%y,spline0%yp,spline0%sigma) !Interp1 = COS(xq) RETURN END FUNCTION Interp1 Loading @@ -488,8 +488,8 @@ REAL(r8) FUNCTION diff1(xq, spline0) REAL(r8) :: curvd ! Output data: !diff1 = curvd(xq,spline0%n,spline0%x,spline0%y,spline0%yp,spline0%sigma) diff1 = COS(xq) diff1 = curvd(xq,spline0%n,spline0%x,spline0%y,spline0%yp,spline0%sigma) !diff1 = COS(xq) RETURN END FUNCTION diff1 Loading src/linFP.f90 +20 −67 Original line number Diff line number Diff line Loading @@ -22,12 +22,8 @@ TYPE(inTYP) :: in TYPE(splTYP) :: spline_Bz TYPE(splTYP) :: spline_ddBz TYPE(splTYP) :: spline_Phi TYPE(spltestTYP) :: spline_Test ! DO loop indices: INTEGER(i4) :: i,j,k ! Pseudo random number seed: INTEGER(i4) :: seed_size INTEGER(i4), DIMENSION(:), ALLOCATABLE :: seed ! Size of time interval: INTEGER(i4) :: jsize ! Indices of time steps to save: Loading Loading @@ -60,9 +56,7 @@ REAL(r8) :: pcnt1, pcnt2, pcnt3, pcnt4 ! To store system commands and fileNames: CHARACTER*300 :: command, mpwd INTEGER(i4) :: n_mpwd, STATUS CHARACTER*300 :: inputFileDir, inputFile, fileName, xpSelector, rootDir, dir0, dir1 ! Declare user-defined functions: REAL(r8) :: Interp1, diff1 CHARACTER*300 :: inputFileDir, inputFile, fileName, xpSelector, repoDir, dir0, dir1 ! Create input namelist from the user-defined structures: ! ============================================================================== Loading @@ -70,7 +64,7 @@ namelist/in_nml/in ! Get root directory: ! ============================================================================== CALL GET_ENVIRONMENT_VARIABLE('REPO_DIR',rootDir) CALL GET_ENVIRONMENT_VARIABLE('REPO_DIR',repoDir) ! Get input file name and directory: ! ============================================================================= Loading @@ -83,10 +77,8 @@ OPEN(unit=4,file=inputFileDir,status='old',form='formatted') read(4,in_nml) CLOSE(unit=4) ! Populate the in%rootDir field: ! ============================================================================= in%rootDir = trim(adjustl(rootDir)) ! Select the test species: ! ============================================================================== if (in%species_a .eq. 1) then in%q_t = -e_c in%m_t = m_e Loading Loading @@ -132,12 +124,6 @@ CALL InitSpline(spline_Bz ,in%nz,0._8,0._8,1,0._8) CALL InitSpline(spline_ddBz,in%nz,0._8,0._8,1,0._8) CALL InitSpline(spline_Phi ,in%nz,0._8,0._8,1,0._8) ! Allocate memory for spline_test variable: ! ============================================================================== ! Spline_test is a variable that holds up to 6 different test profiles "y" and ! one "x" coordinate. CALL InitSplineTest(spline_Test,in%nz) ! Allocate memory to main simulation variables: ! ============================================================================== ALLOCATE(zp(in%Nparts),kep(in%Nparts),xip(in%Nparts)) Loading @@ -164,7 +150,7 @@ ALLOCATE(fcurr(in%Nparts),fnew(in%Nparts)) ! Magnetic field data: fileName = trim(adjustl(in%BFieldFile)) fileName = trim(adjustl(in%BFieldFileDir))//fileName fileName = trim(adjustl(in%rootDir))//fileName fileName = trim(adjustl(in%repoDir))//fileName ! Populate profile data based on external file: CALL ReadSpline(spline_Bz,fileName) Loading @@ -185,36 +171,6 @@ if (in%iPotential) then end if CALL ComputeSpline(spline_Phi) ! Test the splines: ! ========================================================================== if (.true.) then do i=1,in%nz !spline_Test%x(i) = in%zmin + i*0.03 spline_Test%x(i) = 0.0 + i*0.02 spline_Test%y1(i) = Interp1(spline_Test%x(i),spline_Bz) spline_Test%y2(i) = diff1(spline_Test%x(i),spline_Bz) spline_Test%y3(i) = Interp1(spline_Test%x(i),spline_ddBz) spline_Test%y4(i) = Interp1(spline_Test%x(i),spline_Phi) spline_Test%y5(i) = BESSEL_JN(0,spline_Test%x(i)) spline_Test%y6(i) = BESSEL_JN(1,spline_Test%x(i)) end do fileName = "B_spline.dat" OPEN(unit=8,file=fileName,form="formatted",status="unknown") do j = 1,in%nz WRITE(8,*) spline_Test%x(j), spline_Test%y1(j), spline_Test%y2(j),& spline_Test%y3(j), spline_Test%y4(j), spline_Test%y5(j), spline_Test%y6(j) end do CLOSE(unit=8) end if ! Initialize pseudo random number generator: ! =========================================================================== CALL random_seed(size=seed_size) ALLOCATE(seed(seed_size)) CALL random_seed(get=seed) seed = 314159565 CALL random_seed(put=seed) ! Inititalize zp, kep, xip ! ============================================================================== kep = 0.; xip = 0.; zp = 0.; Loading Loading @@ -271,9 +227,6 @@ TimeStepping: do j = 1,in%Nsteps AllParticles: do i = 1,in%Nparts if (j .EQ. 1 .AND. i .EQ. 1) then WRITE(*,*) "spline_ddBz", spline_ddBz%n WRITE(*,*) "spline_Phi", spline_Phi%n WRITE(*,*) "spline_Bz", spline_Bz%n in%threads_given = OMP_GET_NUM_THREADS() WRITE(*,*) '' WRITE(*,*) '*********************************************************************' Loading Loading @@ -387,7 +340,7 @@ WRITE(*,*) '' if (in%iSave) then ! Create new directory to save output data: ! -------------------------------------------------------------------------- dir1 = trim(in%rootDir)//'/OutputFiles' dir1 = trim(in%repoDir)//'/OutputFiles' command = 'mkdir '//dir1 CALL system(command,STATUS) WRITE(*,*) 'Status: ', STATUS Loading @@ -397,7 +350,7 @@ if (in%iSave) then n_mpwd = lEN_TRIM(inputFile)-3 dir0 = inputFile dir0 = dir0(1:n_mpwd) dir1 = trim(in%rootDir)//'/OutputFiles/'//trim(dir0) dir1 = trim(in%repoDir)//'/OutputFiles/'//trim(dir0) command = 'mkdir '//dir1 CALL system(command,STATUS) Loading Loading @@ -483,13 +436,13 @@ if (in%iSave) then ! Copy input file to output directory: ! -------------------------------------------------------------------------- dir0 = trim(in%rootDir)//'/InputFiles/'//trim(inputFile) dir0 = trim(in%repoDir)//'/InputFiles/'//trim(inputFile) command = 'cp '//trim(trim(dir0)//' '//trim(dir1)) CALL system(command) ! Copy magnetic field data: ! -------------------------------------------------------------------------- dir0 = trim(in%rootDir)//'/BfieldData'//trim(in%BFieldFile) dir0 = trim(in%repoDir)//'/BfieldData'//trim(in%BFieldFile) command = 'cp '//trim(trim(dir0)//' '//trim(dir1))//'/Bfield.txt' CALL system(command) Loading @@ -498,7 +451,7 @@ if (in%iSave) then n_mpwd = lEN_TRIM(inputFile)-3 dir0 = inputFile dir0 = dir0(1:n_mpwd) dir0 = trim(in%rootDir)//'/OutputFiles/'//trim(dir0)//'/'//trim(in%fileDescriptor) dir0 = trim(in%repoDir)//'/OutputFiles/'//trim(dir0)//'/'//trim(in%fileDescriptor) fileName = trim(dir0)//'/commitHash.txt' command = 'git log --oneline -1 > '//trim(fileName) CALL system(command) Loading src/run_linFP.sh +1 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ INPUT_FILE="xp_IonSlowingDown.in" # Set number of threads: # =================================================== export OMP_NUM_THREADS=32 export OMP_NUM_THREADS=1 # Set processor binding for openMP: # =================================================== Loading Loading
InputFiles/xp_IonSlowingDown.in +2 −2 Original line number Diff line number Diff line &in_nml ! Simulation name: ! =============== in%fileDescriptor = '2021_02_04a', in%fileDescriptor = '2021_02_06a', ! Magnetic field input data: ! ========================= in%rootDir ="/home/nfc/myRepos/LinearFokkerPlanck_Axisymmetric", in%repoDir ="/home/nfc/myRepos/LinearFokkerPlanck_Axisymmetric", in%BFieldFileDir = "/BfieldData", in%BFieldFile = "/Bfield_b.txt", in%nz = 501, ! Number of points in BFieldFile Loading
src/Modules.f90 +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ USE local IMPLICIT NONE TYPE inTYP CHARACTER*150 :: fileDescriptor, rootDir CHARACTER*150 :: fileDescriptor, repoDir CHARACTER*150 :: BFieldFile, BFieldFileDir REAL(r8) :: Ti0, Te0, ne0, dt REAL(r8) :: Aion, Zeff, Zion Loading
src/MoveParticlePack.f90 +4 −4 Original line number Diff line number Diff line Loading @@ -466,8 +466,8 @@ REAL(r8) FUNCTION Interp1(xq, spline0) REAL(r8) :: curv2 ! Output data: !Interp1 = curv2(xq,spline0%n,spline0%x,spline0%y,spline0%yp,spline0%sigma) Interp1 = COS(xq) Interp1 = curv2(xq,spline0%n,spline0%x,spline0%y,spline0%yp,spline0%sigma) !Interp1 = COS(xq) RETURN END FUNCTION Interp1 Loading @@ -488,8 +488,8 @@ REAL(r8) FUNCTION diff1(xq, spline0) REAL(r8) :: curvd ! Output data: !diff1 = curvd(xq,spline0%n,spline0%x,spline0%y,spline0%yp,spline0%sigma) diff1 = COS(xq) diff1 = curvd(xq,spline0%n,spline0%x,spline0%y,spline0%yp,spline0%sigma) !diff1 = COS(xq) RETURN END FUNCTION diff1 Loading
src/linFP.f90 +20 −67 Original line number Diff line number Diff line Loading @@ -22,12 +22,8 @@ TYPE(inTYP) :: in TYPE(splTYP) :: spline_Bz TYPE(splTYP) :: spline_ddBz TYPE(splTYP) :: spline_Phi TYPE(spltestTYP) :: spline_Test ! DO loop indices: INTEGER(i4) :: i,j,k ! Pseudo random number seed: INTEGER(i4) :: seed_size INTEGER(i4), DIMENSION(:), ALLOCATABLE :: seed ! Size of time interval: INTEGER(i4) :: jsize ! Indices of time steps to save: Loading Loading @@ -60,9 +56,7 @@ REAL(r8) :: pcnt1, pcnt2, pcnt3, pcnt4 ! To store system commands and fileNames: CHARACTER*300 :: command, mpwd INTEGER(i4) :: n_mpwd, STATUS CHARACTER*300 :: inputFileDir, inputFile, fileName, xpSelector, rootDir, dir0, dir1 ! Declare user-defined functions: REAL(r8) :: Interp1, diff1 CHARACTER*300 :: inputFileDir, inputFile, fileName, xpSelector, repoDir, dir0, dir1 ! Create input namelist from the user-defined structures: ! ============================================================================== Loading @@ -70,7 +64,7 @@ namelist/in_nml/in ! Get root directory: ! ============================================================================== CALL GET_ENVIRONMENT_VARIABLE('REPO_DIR',rootDir) CALL GET_ENVIRONMENT_VARIABLE('REPO_DIR',repoDir) ! Get input file name and directory: ! ============================================================================= Loading @@ -83,10 +77,8 @@ OPEN(unit=4,file=inputFileDir,status='old',form='formatted') read(4,in_nml) CLOSE(unit=4) ! Populate the in%rootDir field: ! ============================================================================= in%rootDir = trim(adjustl(rootDir)) ! Select the test species: ! ============================================================================== if (in%species_a .eq. 1) then in%q_t = -e_c in%m_t = m_e Loading Loading @@ -132,12 +124,6 @@ CALL InitSpline(spline_Bz ,in%nz,0._8,0._8,1,0._8) CALL InitSpline(spline_ddBz,in%nz,0._8,0._8,1,0._8) CALL InitSpline(spline_Phi ,in%nz,0._8,0._8,1,0._8) ! Allocate memory for spline_test variable: ! ============================================================================== ! Spline_test is a variable that holds up to 6 different test profiles "y" and ! one "x" coordinate. CALL InitSplineTest(spline_Test,in%nz) ! Allocate memory to main simulation variables: ! ============================================================================== ALLOCATE(zp(in%Nparts),kep(in%Nparts),xip(in%Nparts)) Loading @@ -164,7 +150,7 @@ ALLOCATE(fcurr(in%Nparts),fnew(in%Nparts)) ! Magnetic field data: fileName = trim(adjustl(in%BFieldFile)) fileName = trim(adjustl(in%BFieldFileDir))//fileName fileName = trim(adjustl(in%rootDir))//fileName fileName = trim(adjustl(in%repoDir))//fileName ! Populate profile data based on external file: CALL ReadSpline(spline_Bz,fileName) Loading @@ -185,36 +171,6 @@ if (in%iPotential) then end if CALL ComputeSpline(spline_Phi) ! Test the splines: ! ========================================================================== if (.true.) then do i=1,in%nz !spline_Test%x(i) = in%zmin + i*0.03 spline_Test%x(i) = 0.0 + i*0.02 spline_Test%y1(i) = Interp1(spline_Test%x(i),spline_Bz) spline_Test%y2(i) = diff1(spline_Test%x(i),spline_Bz) spline_Test%y3(i) = Interp1(spline_Test%x(i),spline_ddBz) spline_Test%y4(i) = Interp1(spline_Test%x(i),spline_Phi) spline_Test%y5(i) = BESSEL_JN(0,spline_Test%x(i)) spline_Test%y6(i) = BESSEL_JN(1,spline_Test%x(i)) end do fileName = "B_spline.dat" OPEN(unit=8,file=fileName,form="formatted",status="unknown") do j = 1,in%nz WRITE(8,*) spline_Test%x(j), spline_Test%y1(j), spline_Test%y2(j),& spline_Test%y3(j), spline_Test%y4(j), spline_Test%y5(j), spline_Test%y6(j) end do CLOSE(unit=8) end if ! Initialize pseudo random number generator: ! =========================================================================== CALL random_seed(size=seed_size) ALLOCATE(seed(seed_size)) CALL random_seed(get=seed) seed = 314159565 CALL random_seed(put=seed) ! Inititalize zp, kep, xip ! ============================================================================== kep = 0.; xip = 0.; zp = 0.; Loading Loading @@ -271,9 +227,6 @@ TimeStepping: do j = 1,in%Nsteps AllParticles: do i = 1,in%Nparts if (j .EQ. 1 .AND. i .EQ. 1) then WRITE(*,*) "spline_ddBz", spline_ddBz%n WRITE(*,*) "spline_Phi", spline_Phi%n WRITE(*,*) "spline_Bz", spline_Bz%n in%threads_given = OMP_GET_NUM_THREADS() WRITE(*,*) '' WRITE(*,*) '*********************************************************************' Loading Loading @@ -387,7 +340,7 @@ WRITE(*,*) '' if (in%iSave) then ! Create new directory to save output data: ! -------------------------------------------------------------------------- dir1 = trim(in%rootDir)//'/OutputFiles' dir1 = trim(in%repoDir)//'/OutputFiles' command = 'mkdir '//dir1 CALL system(command,STATUS) WRITE(*,*) 'Status: ', STATUS Loading @@ -397,7 +350,7 @@ if (in%iSave) then n_mpwd = lEN_TRIM(inputFile)-3 dir0 = inputFile dir0 = dir0(1:n_mpwd) dir1 = trim(in%rootDir)//'/OutputFiles/'//trim(dir0) dir1 = trim(in%repoDir)//'/OutputFiles/'//trim(dir0) command = 'mkdir '//dir1 CALL system(command,STATUS) Loading Loading @@ -483,13 +436,13 @@ if (in%iSave) then ! Copy input file to output directory: ! -------------------------------------------------------------------------- dir0 = trim(in%rootDir)//'/InputFiles/'//trim(inputFile) dir0 = trim(in%repoDir)//'/InputFiles/'//trim(inputFile) command = 'cp '//trim(trim(dir0)//' '//trim(dir1)) CALL system(command) ! Copy magnetic field data: ! -------------------------------------------------------------------------- dir0 = trim(in%rootDir)//'/BfieldData'//trim(in%BFieldFile) dir0 = trim(in%repoDir)//'/BfieldData'//trim(in%BFieldFile) command = 'cp '//trim(trim(dir0)//' '//trim(dir1))//'/Bfield.txt' CALL system(command) Loading @@ -498,7 +451,7 @@ if (in%iSave) then n_mpwd = lEN_TRIM(inputFile)-3 dir0 = inputFile dir0 = dir0(1:n_mpwd) dir0 = trim(in%rootDir)//'/OutputFiles/'//trim(dir0)//'/'//trim(in%fileDescriptor) dir0 = trim(in%repoDir)//'/OutputFiles/'//trim(dir0)//'/'//trim(in%fileDescriptor) fileName = trim(dir0)//'/commitHash.txt' command = 'git log --oneline -1 > '//trim(fileName) CALL system(command) Loading
src/run_linFP.sh +1 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ INPUT_FILE="xp_IonSlowingDown.in" # Set number of threads: # =================================================== export OMP_NUM_THREADS=32 export OMP_NUM_THREADS=1 # Set processor binding for openMP: # =================================================== Loading