diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 index 7a763a67522b523f8c5ddee29f6449c4b89e3697..5a387ac24a205b5977d6801463847c8e880b7ca1 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 @@ -19,6 +19,7 @@ ! P. Wautelet 04/12/2020: add IO_Field_create and IO_Ndimlist_reduce subroutines ! P. Wautelet 07/12/2020: add support for partial write of fields (optional argument: koffset, not all subroutines, no LFI spport) ! P. Wautelet 14/01/2021: add IO_Field_write_byname_N4 and IO_Field_write_byfield_N4 subroutines +! P. Wautelet 07/04/2023: correct IO_Field_user_write examples !----------------------------------------------------------------- #define MNH_SCALARS_IN_SPLITFILES 0 @@ -3049,6 +3050,7 @@ end subroutine IO_Ndimlist_reduce ! CALL IO_Format_write_select(TPFILE,GLFI,GNC4) ! +!PW: transferer ce traitement LFI dans les subroutines LFI (en creer 1 pour les HFIELD) IF(GLFI) THEN ILE=LEN(HFIELD) IP=SIZE(HFIELD) @@ -4223,9 +4225,10 @@ END DO END SUBROUTINE IO_Fieldlist_write -SUBROUTINE IO_Field_user_write(TPOUTPUT) +SUBROUTINE IO_Field_user_write( TPOUTPUT ) ! #if 0 +! IMPORTANT: uncomment the previous line (set to '#if 1') if you want to use the next lines USE MODD_DYN_n, ONLY: XTSTEP USE MODD_FIELD_n, ONLY: XUT, XVT, XRT, XTHT, XSVT USE MODD_PARAMETERS, ONLY: JPVEXT @@ -4239,86 +4242,93 @@ TYPE(TOUTBAK), INTENT(IN) :: TPOUTPUT !Output structure TYPE(TFIELDMETADATA) :: TZFIELD ! #if 0 -INTEGER :: IKB +! IMPORTANT: uncomment the previous line (set to '#if 1') if you want to use the next lines ! +INTEGER :: IKB + IKB=JPVEXT+1 -! -TZFIELD%CMNHNAME = 'UTLOW' -TZFIELD%CSTDNAME = 'x_wind' -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'm s-1' -TZFIELD%CDIR = 'XY' -TZFIELD%CCOMMENT = 'X_Y_Z_U component of wind at lowest physical level' -TZFIELD%NGRID = 2 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 2 -TZFIELD%LTIMEDEP = .TRUE. -CALL IO_Field_write(TPOUTPUT%TFILE,TZFIELD,XUT(:,:,IKB)) -! -TZFIELD%CMNHNAME = 'VTLOW' -TZFIELD%CSTDNAME = 'y_wind' -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'm s-1' -TZFIELD%CDIR = 'XY' -TZFIELD%CCOMMENT = 'X_Y_Z_V component of wind at lowest physical level' -TZFIELD%NGRID = 3 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 2 -TZFIELD%LTIMEDEP = .TRUE. -CALL IO_Field_write(TPOUTPUT%TFILE,TZFIELD,XVT(:,:,IKB)) -! -TZFIELD%CMNHNAME = 'THTLOW' -TZFIELD%CSTDNAME = 'air_potential_temperature' -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'K' -TZFIELD%CDIR = 'XY' -TZFIELD%CCOMMENT = 'X_Y_Z_potential temperature at lowest physical level' -TZFIELD%NGRID = 1 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 2 -TZFIELD%LTIMEDEP = .TRUE. -CALL IO_Field_write(TPOUTPUT%TFILE,TZFIELD,XTHT(:,:,IKB)) -! -TZFIELD%CMNHNAME = 'RVTLOW' -!TZFIELD%CSTDNAME = 'humidity_mixing_ratio' !ratio of the mass of water vapor to the mass of dry air -TZFIELD%CSTDNAME = 'specific_humidity' !mass fraction of water vapor in (moist) air -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'kg kg-1' -TZFIELD%CDIR = 'XY' -TZFIELD%CCOMMENT = 'X_Y_Z_Vapor mixing Ratio at lowest physical level' -TZFIELD%NGRID = 1 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 2 -TZFIELD%LTIMEDEP = .TRUE. -CALL IO_Field_write(TPOUTPUT%TFILE,TZFIELD,XRT(:,:,IKB,1)) -! -TZFIELD%CMNHNAME = 'ACPRRSTEP' -TZFIELD%CSTDNAME = 'rainfall_amount' -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'kg m-2' -TZFIELD%CDIR = '' -TZFIELD%CCOMMENT = 'X_Y_ACcumulated Precipitation Rain Rate during timestep' -TZFIELD%NGRID = 1 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 2 -TZFIELD%LTIMEDEP = .TRUE. + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'UTLOW', & + CLONGNAME = '', & + CSTDNAME = 'x_wind', & + CUNITS = 'm s-1', & + CDIR = 'XY', & + CCOMMENT = 'X-component of wind at lowest physical level', & + NGRID = 2, & + NTYPE = TYPEREAL, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XUT(:,:,IKB) ) + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'VTLOW', & + CLONGNAME = '', & + CSTDNAME = 'y_wind', & + CUNITS = 'm s-1', & + CDIR = 'XY', & + CCOMMENT = 'Y-component of wind at lowest physical level', & + NGRID = 3, & + NTYPE = TYPEREAL, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XVT(:,:,IKB) ) + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'THTLOW', & + CLONGNAME = '', & + CSTDNAME = 'air_potential_temperature', & + CUNITS = 'K', & + CDIR = 'XY', & + CCOMMENT = 'potential temperature at lowest physical level', & + NGRID = 1, & + NTYPE = TYPEREAL, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XTHT(:,:,IKB) ) + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'RVTLOW', & + CLONGNAME = '', & + ! CSTDNAME = 'humidity_mixing_ratio', & !ratio of the mass of water vapor to the mass of dry air + CSTDNAME = 'specific_humidity', & !mass fraction of water vapor in (moist) air + CUNITS = 'kg kg-1', & + CDIR = 'XY', & + CCOMMENT = 'Vapor mixing Ratio at lowest physical level', & + NGRID = 1, & + NTYPE = TYPEREAL, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XRT(:,:,IKB,1) ) + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'ACPRRSTEP', & + CLONGNAME = '', & + CSTDNAME = 'rainfall_amount', & + CUNITS = 'kg m-2', & + CDIR = 'XY', & + CCOMMENT = 'ACcumulated Precipitation Rain Rate during timestep', & + NGRID = 1, & + NTYPE = TYPEREAL, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) !XACPRR is multiplied by 1000. to convert from m to kg m-2 (water density is assumed to be 1000 kg m-3) -CALL IO_Field_write(TPOUTPUT%TFILE,TZFIELD,XINPRR*XTSTEP*1.0E3) -! -TZFIELD%CMNHNAME = 'SVT001' -TZFIELD%CSTDNAME = 'concentration in scalar variable' -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'kg kg-1' -TZFIELD%CDIR = 'XY' -TZFIELD%CCOMMENT = 'X_Y_Z_concentration in scalar variable' -TZFIELD%NGRID = 1 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 3 -TZFIELD%LTIMEDEP = .TRUE. -CALL IO_WRITE_FIELD(TPOUTPUT%TFILE,TZFIELD,XSVT(:,:,:,1)) -! +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XINPRR*XTSTEP*1.0E3 ) + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'SVT001', & + CLONGNAME = 'SVT001', & + CSTDNAME = '', & + CUNITS = 'kg kg-1', & + CDIR = 'XY', & + CCOMMENT = 'concentration in scalar variable', & + NGRID = 1, & + NTYPE = TYPEREAL, & + NDIMS = 3, & + LTIMEDEP = .TRUE. ) +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XSVT(:,:,:,1) ) #endif -! + END SUBROUTINE IO_Field_user_write END MODULE MODE_IO_FIELD_WRITE