Browse Source

Merge branch '3-reduce-debug-output'

1.00.00
Sven Karsten 2 years ago
parent
commit
1f0f95cd4c
  1. 2
      build_haumea.sh
  2. 2
      build_hlrnb.sh
  3. 2
      build_hlrng.sh
  4. 2
      build_phy-2.sh
  5. 33
      src/flux_calculator.F90
  6. 13
      src/flux_calculator_basic.F90
  7. 14
      src/flux_calculator_create_namcouple.F90

2
build_haumea.sh

@ -28,7 +28,7 @@ INCLUDES="-I ${OASIS3_LIB}/build/lib/mct \
-I${IOW_ESM_NETCDF_INCLUDE}"
LIBS="-lnetcdf -lnetcdff -L${IOW_ESM_NETCDF_LIBRARY}"
if [ $debug == "debug" ]; then
FFLAGS="-O0 -r8 -fp-model precise -xHost -DUSE_DOUBLE_PRECISION -g -traceback -check all"
FFLAGS="-O0 -r8 -fp-model precise -xHost -DUSE_DOUBLE_PRECISION -g -traceback -check all -DIOW_ESM_DEBUG"
else
FFLAGS="-O3 -r8 -no-prec-div -fp-model fast=2 -xHost -DUSE_DOUBLE_PRECISION"
fi

2
build_hlrnb.sh

@ -29,7 +29,7 @@ INCLUDES="-I ${OASIS3_LIB}/build/lib/mct \
-I${IOW_ESM_NETCDF_INCLUDE}"
LIBS="-lnetcdf -lnetcdff -L${IOW_ESM_NETCDF_LIBRARY}"
if [ $debug == "debug" ]; then
FFLAGS="-O0 -r8 -fp-model precise -xHost -DUSE_DOUBLE_PRECISION -g -traceback -check all"
FFLAGS="-O0 -r8 -fp-model precise -xHost -DUSE_DOUBLE_PRECISION -g -traceback -check all -DIOW_ESM_DEBUG"
else
FFLAGS="-O3 -r8 -no-prec-div -fp-model fast=2 -xHost -DUSE_DOUBLE_PRECISION"
fi

2
build_hlrng.sh

@ -29,7 +29,7 @@ INCLUDES="-I ${OASIS3_LIB}/build/lib/mct \
-I${IOW_ESM_NETCDF_INCLUDE}"
LIBS="-lnetcdf -lnetcdff -L${IOW_ESM_NETCDF_LIBRARY}"
if [ $debug == "debug" ]; then
FFLAGS="-O0 -r8 -fp-model precise -xHost -DUSE_DOUBLE_PRECISION -g -traceback -check all"
FFLAGS="-O0 -r8 -fp-model precise -xHost -DUSE_DOUBLE_PRECISION -g -traceback -check all -DIOW_ESM_DEBUG"
else
FFLAGS="-O3 -r8 -no-prec-div -fp-model fast=2 -xHost -DUSE_DOUBLE_PRECISION"
fi

2
build_phy-2.sh

@ -28,7 +28,7 @@ INCLUDES="-I ${OASIS3_LIB}/build/lib/mct \
-I${IOW_ESM_NETCDF_INCLUDE}"
LIBS="-lnetcdf -lnetcdff -L${IOW_ESM_NETCDF_LIBRARY}"
if [ $debug == "debug" ]; then
FFLAGS="-O0 -r8 -fp-model precise -xHost -DUSE_DOUBLE_PRECISION -g -traceback -check all"
FFLAGS="-O0 -r8 -fp-model precise -xHost -DUSE_DOUBLE_PRECISION -g -traceback -check all -DIOW_ESM_DEBUG"
else
FFLAGS="-O3 -r8 -no-prec-div -fp-model fast=2 -xHost -DUSE_DOUBLE_PRECISION"
fi

33
src/flux_calculator.F90

@ -17,7 +17,6 @@ PROGRAM flux_calculator
! Use OASIS communication library
USE mod_oasis
USE mod_oasis_data, only: oasis_debug
IMPLICIT NONE
INCLUDE 'mpif.h'
@ -36,8 +35,6 @@ PROGRAM flux_calculator
CHARACTER(len=50), PARAMETER :: regrid_v_to_t_filename='mappings/regrid_v_grid_to_t_grid.nc'
CHARACTER(len=50), PARAMETER :: regrid_t_to_v_filename='mappings/regrid_t_grid_to_v_grid.nc'
INTEGER :: verbosity_level = 2 ! 1 = standard, 2 = debug output
! General MPI and output variables
INTEGER :: mype, npes ! rank and number of pe
INTEGER :: localComm ! local MPI communicator and Initialized
@ -851,8 +848,10 @@ ENDIF
DO n_timestep = 1,num_timesteps
current_time = (n_timestep - 1) * timestep
WRITE (w_unit,*) 'Time since start = ',current_time,' seconds.'
CALL FLUSH(w_unit)
IF (verbosity_level >= VERBOSITY_LEVEL_STANDARD) THEN
WRITE (w_unit,*) 'Time since start = ',current_time,' seconds.'
CALL FLUSH(w_unit)
ENDIF
CALL MPI_BARRIER(MPI_COMM_WORLD, i)
!#############################################################################
@ -862,11 +861,11 @@ ENDIF
DO i=1,3 ! loop over grids
DO j=1,num_input_fields
IF ((input_field(j)%which_grid==i) .AND. (input_field(j)%early==.TRUE.)) THEN
IF (verbosity_level >= 2) THEN
IF (verbosity_level >= VERBOSITY_LEVEL_DEBUG) THEN
WRITE (w_unit,*) ' try to get ',input_field(j)%name,' at runtime=',current_time,' seconds.'
ENDIF
CALL oasis_get(input_field(j)%id, current_time, input_field(j)%field, ierror)
IF (verbosity_level >= 2) THEN
IF (verbosity_level >= VERBOSITY_LEVEL_DEBUG) THEN
WRITE(w_unit,*) ' received ',input_field(j)%name,' at runtime=',current_time,' seconds:'
WRITE(w_unit,*) ' range = ',MINVAL(input_field(j)%field),MAXVAL(input_field(j)%field)
ENDIF
@ -902,16 +901,18 @@ ENDIF
IF (output_field(j)%surface_type == 0) THEN
IF (ASSOCIATED(local_field(0,i)%var(output_field(j)%idx)%field) .AND. &
ASSOCIATED(local_field(2,i)%var(output_field(j)%idx)%field) ) THEN
WRITE (w_unit,*) ' Averaging ',output_field(j)%name,' at runtime=',current_time,' seconds.'
IF (verbosity_level >= VERBOSITY_LEVEL_DEBUG) THEN
WRITE (w_unit,*) ' Averaging ',output_field(j)%name,' at runtime=',current_time,' seconds.'
ENDIF
CALL average_across_surface_types(i,output_field(j)%idx,num_surface_types,grid_size,local_field)
ENDIF
ENDIF
IF (verbosity_level >= 2) THEN
IF (verbosity_level >= VERBOSITY_LEVEL_DEBUG) THEN
WRITE (w_unit,*) ' try to put ',output_field(j)%name,' at runtime=',current_time,' seconds.'
WRITE(w_unit,*) ' range = ',MINVAL(output_field(j)%field),MAXVAL(output_field(j)%field)
ENDIF
CALL oasis_put(output_field(j)%id, current_time, output_field(j)%field, ierror)
IF (verbosity_level >= 2) THEN
IF (verbosity_level >= VERBOSITY_LEVEL_DEBUG) THEN
WRITE(w_unit,*) ' sent ',output_field(j)%name,' at runtime=',current_time,' seconds:'
ENDIF
IF ( ierror .NE. OASIS_Ok .AND. ierror .LT. OASIS_Recvd) THEN
@ -930,11 +931,11 @@ ENDIF
DO i=1,3 ! loop over grids
DO j=1,num_input_fields
IF ((input_field(j)%which_grid==i) .AND. (input_field(j)%early==.FALSE.)) THEN
IF (verbosity_level >= 2) THEN
IF (verbosity_level >= VERBOSITY_LEVEL_DEBUG) THEN
WRITE (w_unit,*) ' try to get ',input_field(j)%name,' at runtime=',current_time,' seconds.'
ENDIF
CALL oasis_get(input_field(j)%id, current_time, input_field(j)%field, ierror)
IF (verbosity_level >= 2) THEN
IF (verbosity_level >= VERBOSITY_LEVEL_DEBUG) THEN
WRITE(w_unit,*) ' received ',input_field(j)%name,' at runtime=',current_time,' seconds:'
WRITE(w_unit,*) ' range = ',MINVAL(input_field(j)%field),MAXVAL(input_field(j)%field)
ENDIF
@ -990,16 +991,18 @@ ENDIF
IF (output_field(j)%surface_type == 0) THEN
IF (ASSOCIATED(local_field(0,i)%var(output_field(j)%idx)%field) .AND. &
ASSOCIATED(local_field(2,i)%var(output_field(j)%idx)%field) ) THEN
WRITE (w_unit,*) ' Averaging ',output_field(j)%name,' at runtime=',current_time,' seconds.'
IF (verbosity_level >= VERBOSITY_LEVEL_DEBUG) THEN
WRITE (w_unit,*) ' Averaging ',output_field(j)%name,' at runtime=',current_time,' seconds.'
ENDIF
CALL average_across_surface_types(i,output_field(j)%idx,num_surface_types,grid_size,local_field)
ENDIF
ENDIF
IF (verbosity_level >= 2) THEN
IF (verbosity_level >= VERBOSITY_LEVEL_DEBUG) THEN
WRITE (w_unit,*) ' try to put ',output_field(j)%name,' at runtime=',current_time,' seconds.'
WRITE(w_unit,*) ' range = ',MINVAL(output_field(j)%field),MAXVAL(output_field(j)%field)
ENDIF
CALL oasis_put(output_field(j)%id, current_time, output_field(j)%field, ierror)
IF (verbosity_level >= 2) THEN
IF (verbosity_level >= VERBOSITY_LEVEL_DEBUG) THEN
WRITE(w_unit,*) ' sent ',output_field(j)%name,' at runtime=',current_time,' seconds:'
ENDIF
IF ( ierror .NE. OASIS_Ok .AND. ierror .LT. OASIS_Recvd) THEN

13
src/flux_calculator_basic.F90

@ -62,6 +62,19 @@ MODULE flux_calculator_basic
CHARACTER(len=6), DIMENSION(3) :: grid_name = ['t_grid', 'u_grid', 'v_grid']
INTEGER :: w_unit ! a logfile to write the progress and error messages
! control amount of output
ENUM, BIND(c)
ENUMERATOR :: VERBOSITY_LEVEL_ERROR = 0
ENUMERATOR :: VERBOSITY_LEVEL_STANDARD
ENUMERATOR :: VERBOSITY_LEVEL_DEBUG
ENDENUM
#ifdef IOW_ESM_DEBUG
INTEGER :: verbosity_level = VERBOSITY_LEVEL_DEBUG ! 1 = standard, 2 = debug output
#else
INTEGER :: verbosity_level = VERBOSITY_LEVEL_STANDARD ! 1 = standard, 2 = debug output
#endif
TYPE integerarray
INTEGER (kind=4), DIMENSION(:), POINTER :: field

14
src/flux_calculator_create_namcouple.F90

@ -27,7 +27,11 @@ MODULE flux_calculator_create_namcouple
WRITE(w_namcouple,*) '############################################'
WRITE(w_namcouple,*) ' $NLOGPRT'
#ifdef IOW_ESM_DEBUG
WRITE(w_namcouple,*) '1 1'
#else
WRITE(w_namcouple,*) '0 1' !TODO: eventually set the second 1 to 0 (= timings are calculated)
#endif
WRITE(w_namcouple,*) ' $END'
WRITE(w_namcouple,*) '############################################'
WRITE(w_namcouple,*) ' $STRINGS'
@ -95,9 +99,15 @@ MODULE flux_calculator_create_namcouple
! write entry
IF (my_io == 'R') THEN
WRITE(w_namcouple,*) counterpart, ' ', io_field%name, ' 1 ', timestep, ' 2 restart_flc_'//TRIM(io_field%name(3:6))//'_'//TRIM(my_model_name)//'.nc EXPOUT'
#ifdef IOW_ESM_DEBUG
WRITE(w_namcouple, '(A, A, A, A, I0, A)') counterpart, ' ', io_field%name, ' 1 ', timestep, ' 2 restart_flc_'//TRIM(io_field%name(3:6))//'_'//TRIM(my_model_name)//'.nc EXPOUT'
ELSE
WRITE(w_namcouple,*) io_field%name, ' ', counterpart, ' 1 ', timestep, ' 2 restart_flc_'//TRIM(io_field%name(3:6))//'_'//TRIM(my_model_name)//'.nc EXPOUT'
WRITE(w_namcouple, '(A, A, A, A, I0, A)') io_field%name, ' ', counterpart, ' 1 ', timestep, ' 2 restart_flc_'//TRIM(io_field%name(3:6))//'_'//TRIM(my_model_name)//'.nc EXPOUT'
#else
WRITE(w_namcouple, '(A, A, A, A, I0, A)') counterpart, ' ', io_field%name, ' 1 ', timestep, ' 2 restart_flc_'//TRIM(io_field%name(3:6))//'_'//TRIM(my_model_name)//'.nc EXPORTED'
ELSE
WRITE(w_namcouple, '(A, A, A, A, I0, A)') io_field%name, ' ', counterpart, ' 1 ', timestep, ' 2 restart_flc_'//TRIM(io_field%name(3:6))//'_'//TRIM(my_model_name)//'.nc EXPORTED'
#endif
ENDIF
WRITE(w_namcouple,*) remapping_info%src_grid_dims, remapping_info%dst_grid_dims, '___ ___ LAG=0' ! TODO: get rid off string literals here
WRITE(w_namcouple,*) "R 0 R 0"

Loading…
Cancel
Save