Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for building with single-precision NEMO #10

Merged
merged 4 commits into from
Mar 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions src/ecwam/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -356,17 +356,11 @@ list( APPEND ecwam_srcs
z0wave.F90
)

# check for mixed precision build
set(MIXED_PRECISION 0)
if(${HAVE_SINGLE_PRECISION} AND NOT ${PNAME}_OCEANMODEL_HAVE_SINGLE_PRECISION)
set(MIXED_PRECISION 1)
endif()

if( HAVE_GEN_DERIV_TYPES )
list( APPEND ecwam_srcs ${CMAKE_CURRENT_BINARY_DIR}/yowfield_mod.F90)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yowfield_mod.F90
COMMAND ${FYPP} -m io -m yaml -m os -DMIXED_PRECISION=${MIXED_PRECISION} ${CMAKE_CURRENT_SOURCE_DIR}/yowfield_mod.fypp > yowfield_mod.F90
COMMAND ${FYPP} -m io -m yaml -m os ${CMAKE_CURRENT_SOURCE_DIR}/yowfield_mod.fypp > yowfield_mod.F90
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/yowfield_mod.fypp
VERBATIM)
else()
Expand Down
18 changes: 16 additions & 2 deletions src/ecwam/yowfield_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
MODULE YOWFIELD_MOD

USE PARKIND_WAVE, ONLY : JWRB, JWIM, JWRO
USE FIELD_MODULE, ONLY : FIELD_3RB, FIELD_2IM, FIELD_2RB, FIELD_3IM, FIELD_4RB, FIELD_4IM, FIELD_2RD
USE FIELD_MODULE, ONLY : FIELD_3RB, FIELD_2IM, FIELD_2RB, FIELD_3IM, FIELD_4RB, FIELD_4IM, FIELD_2RD, FIELD_2RM
USE FIELD_FACTORY_MODULE, ONLY : FIELD_NEW, FIELD_DELETE
IMPLICIT NONE

Expand Down Expand Up @@ -121,6 +121,19 @@ MODULE YOWFIELD_MOD
REAL(KIND=JWRO), DIMENSION(:), POINTER :: NEMOVSTOKES=>NULL()
REAL(KIND=JWRO), DIMENSION(:), POINTER :: NEMOSTRN=>NULL()
REAL(KIND=JWRO), DIMENSION(:), POINTER :: NEMOWSWAVE=>NULL()
#ifdef PARKIND1_SINGLE_NEMO
CLASS(FIELD_2RM), POINTER :: F_NSWH=>NULL()
CLASS(FIELD_2RM), POINTER :: F_NMWP=>NULL()
CLASS(FIELD_2RM), POINTER :: F_NPHIEPS=>NULL()
CLASS(FIELD_2RM), POINTER :: F_NEMOPHIF=>NULL()
CLASS(FIELD_2RM), POINTER :: F_NTAUOC=>NULL()
CLASS(FIELD_2RM), POINTER :: F_NEMOTAUX=>NULL()
CLASS(FIELD_2RM), POINTER :: F_NEMOTAUY=>NULL()
CLASS(FIELD_2RM), POINTER :: F_NEMOUSTOKES=>NULL()
CLASS(FIELD_2RM), POINTER :: F_NEMOVSTOKES=>NULL()
CLASS(FIELD_2RM), POINTER :: F_NEMOSTRN=>NULL()
CLASS(FIELD_2RM), POINTER :: F_NEMOWSWAVE=>NULL()
#else
CLASS(FIELD_2RD), POINTER :: F_NSWH=>NULL()
CLASS(FIELD_2RD), POINTER :: F_NMWP=>NULL()
CLASS(FIELD_2RD), POINTER :: F_NPHIEPS=>NULL()
Expand All @@ -132,6 +145,7 @@ MODULE YOWFIELD_MOD
CLASS(FIELD_2RD), POINTER :: F_NEMOVSTOKES=>NULL()
CLASS(FIELD_2RD), POINTER :: F_NEMOSTRN=>NULL()
CLASS(FIELD_2RD), POINTER :: F_NEMOWSWAVE=>NULL()
#endif
CONTAINS
PROCEDURE :: INIT => WAVE2OCEAN_FIELD_INIT
PROCEDURE :: UPDATE_VIEW => WAVE2OCEAN_UPDATE_VIEW
Expand Down Expand Up @@ -319,7 +333,7 @@ SUBROUTINE ENVIRONMENT_FINAL(SELF)
ENDIF
END SUBROUTINE ENVIRONMENT_FINAL

SUBROUTINE FORCING_FIELDS_FIELD_INIT(SELF, UWND, VWND, AIRD, WSTAR, CICOVER, CITHICK, LKFR, USTRA, VSTRA, UCUR, VCUR, &
SUBROUTINE FORCING_FIELDS_FIELD_INIT(SELF, UWND, VWND, AIRD, WSTAR, CICOVER, CITHICK, LKFR, USTRA, VSTRA, UCUR, VCUR,&
& WSWAVE, WDWAVE, UFRIC, TAUW, TAUWDIR, Z0M, Z0B, CHRNCK, XLON, YLAT)
CLASS(FORCING_FIELDS_FIELD), INTENT(INOUT) :: SELF
REAL(KIND=JWRB), DIMENSION(:,:), INTENT(IN), OPTIONAL :: UWND
Expand Down
12 changes: 6 additions & 6 deletions src/ecwam/yowfield_mod.fypp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
MODULE YOWFIELD_MOD

USE PARKIND_WAVE, ONLY : JWRB, JWIM, JWRO
USE FIELD_MODULE, ONLY : FIELD_3RB, FIELD_2IM, FIELD_2RB, FIELD_3IM, FIELD_4RB, FIELD_4IM, FIELD_2RD
USE FIELD_MODULE, ONLY : FIELD_3RB, FIELD_2IM, FIELD_2RB, FIELD_3IM, FIELD_4RB, FIELD_4IM, FIELD_2RD, FIELD_2RM
USE FIELD_FACTORY_MODULE, ONLY : FIELD_NEW, FIELD_DELETE
IMPLICIT NONE

Expand All @@ -25,15 +25,15 @@ MODULE YOWFIELD_MOD
#:for var, type, dim in objdef[obj]
#{if type == 'real'}#REAL(KIND=JWRB)#{elif type == 'ocean'}#REAL(KIND=JWRO)#{else}#INTEGER(KIND=JWIM)#{endif}#, DIMENSION(${','.join(':' for _ in range(dim-1))}$), POINTER :: ${var.upper()}$=>NULL()
#:endfor
#:if MIXED_PRECISION == 1
#ifdef PARKIND1_SINGLE_NEMO
#:for var, type, dim in objdef[obj]
CLASS(FIELD_${dim}$#{if type == 'int'}#IM#{elif type == 'ocean'}#RD#{else}#RB#{endif}#), POINTER :: F_${var.upper()}$=>NULL()
CLASS(FIELD_${dim}$#{if type == 'int'}#IM#{elif type == 'ocean'}#RM#{else}#RB#{endif}#), POINTER :: F_${var.upper()}$=>NULL()
#:endfor
#:else
#else
#:for var, type, dim in objdef[obj]
CLASS(FIELD_${dim}$#{if type == 'int'}#IM#{else}#RB#{endif}#), POINTER :: F_${var.upper()}$=>NULL()
CLASS(FIELD_${dim}$#{if type == 'int'}#IM#{elif type == 'ocean'}#RD#{else}#RB#{endif}#), POINTER :: F_${var.upper()}$=>NULL()
#:endfor
#:endif
#endif
CONTAINS
PROCEDURE :: INIT => ${obj.upper()}$_FIELD_INIT
PROCEDURE :: UPDATE_VIEW => ${obj.upper()}$_UPDATE_VIEW
Expand Down
Loading