Skip to content
Snippets Groups Projects
Commit 65c26e60 authored by Antoine Cyril David Hoffmann's avatar Antoine Cyril David Hoffmann
Browse files

comments

parent 17244ee7
No related branches found
No related tags found
No related merge requests found
......@@ -13,9 +13,9 @@ subroutine auxval
CALL init_grid_distr_and_plans(Nr,Nz)
CALL set_krgrid
CALL set_krgrid ! MPI Distributed dimension
CALL set_kzgrid ! Distributed dimension
CALL set_kzgrid
CALL set_pj
......@@ -26,7 +26,6 @@ subroutine auxval
IF (my_id .EQ. i_) WRITE (*,'(I2,A9,I3,A8,I3,A8,I3,A8,I3,A15,I6)') &
i_,': ikrs = ', ikrs, ' ikre = ', ikre, 'ikzs = ', ikzs, ' ikze = ', ikze, &
'alloc_local = ', alloc_local_1+alloc_local_2
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
ENDDO
END SUBROUTINE auxval
......@@ -9,42 +9,48 @@ SUBROUTINE control
!________________________________________________________________________________
! 1. Prologue
! 1.1 Initialize the parallel environment
IF (my_id .EQ. 1) WRITE(*,*) 'Initialize MPI...'
IF (my_id .EQ. 0) WRITE(*,*) 'Initialize MPI...'
CALL ppinit
IF (my_id .EQ. 1) WRITE(*,'(a/)') '...MPI initialized'
IF (my_id .EQ. 0) WRITE(*,'(a/)') '...MPI initialized'
CALL daytim('Start at ')
! 1.2 Define data specific to run
IF (my_id .EQ. 1) WRITE(*,*) 'Load basic data...'
IF (my_id .EQ. 0) WRITE(*,*) 'Load basic data...'
CALL basic_data
IF (my_id .EQ. 1) WRITE(*,'(a/)') '...basic data loaded.'
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
IF (my_id .EQ. 0) WRITE(*,'(a/)') '...basic data loaded.'
! 1.3 Read input parameters from input file
IF (my_id .EQ. 1) WRITE(*,*) 'Read input parameters...'
IF (my_id .EQ. 0) WRITE(*,*) 'Read input parameters...'
CALL readinputs
IF (my_id .EQ. 1) WRITE(*,'(a/)') '...input parameters read'
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
IF (my_id .EQ. 0) WRITE(*,'(a/)') '...input parameters read'
! 1.4 Set auxiliary values (allocate arrays, set grid, ...)
IF (my_id .EQ. 1) WRITE(*,*) 'Calculate auxval...'
IF (my_id .EQ. 0) WRITE(*,*) 'Calculate auxval...'
CALL auxval
IF (my_id .EQ. 1) WRITE(*,'(a/)') '...auxval calculated'
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
IF (my_id .EQ. 0) WRITE(*,'(a/)') '...auxval calculated'
! 1.5 Initial conditions
IF (my_id .EQ. 1) WRITE(*,*) 'Create initial state...'
IF (my_id .EQ. 0) WRITE(*,*) 'Create initial state...'
CALL inital
IF (my_id .EQ. 1) WRITE(*,'(a/)') '...initial state created'
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
IF (my_id .EQ. 0) WRITE(*,'(a/)') '...initial state created'
! 1.6 Initial diagnostics
IF (my_id .EQ. 1) WRITE(*,*) 'Initial diagnostics...'
IF (my_id .EQ. 0) WRITE(*,*) 'Initial diagnostics...'
CALL diagnose(0)
IF (my_id .EQ. 1) WRITE(*,'(a/)') '...initial diagnostics done'
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
IF (my_id .EQ. 0) WRITE(*,'(a/)') '...initial diagnostics done'
CALL FLUSH(stdout)
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
!________________________________________________________________________________
IF (my_id .EQ. 1) WRITE(*,*) 'Time integration loop..'
IF (my_id .EQ. 0) WRITE(*,*) 'Time integration loop..'
!________________________________________________________________________________
! 2. Main loop
DO
......@@ -68,15 +74,14 @@ SUBROUTINE control
END DO
CALL mpi_barrier(MPI_COMM_WORLD,ierr)
IF (my_id .EQ. 1) WRITE(*,'(a/)') '...time integration done'
IF (my_id .EQ. 0) WRITE(*,'(a/)') '...time integration done'
!________________________________________________________________________________
! 9. Epilogue
CALL diagnose(-1)
CALL endrun
IF (my_id .EQ. 1) CALL daytim('Done at ')
IF (my_id .EQ. 0) CALL daytim('Done at ')
CALL ppexit
......
......@@ -20,7 +20,12 @@ MODULE fourier
type(C_PTR) , PUBLIC :: planf, planb
integer(C_INTPTR_T) :: i, ix, iy
integer(C_INTPTR_T), PUBLIC :: alloc_local_1, alloc_local_2
integer(C_INTPTR_T) :: NR_, NZ_
integer(C_INTPTR_T) :: NR_, NZ_, NR_halved
! many plan data variables
integer(C_INTPTR_T) :: howmany=9 ! numer of eleemnt of the tensor
integer :: rank=3 ! rank of the transform
integer(C_INTPTR_T), dimension(2) :: fft_dims ! array containing data extent
CONTAINS
......@@ -29,9 +34,12 @@ MODULE fourier
INTEGER, INTENT(IN) :: Nr,Nz
NR_ = Nr; NZ_ = Nz
NR_halved = NR_/2 + 1
!! Complex arrays F, G
! Compute the room to allocate
alloc_local_1 = fftw_mpi_local_size_2d(NR_/2 + 1, NZ_, MPI_COMM_WORLD, local_nkr, local_nkr_offset)
alloc_local_1 = fftw_mpi_local_size_2d(NR_halved, NZ_, MPI_COMM_WORLD, local_nkr, local_nkr_offset)
! alloc_local_1 = fftw_mpi_local_size_2d_many(2, NR_halved, NZ_, MPI_COMM_WORLD, local_nkr, local_nkr_offset)
! Initalize pointers to this room
cdatac_f = fftw_alloc_complex(alloc_local_1)
cdatac_g = fftw_alloc_complex(alloc_local_1)
......@@ -41,11 +49,15 @@ MODULE fourier
call c_f_pointer(cdatac_g, cmpx_data_g, [NZ_ ,local_nkr])
call c_f_pointer(cdatac_c, cmpx_data_c, [NZ_ ,local_nkr])
alloc_local_2 = fftw_mpi_local_size_2d(NZ_, NR_/2 + 1, MPI_COMM_WORLD, local_nz, local_nz_offset)
!! Real arrays iFFT(F), iFFT(G)
! Compute the room to allocate
alloc_local_2 = fftw_mpi_local_size_2d(NZ_, NR_halved, MPI_COMM_WORLD, local_nz, local_nz_offset)
! alloc_local_2 = fftw_mpi_local_size_2d_many(2, NZ_, NR_halved, MPI_COMM_WORLD, local_nz, local_nz_offset)
! Initalize pointers to this room
cdatar_f = fftw_alloc_real(2*alloc_local_2)
cdatar_g = fftw_alloc_real(2*alloc_local_2)
cdatar_c = fftw_alloc_real(2*alloc_local_2)
! Initalize the arrays with the rooms pointed
call c_f_pointer(cdatar_f, real_data_f, [2*(NR_/2 + 1),local_nz])
call c_f_pointer(cdatar_g, real_data_g, [2*(NR_/2 + 1),local_nz])
call c_f_pointer(cdatar_c, real_data_c, [2*(NR_/2 + 1),local_nz])
......@@ -59,13 +71,6 @@ MODULE fourier
stop
end if
DO ix = 0,num_procs-1
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
IF (my_id .EQ. ix) print *, my_id,': alloc_local = ', alloc_local_1+alloc_local_2
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
ENDDO
END SUBROUTINE init_grid_distr_and_plans
......
......@@ -22,14 +22,14 @@ SUBROUTINE inital
ELSE
CALL init_moments
!!!!!! Set phi !!!!!!
IF (my_id .EQ. 1) WRITE(*,*) 'Init phi'
IF (my_id .EQ. 0) WRITE(*,*) 'Init phi'
CALL poisson
ENDIF
!!!!!! Set Sepj, Sipj and dnjs coeff table !!!!!!
IF ( NON_LIN ) THEN;
IF (my_id .EQ. 1) WRITE(*,*) 'Init Sapj'
IF (my_id .EQ. 0) WRITE(*,*) 'Init Sapj'
CALL compute_Sapj
! WRITE(*,*) 'Building Dnjs table'
CALL build_dnjs_table
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment