New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 5619 for branches/NERC/dev_r5589_is_oce_cpl/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90 – NEMO

Ignore:
Timestamp:
2015-07-20T19:43:15+02:00 (9 years ago)
Author:
mathiot
Message:

ocean/ice sheet coupling: initial commit

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5589_is_oce_cpl/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90

    r5215 r5619  
    3434 
    3535   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_tsd   ! structure of input SST (file informations, fields read) 
     36   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_tsddmp   ! structure of input SST (file informations, fields read) 
    3637 
    3738   !! * Substitutions 
     
    6061      TYPE(FLD_N), DIMENSION( jpts) ::   slf_i           ! array of namelist informations on the fields to read 
    6162      TYPE(FLD_N)                   ::   sn_tem, sn_sal 
     63      TYPE(FLD_N)                   ::   sn_dmpt, sn_dmps 
    6264      !! 
    6365      NAMELIST/namtsd/   ln_tsd_init, ln_tsd_tradmp, cn_dir, sn_tem, sn_sal 
     66      NAMELIST/namtra_dmpfile/ sn_dmpt, sn_dmps 
    6467      INTEGER  ::   ios 
    6568      !!---------------------------------------------------------------------- 
     
    7881902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtsd in configuration namelist', lwp ) 
    7982      IF(lwm) WRITE ( numond, namtsd ) 
     83 
     84      REWIND( numnam_ref )              ! Namelist namtra_dmp in reference namelist : Temperature and salinity damping term 
     85      READ  ( numnam_ref, namtra_dmpfile, IOSTAT = ios, ERR = 903) 
     86903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_dmp in reference namelist', lwp ) 
     87 
     88      REWIND( numnam_cfg )              ! Namelist namtra_dmp in configuration namelist : Temperature and salinity damping term 
     89      READ  ( numnam_cfg, namtra_dmpfile, IOSTAT = ios, ERR = 904 ) 
     90904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_dmp in configuration namelist', lwp ) 
    8091 
    8192      IF( PRESENT( ld_tradmp ) )   ln_tsd_tradmp = .TRUE.     ! forces the initialization when tradmp is used 
     
    105116         ! 
    106117         ALLOCATE( sf_tsd(jpts), STAT=ierr0 ) 
     118         ALLOCATE( sf_tsddmp(jpts), STAT=ierr0 ) 
    107119         IF( ierr0 > 0 ) THEN 
    108120            CALL ctl_stop( 'dta_tsd_init: unable to allocate sf_tsd structure' )   ;   RETURN 
     
    113125                                ALLOCATE( sf_tsd(jp_sal)%fnow(jpi,jpj,jpk)   , STAT=ierr2 ) 
    114126         IF( sn_sal%ln_tint )   ALLOCATE( sf_tsd(jp_sal)%fdta(jpi,jpj,jpk,2) , STAT=ierr3 ) 
     127         ! dmp file 
     128                                 ALLOCATE( sf_tsddmp(jp_tem)%fnow(jpi,jpj,jpk)   , STAT=ierr0 ) 
     129         IF( sn_dmpt%ln_tint )   ALLOCATE( sf_tsddmp(jp_tem)%fdta(jpi,jpj,jpk,2) , STAT=ierr1 ) 
     130                                 ALLOCATE( sf_tsddmp(jp_sal)%fnow(jpi,jpj,jpk)   , STAT=ierr2 ) 
     131         IF( sn_dmps%ln_tint )   ALLOCATE( sf_tsddmp(jp_sal)%fdta(jpi,jpj,jpk,2) , STAT=ierr3 ) 
    115132         ! 
    116133         IF( ierr0 + ierr1 + ierr2 + ierr3 > 0 ) THEN 
     
    120137         slf_i(jp_tem) = sn_tem   ;   slf_i(jp_sal) = sn_sal 
    121138         CALL fld_fill( sf_tsd, slf_i, cn_dir, 'dta_tsd', 'Temperature & Salinity data', 'namtsd' ) 
     139         slf_i(jp_tem) = sn_dmpt   ;   slf_i(jp_sal) = sn_dmps 
     140         CALL fld_fill( sf_tsddmp, slf_i, cn_dir, 'dta_tsd', 'Temperature & Salinity data', 'namtsd' ) 
    122141         ! 
    123142      ENDIF 
     
    128147 
    129148 
    130    SUBROUTINE dta_tsd( kt, ptsd ) 
     149   SUBROUTINE dta_tsd( kt, ptsd, ptsddmp ) 
    131150      !!---------------------------------------------------------------------- 
    132151      !!                   ***  ROUTINE dta_tsd  *** 
     
    145164      INTEGER                              , INTENT(in   ) ::   kt     ! ocean time-step 
    146165      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(  out) ::   ptsd   ! T & S data 
     166      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), OPTIONAL, INTENT(  out) ::   ptsddmp   ! T & S data 
    147167      ! 
    148168      INTEGER ::   ji, jj, jk, jl, jkk   ! dummy loop indicies 
     
    155175      ! 
    156176      CALL fld_read( kt, 1, sf_tsd )      !==   read T & S data at kt time step   ==! 
     177      IF ( PRESENT(ptsddmp) ) THEN 
     178         CALL fld_read( kt, 1, sf_tsddmp )      !==   read T & S data at kt time step   ==! 
     179         ptsddmp(:,:,:,jp_tem) = sf_tsddmp(jp_tem)%fnow(:,:,:)    ! NO mask 
     180         ptsddmp(:,:,:,jp_sal) = sf_tsddmp(jp_sal)%fnow(:,:,:)  
     181      END IF 
    157182      ! 
    158183      ! 
     
    304329         IF( sf_tsd(jp_sal)%ln_tint )   DEALLOCATE( sf_tsd(jp_sal)%fdta ) 
    305330                                        DEALLOCATE( sf_tsd              )     ! the structure itself 
     331         IF(lwp) WRITE(numout,*) 'dta_tsd: deallocte T & S arrays as they are only use to initialize the run' 
     332                                        DEALLOCATE( sf_tsddmp(jp_tem)%fnow )     ! T arrays in the structure 
     333         IF( sf_tsddmp(jp_tem)%ln_tint )   DEALLOCATE( sf_tsddmp(jp_tem)%fdta ) 
     334                                        DEALLOCATE( sf_tsddmp(jp_sal)%fnow )     ! S arrays in the structure 
     335         IF( sf_tsddmp(jp_sal)%ln_tint )   DEALLOCATE( sf_tsddmp(jp_sal)%fdta ) 
     336                                        DEALLOCATE( sf_tsddmp              )     ! the structure itself 
    306337      ENDIF 
    307338      ! 
Note: See TracChangeset for help on using the changeset viewer.