-
Antoine Cyril David Hoffmann authoredAntoine Cyril David Hoffmann authored
auxval.F90 2.64 KiB
subroutine auxval
! Set auxiliary values, at beginning of simulation
USE basic
USE grid
USE array
USE model
USE fourier, ONLY: init_grid_distr_and_plans
use prec_const
USE numerics
USE geometry
USE parallel, ONLY: init_parallel_var, my_id, num_procs, num_procs_p, num_procs_z, num_procs_ky, rank_p, rank_ky, rank_z
USE processing, ONLY: init_process
IMPLICIT NONE
INTEGER :: i_, ierr
IF (my_id .EQ. 0) WRITE(*,*) '=== Set auxiliary values ==='
! Init the grids
CALL set_grids(shear,Npol,LINEARITY,N_HD,EM,Na) ! radial modes (MPI distributed by FFTW)
CALL memory ! Allocate memory for global arrays
CALL init_parallel_var(local_np,total_np,local_nky,total_nky,local_nz)
CALL init_process
CALL eval_magnetic_geometry ! precompute coeff for lin equation
CALL compute_lin_coeff ! precompute coeff for lin equation and geometry
CALL evaluate_kernels ! precompute the kernels
CALL evaluate_EM_op ! compute inverse of poisson and ampere operators
IF ( LINEARITY .NE. 'linear' ) THEN;
CALL build_dnjs_table ! precompute the Laguerre nonlin product coeffs
ENDIF
CALL build_dv4Hp_table ! precompute the hermite fourth derivative table
!! Display parallel settings
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
DO i_ = 0,num_procs-1
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
IF (my_id .EQ. i_) THEN
IF (my_id .EQ. 0) WRITE(*,*) ''
IF (my_id .EQ. 0) WRITE(*,*) '--------- Parallel environement ----------'
IF (my_id .EQ. 0) WRITE(*,'(A12,I3)') 'n_procs ', num_procs
IF (my_id .EQ. 0) WRITE(*,'(A12,I3,A14,I3,A14,I3)') 'num_procs_p = ', num_procs_p, ', num_procs_ky = ', num_procs_ky, ', num_procs_z = ', num_procs_z
IF (my_id .EQ. 0) WRITE(*,*) ''
WRITE(*,'(A9,I3,A10,I3,A10,I3,A9,I3)')&
'my_id = ', my_id, ', rank_p = ', rank_p, ', rank_ky = ', rank_ky,', rank_z = ', rank_z
WRITE(*,'(A22,I3,A11,I3)')&
' ips = ', ips , ', ipe = ', ipe
WRITE(*,'(A22,I3,A11,I3)')&
' ijs = ', ijs , ', ije = ', ije
WRITE(*,'(A22,I3,A11,I3)')&
' ikxs = ', ikxs , ', ikxe = ', ikxe
WRITE(*,'(A22,I3,A11,I3)')&
' ikys = ', ikys , ', ikye = ', ikye
WRITE(*,'(A22,I3,A11,I3)')&
' izs = ', izs , ', ize = ', ize
IF (my_id .NE. num_procs-1) WRITE (*,*) ''
IF (my_id .EQ. num_procs-1) WRITE(*,*) '------------------------------------------'
ENDIF
ENDDO
CALL mpi_barrier(MPI_COMM_WORLD, ierr)
IF((CLOS .EQ. 1)) &
CALL speak('Closure = 1 -> Maximal Napj degree is min(Pmax,2*Jmax+1): D = '// str(dmax))
END SUBROUTINE auxval