MODULE dtasss !!====================================================================== !! *** MODULE dtasss *** !! Data : Sea Surface Salinity (SSS) !!====================================================================== !!---------------------------------------------------------------------- !! dta_sss : sss data !!---------------------------------------------------------------------- !! * Modules used USE oce ! ocean dynamics and tracers USE dom_oce ! ocean space and time domain USE in_out_manager ! I/O manager USE ocfzpt ! ??? USE daymod ! calendar IMPLICIT NONE PRIVATE !! * Shared routine PUBLIC dta_sss !! * Shared module variables #if defined key_dtasss LOGICAL , PUBLIC, PARAMETER :: lk_dtasss = .TRUE. !: sss data flag #else LOGICAL , PUBLIC, PARAMETER :: lk_dtasss = .FALSE. !: sss data flag #endif REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & !: sss !: surface salinity !!---------------------------------------------------------------------- !! OPA 9.0 , IPSL-LODYC (2005) !!---------------------------------------------------------------------- CONTAINS #if defined key_dtasss !!---------------------------------------------------------------------- !! 'key_dtasss' SSS data !!---------------------------------------------------------------------- SUBROUTINE dta_sss( kt ) !!--------------------------------------------------------------------- !! *** ROUTINE dta_sss *** !! !! ** Purpose : Read surface salinity data !! !! ** Method : - Read a specific sss. !! !! ** Action : - sss !! !! History : !! ! 90-03 (O. Marti and Ph Dandin) Original code !! ! 92-07 (M. Imbard) !! ! 96-11 (E. Guilyardi) Daily AGCM input files !! ! 00-04 (M. Imbard) NetCDF FORMAT !! ! 00-10 (J.-P. Boulanger) passage ORCA a TDH !! ! 01-10 (A. Lazar) Reynolds default !! 8.5 ! 02-06 (G. Madec) F90: Free form and module !! ! 02-11 (C. Levy) MPP/MPI NetCDF read !! ! 05-03 (M. Levy) adapt SST to SSS !!---------------------------------------------------------------------- !! * Modules used USE ioipsl !! * Arguments INTEGER :: kt !! * Local declarations INTEGER :: idy INTEGER :: istep(1) INTEGER :: ipi, ipj, ipk REAL(wp) :: zdate0, zdt REAL(wp) :: zlon(jpi,jpj), zlat(jpi,jpj), zlev(jpk) CHARACTER (len=45) :: & clname = "sss.nc" ! filename for SSS !!---------------------------------------------------------------------- IF( kt == nit000 ) THEN IF(lwp) WRITE(numout,*) IF(lwp) WRITE(numout,*) 'dta_sss : sea surface salinity data' IF(lwp) WRITE(numout,*) '~~~~~~~ read in file: ', clname sss(:,:) = 0.e0 ! required for extra halos in mpp ipi = jpiglo ipj = jpjglo ipk = 0 zdate0 = 0.e0 zdt = 0.e0 IF(lwp) WRITE (numout,*) 'open sss file = ', clname CALL flinopen( TRIM(clname), mig(1), nlci, mjg(1), nlcj, .FALSE., ipi, ipj, & & ipk, zlon, zlat, zlev, idy, istep, zdate0, zdt, numsss ) IF( ipi /= jpidta .OR. ipj /= jpjdta ) THEN IF(lwp) WRITE(numout,*) IF(lwp) WRITE(numout,*) 'problem with dimensions' IF(lwp) WRITE(numout,*) ' ipi ', ipi, ' jpidta ', jpidta IF(lwp) WRITE(numout,*) ' ipj ', ipj, ' jpjdta ', jpjdta nstop = nstop + 1 ENDIF IF(lwp) WRITE(numout,*) idy, istep, zdate0, zdt CALL flinget( numsss, 'sss', jpidta, jpjdta, 1, idy, 1, & & 1, mig(1), nlci, mjg(1), nlcj, sss(1:nlci,1:nlcj) ) sss(:,:) = sss(:,:)*tmask(:,:,1) IF( kt == nit000 .AND. lwp ) THEN WRITE(numout,*) ' ' WRITE(numout,*) ' read sea surface salinity ok' WRITE(numout,*) ' ' CALL prihre(sss(1,1),jpi,jpj,1,jpi,20,1,jpj,10,1.,numout) ENDIF CALL flinclo(numsss) ENDIF END SUBROUTINE dta_sss #else !!---------------------------------------------------------------------- !! Default option : NO SSS data !!---------------------------------------------------------------------- SUBROUTINE dta_sss( kt ) !!--------------------------------------------------------------------- !! *** ROUTINE dta_sss *** !! !! ** Purpose : sea surface salinity data and update it !! at each time step. ??? !! !! ** Method : - sss !! !! History : !! ! 91-03 () Original code !! 8.5 ! 02-06 (G. Madec) F90: Free form and module !!---------------------------------------------------------------------- !! * Arguments INTEGER, INTENT( in ) :: kt ! ocean timestep !!--------------------------------------------------------------------- IF( kt == nit000 ) THEN IF(lwp) WRITE(numout,*) IF(lwp) WRITE(numout,*) 'dta_sss : No SSS data' IF(lwp) WRITE(numout,*) '~~~~~~~' ENDIF END SUBROUTINE dta_sss #endif !!====================================================================== END MODULE dtasss