MODULE domain_param INTEGER :: nsplit_i INTEGER :: nsplit_j INTEGER :: halo=1 INTEGER, PARAMETER :: default_nsplit_i=1 INTEGER, PARAMETER :: default_nsplit_j=1 CONTAINS SUBROUTINE init_domain_param USE ioipsl, ONLY: getin USE mpipara, ONLY: using_mpi, mpi_size, is_mpi_master USE omp_para, ONLY: using_openmp IMPLICIT NONE nsplit_i=default_nsplit_i nsplit_j=default_nsplit_j CALL getin('nsplit_i',nsplit_i) CALL getin('nsplit_j',nsplit_j) IF (using_mpi.and.(.not.using_openmp).and.(nsplit_i*nsplit_j*10=mpi_size IF (is_mpi_master) THEN WRITE(*,*) "Error: Number of MPI processes must be" WRITE(*,*) " <= 10*nsplit_i_nsplit_j" WRITE(*,*) " but nsplit_i=",nsplit_i," , nsplit_j=",nsplit_j WRITE(*,*) " while using ",mpi_size," MPI processes" ENDIF STOP ENDIF ! TODO : same kind of test for OpenMP or mixed MPI/OpenMP cases END SUBROUTINE init_domain_param END MODULE domain_param