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 2587 for branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA – NEMO

Ignore:
Timestamp:
2011-02-15T12:58:59+01:00 (13 years ago)
Author:
vidard
Message:

refer to ticket #798

Location:
branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/traadv_cen2_tam.F90

    r1885 r2587  
    127127   PUBLIC   tra_adv_cen2_adj    ! routine called by traadv_tam.F90 
    128128   PUBLIC   tra_adv_cen2_adj_tst! routine called by tst.F90 
     129#if defined key_tst_tlm 
    129130   PUBLIC   tra_adv_cen2_tlm_tst! routine called by tamtst.F90 
     131#endif 
    130132 
    131133   REAL(wp), DIMENSION(jpi,jpj) ::  & 
     
    935937 
    936938   END SUBROUTINE tra_adv_cen2_adj_tst 
    937  
     939#if defined key_tst_tlm 
    938940SUBROUTINE tra_adv_cen2_tlm_tst( kumadt ) 
    939941      !!----------------------------------------------------------------------- 
     
    968970      USE tamtrj              ! writing out state trajectory 
    969971      USE par_tlm,    ONLY: & 
     972        & tlm_bch,          & 
    970973        & cur_loop,         & 
    971974        & h_ratio 
     
    10271030         & z3r 
    10281031      CHARACTER(LEN=14)   :: cl_name 
    1029       CHARACTER (LEN=128) :: file_out, file_wop 
     1032      CHARACTER (LEN=128) :: file_out, file_wop, file_xdx 
    10301033      CHARACTER (LEN=90)  :: FMT 
    10311034      REAL(KIND=wp), DIMENSION(100):: & 
     
    10841087      ! Output filename Xn=F(X0) 
    10851088      !-------------------------------------------------------------------- 
    1086       file_wop='trj_wop_tradv_cen2' 
    10871089      CALL tlm_namrd 
    10881090      gamma = h_ratio      
     1091      file_wop='trj_wop_tradv_cen2' 
     1092      file_xdx='trj_xdx_tradv_cen2'    
    10891093      !-------------------------------------------------------------------- 
    10901094      ! Initialize the tangent input with random noise: dx 
     
    11511155      ! Complete Init for Direct 
    11521156      !------------------------------------------------------------------- 
    1153       CALL istate_p   
     1157      IF ( tlm_bch /= 2 ) CALL istate_p   
    11541158 
    11551159      ! *** initialize the reference trajectory 
     
    11841188      !  Compute the direct model F(X0,t=n) = Xn 
    11851189      !-------------------------------------------------------------------- 
    1186       CALL tra_adv_cen2(nit000, un, vn, wn) 
    1187       IF ( cur_loop .EQ. 0) CALL trj_wri_spl(file_wop) 
     1190      IF ( tlm_bch /= 2 ) CALL tra_adv_cen2(nit000, un, vn, wn) 
     1191      IF ( tlm_bch == 0 ) CALL trj_wri_spl(file_wop) 
     1192      IF ( tlm_bch == 1 ) CALL trj_wri_spl(file_xdx) 
    11881193      !-------------------------------------------------------------------- 
    11891194      !  Compute the Tangent  
    11901195      !-------------------------------------------------------------------- 
    1191       IF ( cur_loop .NE. 0) THEN 
    1192          !-------------------------------------------------------------------- 
    1193          !  Storing data 
    1194          !--------------------------------------------------------------------     
    1195          zta_out  (:,:,:) = ta   (:,:,:) 
    1196          zsa_out  (:,:,:) = sa   (:,:,:)           
    1197  
     1196      IF ( tlm_bch == 2 ) THEN        
    11981197         !-------------------------------------------------------------------- 
    11991198         ! Initialize the tangent variables: dy^* = W dy   
     
    12141213         ! Compute the scalar product: ( L(t0,tn) gamma dx0 ) ) 
    12151214         !-------------------------------------------------------------------- 
    1216  
    12171215         zsp2_Ta    = DOT_PRODUCT( ta_tl, ta_tl  ) 
    12181216         zsp2_Sa    = DOT_PRODUCT( sa_tl, sa_tl  ) 
    12191217 
    12201218         zsp2      = zsp2_Ta + zsp2_Sa 
    1221    
    12221219         !-------------------------------------------------------------------- 
    12231220         !  Storing data 
    12241221         !-------------------------------------------------------------------- 
    12251222         CALL trj_rd_spl(file_wop)  
    1226  
    12271223         zta_wop  (:,:,:) = ta  (:,:,:) 
    12281224         zsa_wop  (:,:,:) = sa  (:,:,:) 
    1229  
     1225         CALL trj_rd_spl(file_xdx)  
     1226         zta_out  (:,:,:) = ta  (:,:,:) 
     1227         zsa_out  (:,:,:) = sa  (:,:,:) 
    12301228         !-------------------------------------------------------------------- 
    12311229         ! Compute the Linearization Error  
     
    13721370  END SUBROUTINE  tra_adv_cen2_tlm_tst 
    13731371#endif 
    1374  
     1372#endif 
    13751373   !!====================================================================== 
    13761374END MODULE traadv_cen2_tam 
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/traadv_eiv_tam.F90

    r1885 r2587  
    2323      & wp 
    2424   USE par_oce       , ONLY: & ! Ocean space and time domain variables 
    25       & jpi,                 & 
    26       & jpj,                 &  
    27       & jpk  
     25      & jpi, jpj, jpk  
     26   USE in_out_manager, ONLY: & ! I/O manager  
     27      & lwp, numout               
    2828 
    2929   IMPLICIT NONE 
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/traadv_tam.F90

    r1885 r2587  
    4343      & tra_adv_cen2_tan,     & 
    4444      & tra_adv_cen2_adj,     & 
    45       & tra_adv_cen2_adj_tst, & 
    46       & tra_adv_cen2_tlm_tst 
     45#if defined key_tst_tlm 
     46      & tra_adv_cen2_tlm_tst, & 
     47#endif 
     48      & tra_adv_cen2_adj_tst 
    4749   USE traadv_eiv_tam, ONLY: & ! advection trend - eddy induced velocity (tra_adv_eiv   routine) 
    4850      & tra_adv_eiv_tan,     & 
    4951      & tra_adv_eiv_adj 
    50 !   USE in_out_manager, ONLY : & ! I/O manager  
    51 !      & lwp,                  & 
    52 !      & numout,               & 
    53 !      & nit000 
    5452   USE in_out_manager  ! I/O manager 
    5553   USE prtctl          ! Print control 
     
    6260   PUBLIC   tra_adv_ctl_tam ! routine called by stepadj module 
    6361   PUBLIC   tra_adv_adj_tst ! routine called by tst module 
     62#if defined key_tst_tlm 
    6463   PUBLIC   tra_adv_tlm_tst ! routine called by tst module 
     64#endif 
    6565   !!* Namelist nam_traadv 
    6666   LOGICAL, PUBLIC ::   ln_traadv_cen2   = .TRUE.       ! 2nd order centered scheme flag 
     
    305305      ! 
    306306   END SUBROUTINE tra_adv_ctl_tam 
    307  
     307#if defined key_tst_tlm 
    308308SUBROUTINE tra_adv_tlm_tst( kumadt ) 
    309309      !!----------------------------------------------------------------------- 
     
    335335   END SUBROUTINE tra_adv_tlm_tst 
    336336#endif 
     337#endif 
    337338 
    338339 
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/traldf_lap_tam.F90

    r1885 r2587  
    106106   PUBLIC tra_ldf_lap_adj      ! routine called by tradldf_tam.F90 
    107107   PUBLIC tra_ldf_lap_adj_tst  ! routine called by tradldf_tam.F90 
     108#if defined key_tst_tlm 
    108109   PUBLIC tra_ldf_lap_tlm_tst   
     110#endif 
    109111 
    110112   !! * Substitutions 
     
    735737 
    736738   END SUBROUTINE tra_ldf_lap_adj_tst 
    737  
     739#if defined key_tst_tlm 
    738740   SUBROUTINE tra_ldf_lap_tlm_tst ( kumadt ) 
    739741      !!----------------------------------------------------------------------- 
     
    775777        & lk_c1d 
    776778      USE par_tlm,    ONLY: & 
     779        & tlm_bch,          & 
    777780        & cur_loop,         & 
    778781        & h_ratio 
    779782      USE istate_mod 
    780       USE wzvmod             !  vertical velocity 
     783      USE zpshde 
    781784      USE gridrandom, ONLY: & 
    782785        & grid_rd_sd 
     
    785788        & tb, sb, tn, sn, ta,  & 
    786789        & sa, gtu, gsu, gtv,   & 
    787         & gsv 
     790        & gsv, gru, grv, rhd 
    788791      USE traldf_lap          ! lateral mixing                   (tra_ldf routine) 
    789792      USE opatam_tst_ini, ONLY: & 
     
    877880         & z2r               ! 2D random field  
    878881      CHARACTER(LEN=14) ::   cl_name 
    879       CHARACTER (LEN=128) :: file_out_sc, file_wop, file_out 
     882      CHARACTER (LEN=128) :: file_out_sc, file_wop, file_out, file_xdx 
    880883      CHARACTER (LEN=90) :: & 
    881884         & FMT 
     
    972975      zgtv_wop(:,:)    = 0.0_wp 
    973976      zgsv_wop(:,:)    = 0.0_wp 
    974  
     977      IF ( tlm_bch == 2 ) THEN       
    975978      tb_tl(:,:,:) = 0.0_wp 
    976979      sb_tl(:,:,:) = 0.0_wp 
     
    981984      gtv_tl(:,:)  = 0.0_wp 
    982985      gsv_tl(:,:)  = 0.0_wp 
    983  
     986      ENDIF 
    984987      zsctb(:)     = 0.0_wp 
    985988      zscta(:)     = 0.0_wp 
     
    10021005      ! Output filename Xn=F(X0) 
    10031006      !-------------------------------------------------------------------- 
    1004       file_wop='trj_wop_tldf_lap' 
    10051007      CALL tlm_namrd 
    10061008      gamma = h_ratio 
     1009      file_wop='trj_wop_tldf_lap' 
     1010      file_xdx='trj_xdx_tldf_lap' 
    10071011      !-------------------------------------------------------------------- 
    10081012      ! Initialize the tangent input with random noise: dx 
     
    10691073      ! Complete Init for Direct 
    10701074      !------------------------------------------------------------------- 
    1071       CALL istate_p   
     1075      IF ( tlm_bch /= 2 )      CALL istate_p   
    10721076 
    10731077      ! *** initialize the reference trajectory 
     
    10761080      CALL  trj_rea( nit000, 1 ) 
    10771081 
     1082      ! Compute  gtu, gsu, gtv, gsv 
     1083      CALL zps_hde(nit000, tn, sn, rhd, gtu, gsu, gru, gtv, gsv, grv) 
     1084 
    10781085      IF (( cur_loop .NE. 0) .OR. ( gamma .NE. 0.0_wp) )THEN 
    10791086         ztb_tlin(:,:,:) = gamma * ztb_tlin(:,:,:) 
     
    11011108         gsv(:,:)       = gsv(:,:) + zgsv_tlin(:,:) 
    11021109      ENDIF  
    1103       IF( .NOT. lk_vvl ) CALL wzv(nit000) 
     1110 
    11041111      !-------------------------------------------------------------------- 
    11051112      !  Compute the direct model F(X0,t=n) = Xn 
    11061113      !-------------------------------------------------------------------- 
    1107       CALL tra_ldf_lap( nit000 ) 
    1108       IF ( cur_loop .EQ. 0) CALL trj_wri_spl(file_wop) 
    1109  
     1114      IF ( tlm_bch /= 2 )      CALL tra_ldf_lap( nit000 ) 
     1115      IF ( tlm_bch == 0 ) CALL trj_wri_spl(file_wop) 
     1116      IF ( tlm_bch == 1 ) CALL trj_wri_spl(file_xdx) 
    11101117      !-------------------------------------------------------------------- 
    11111118      !  Compute the Tangent  
    11121119      !-------------------------------------------------------------------- 
    1113       IF ( cur_loop .NE. 0) THEN 
    1114          !-------------------------------------------------------------------- 
    1115          !  Storing data 
    1116          !-------------------------------------------------------------------- 
    1117          ztb_out  (:,:,:) = tb   (:,:,:) 
    1118          zsb_out  (:,:,:) = sb   (:,:,:) 
    1119          zta_out  (:,:,:) = ta   (:,:,:) 
    1120          zsa_out  (:,:,:) = sa   (:,:,:) 
    1121          zgtu_out (:,:  ) = gtu  (:,:  )     
    1122          zgsu_out (:,:  ) = gsu  (:,:  ) 
    1123          zgtv_out (:,:  ) = gtv  (:,:  )     
    1124          zgsv_out (:,:  ) = gsv  (:,:  )       
    1125  
     1120      IF ( tlm_bch == 2 ) THEN     
    11261121         !-------------------------------------------------------------------- 
    11271122         ! Initialize the tangent variables: dy^* = W dy   
     
    11711166         zgtv_wop (:,:  ) = gtv (:,:  ) 
    11721167         zgsv_wop (:,:  ) = gsv (:,:  ) 
    1173  
     1168         CALL trj_rd_spl(file_xdx)  
     1169         ztb_out  (:,:,:) = tb  (:,:,:) 
     1170         zsb_out  (:,:,:) = sb  (:,:,:) 
     1171         zta_out  (:,:,:) = ta  (:,:,:) 
     1172         zsa_out  (:,:,:) = sa  (:,:,:) 
     1173         zgtu_out (:,:  ) = gtu (:,:  ) 
     1174         zgsu_out (:,:  ) = gsu (:,:  ) 
     1175         zgtv_out (:,:  ) = gtv (:,:  ) 
     1176         zgsv_out (:,:  ) = gsv (:,:  ) 
    11741177         !-------------------------------------------------------------------- 
    11751178         ! Compute the Linearization Error  
     
    16281631      CALL iom_close( inum ) 
    16291632   END SUBROUTINE asm_trj_wop_rd 
    1630  
     1633#endif 
    16311634#endif 
    16321635   !!============================================================================== 
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/traldf_tam.F90

    r1885 r2587  
    1111   !!          9.0  ! 08-06 (A. Vidard) Skeleton 
    1212   !!          9.0  ! 09-03 (F. Vigilant) adding tra_ldf_lap option 
     13   !!          9.0  ! 10-06 (P.A. Bouttier) adding tra_ldf_bilap option 
    1314   !!---------------------------------------------------------------------- 
    1415 
     
    2526      & tra_ldf_lap_tan,     & 
    2627      & tra_ldf_lap_adj,     & 
    27       & tra_ldf_lap_adj_tst, & 
    28       & tra_ldf_lap_tlm_tst 
     28#if defined key_tst_tlm 
     29      & tra_ldf_lap_tlm_tst, & 
     30#endif 
     31      & tra_ldf_lap_adj_tst 
     32   USE traldf_bilap_tam, ONLY: & !lateral mixing                (tra_ldf_bilap routine) 
     33      & tra_ldf_bilap_tan,   & 
     34      & tra_ldf_bilap_adj 
    2935   USE in_out_manager, ONLY: & ! I/O manager 
    3036      & ctl_stop, nit000, lwp, numout, nitend 
     
    5056   PUBLIC   tra_ldf_adj     ! called by step_tam.F90  
    5157   PUBLIC   tra_ldf_adj_tst ! called by tamtst.F90  
     58#if defined key_tst_tlm 
    5259   PUBLIC   tra_ldf_tlm_tst ! called by tamtst.F90  
     60#endif 
     61   PUBLIC   ldf_ctl_tam     ! called by trazdf_imp (init of l_traldf_rot) 
    5362 
    5463   INTEGER ::  nldf 
     
    7685      CASE ( 0 )   ;   CALL tra_ldf_lap_tan   ( kt )      ! iso-level laplacian 
    7786      CASE ( 1 )   ;   CALL tra_ldf_iso_tan   ( kt )      ! rotated laplacian (except dk[ dk[.] ] part) 
     87      CASE ( 2 )   ;   CALL tra_ldf_bilap_tan ( kt )      ! iso-level bilaplacian 
    7888      END SELECT 
    7989   END SUBROUTINE tra_ldf_tan 
     
    94104      CASE ( 0 )   ;   CALL tra_ldf_lap_adj   ( kt )      ! rotated laplacian (except dk[ dk[.] ] part) 
    95105      CASE ( 1 )   ;   CALL tra_ldf_iso_adj   ( kt )      ! rotated laplacian (except dk[ dk[.] ] part) 
     106      CASE ( 2 )   ;   CALL tra_ldf_bilap_adj ( kt )      ! iso-level bilaplacian 
    96107      END SELECT 
    97108      ! 
     
    206217 
    207218      IF( ln_traldf_bilap ) THEN      ! bilaplacian operator 
    208            CALL ctl_stop( '          You shouldn t have seen this error message, ln_trad_bilap option not impemented yet for tam' ) 
     219         IF ( ln_zco ) THEN                ! z-coordinate 
     220            IF ( ln_traldf_level )   nldf = 2      ! iso-level  (no rotation) 
     221            IF ( ln_traldf_hor   )   nldf = 2      ! horizontal (no rotation) 
     222            IF ( ln_traldf_iso   )   ierr = 2      ! isoneutral (   rotation) 
     223      ENDIF 
     224         IF ( ln_zps ) THEN             ! z-coordinate 
     225            IF ( ln_traldf_level )   ierr = 1      ! iso-level not allowed  
     226            IF ( ln_traldf_hor   )   nldf = 2      ! horizontal (no rotation) 
     227            IF ( ln_traldf_iso   )   ierr = 2      ! isoneutral (   rotation) 
     228         ENDIF 
    209229      ENDIF 
    210230 
    211231      IF( ierr == 1 )   CALL ctl_stop( ' iso-level in z-coordinate - partial step, not allowed' ) 
     232      IF( ierr == 2 )   CALL ctl_stop( ' isoneutral bilaplacian operator does not exist' ) 
    212233      IF( lk_traldf_eiv .AND. .NOT.ln_traldf_iso )   & 
    213234           CALL ctl_stop( '          eddy induced velocity on tracers',   & 
     
    227248   END SUBROUTINE ldf_ctl_tam 
    228249 
    229  
     250#if defined key_tst_tlm 
    230251   SUBROUTINE tra_ldf_tlm_tst( kumadt ) 
    231252      !!----------------------------------------------------------------------- 
     
    266287   !!====================================================================== 
    267288#endif 
     289#endif 
    268290END MODULE traldf_tam 
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/tranxt_tam.F90

    r1885 r2587  
    229229      ! 
    230230   END SUBROUTINE tra_nxt_tan 
    231  
    232231   SUBROUTINE tra_nxt_adj( kt ) 
    233232      !!---------------------------------------------------------------------- 
     
    476475      ! Reset the tangent and adjoint variables 
    477476      !-------------------------------------------------------------------- 
    478       zsa_tlin(:,:,:) = 0.0_wp  
    479       zta_tlin(:,:,:) = 0.0_wp  
    480       zsb_tlin(:,:,:) = 0.0_wp  
    481       ztb_tlin(:,:,:) = 0.0_wp  
    482       zsn_tlin(:,:,:) = 0.0_wp  
    483       ztn_tlin(:,:,:) = 0.0_wp  
    484       zsa_adin(:,:,:) = 0.0_wp  
    485       zta_adin(:,:,:) = 0.0_wp  
    486       zsb_adin(:,:,:) = 0.0_wp  
    487       ztb_adin(:,:,:) = 0.0_wp  
    488       zsn_adin(:,:,:) = 0.0_wp  
    489       ztn_adin(:,:,:) = 0.0_wp  
    490477      sb_tl(:,:,:) = 0.0_wp 
    491478      tb_tl(:,:,:) = 0.0_wp 
     
    500487      sn_ad(:,:,:) = 0.0_wp 
    501488      tn_ad(:,:,:) = 0.0_wp 
     489      zsb_tlin(:,:,:) = 0.0_wp 
     490      ztb_tlin(:,:,:) = 0.0_wp 
     491      zsa_tlin(:,:,:) = 0.0_wp 
     492      zta_tlin(:,:,:) = 0.0_wp 
     493      zsn_tlin(:,:,:) = 0.0_wp 
     494      ztn_tlin(:,:,:) = 0.0_wp 
    502495 
    503496      DO jj = 1, jpj 
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/traqsr_tam.F90

    r1947 r2587  
    277277                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    278278                     ! qsr trend 
    279                      qsr_ad(ji,jj) = qsr_ad(ji,jj) + ta_ad(ji,jj,jk) * zc0   & 
    280                                    &   * ( gdsr(jk)*tmask(ji,jj,jk) - gdsr(jk+1)*tmask(ji,jj,jk+1) ) 
     279                     qsr_ad(ji,jj) = qsr_ad(ji,jj) + ta_ad(ji,jj,jk) * zc0 * ( gdsr(jk)*tmask(ji,jj,jk) - gdsr(jk+1)*tmask(ji,jj,jk+1) ) 
    281280                  END DO 
    282281               END DO 
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/trasbc_tam.F90

    r1885 r2587  
    9696   PUBLIC   tra_sbc_adj     ! routine called by step_tam.F90 
    9797   PUBLIC   tra_sbc_adj_tst ! routine called by tst.F90 
     98#if defined key_tst_tlm 
    9899   PUBLIC   tra_sbc_tlm_tst ! routine calle  by tamtst.F90 
     100#endif 
    99101 
    100102   !! * Substitutions 
     
    579581   END SUBROUTINE tra_sbc_adj_tst 
    580582 
    581  
     583#if defined key_tst_tlm 
    582584   SUBROUTINE tra_sbc_tlm_tst ( kumadt )  
    583585      !!----------------------------------------------------------------------- 
     
    612614      USE tamtrj              ! writing out state trajectory 
    613615      USE par_tlm,    ONLY: & 
     616        & tlm_bch,          & 
    614617        & cur_loop,         & 
    615618        & h_ratio 
     
    676679         & zgsp7  
    677680      CHARACTER (LEN=14)  :: cl_name 
    678       CHARACTER (LEN=128) :: file_out, file_wop 
     681      CHARACTER (LEN=128) :: file_out, file_wop, file_xdx 
    679682      CHARACTER (LEN=90)  ::  FMT 
    680683      REAL(KIND=wp), DIMENSION(100):: & 
     
    731734      ! Output filename Xn=F(X0) 
    732735      !-------------------------------------------------------------------- 
    733       file_wop='trj_wop_trasbc' 
    734736      CALL tlm_namrd 
    735737      gamma = h_ratio 
     738      file_wop='trj_wop_trasbc' 
     739      file_xdx='trj_xdx_trasbc' 
    736740      !-------------------------------------------------------------------- 
    737741      ! Initialize the tangent input with random noise: dx 
     
    778782      ! Complete Init for Direct 
    779783      !------------------------------------------------------------------- 
    780       CALL istate_p   
     784      IF ( tlm_bch /= 2 )      CALL istate_p   
    781785 
    782786      ! *** initialize the reference trajectory 
     
    804808      !  Compute the direct model F(X0,t=n) = Xn 
    805809      !-------------------------------------------------------------------- 
    806       CALL tra_sbc(nit000) 
    807  
    808       IF ( cur_loop .EQ. 0) CALL trj_wri_spl(file_wop) 
    809  
     810      IF ( tlm_bch /= 2 ) CALL tra_sbc(nit000) 
     811      IF ( tlm_bch == 0 ) CALL trj_wri_spl(file_wop) 
     812      IF ( tlm_bch == 1 ) CALL trj_wri_spl(file_xdx) 
    810813      !-------------------------------------------------------------------- 
    811814      !  Compute the Tangent  
    812815      !-------------------------------------------------------------------- 
    813       IF ( cur_loop .NE. 0) THEN 
    814          !-------------------------------------------------------------------- 
    815          !  Storing data 
    816          !--------------------------------------------------------------------   
    817          zta_out  (:,:,:) = ta   (:,:,:) 
    818          zsa_out  (:,:,:) = sa   (:,:,:)           
    819  
     816      IF ( tlm_bch == 2 ) THEN          
    820817         !-------------------------------------------------------------------- 
    821818         ! Initialize the tangent variables: dy^* = W dy   
     
    836833         ! Compute the scalar product: ( L(t0,tn) gamma dx0 ) ) 
    837834         !-------------------------------------------------------------------- 
    838  
    839835         zsp2_1    = DOT_PRODUCT( ta_tl, ta_tl  ) 
    840836         zsp2_2    = DOT_PRODUCT( sa_tl, sa_tl  ) 
     
    847843         zta_wop  (:,:,:) = ta  (:,:,:) 
    848844         zsa_wop  (:,:,:) = sa  (:,:,:) 
     845         CALL trj_rd_spl(file_xdx)  
     846         zta_out  (:,:,:) = ta  (:,:,:) 
     847         zsa_out  (:,:,:) = sa  (:,:,:) 
    849848         !-------------------------------------------------------------------- 
    850849         ! Compute the Linearization Error  
     
    981980!!====================================================================== 
    982981#endif 
     982#endif 
    983983END MODULE trasbc_tam 
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/trazdf_imp_tam.F90

    r1885 r2587  
    7474      & ahtw,                & 
    7575      & aht0 
     76#if defined key_ldfslp 
    7677   USE ldfslp        , ONLY: & ! lateral physics: slope of diffusion 
    7778      & wslpi,               & !: i_slope at W-points 
    7879      & wslpj                  !: j-slope at W-points 
     80#endif  
    7981#if defined key_zdfddm 
    8082   USE zdfddm        , ONLY: & 
    8183      & avs 
    8284#endif  
     85   USE traldf_tam 
    8386   USE in_out_manager, ONLY: & ! I/O manager  
    8487      & lwp,          & 
     
    106109   PUBLIC tra_zdf_imp_adj       !  routine called by tra_zdf_adj.F90 
    107110   PUBLIC tra_zdf_imp_adj_tst   !  routine called by tst.F90 
     111#if defined key_tst_tlm 
    108112   PUBLIC tra_zdf_imp_tlm_tst   !  routine called by tamtst.F90  
     113#endif 
    109114 
    110115   !! * Substitutions 
     
    483488      !!--------------------------------------------------------------------- 
    484489 
    485       IF( kt == nit000 ) THEN 
     490      IF( kt == nitend ) THEN 
    486491         IF(lwp)WRITE(numout,*) 
    487492         IF(lwp)WRITE(numout,*) 'tra_zdf_imp_adj : implicit vertical mixing' 
    488493         IF(lwp)WRITE(numout,*) '~~~~~~~~~~~~~~~ ' 
     494         CALL ldf_ctl_tam  ! init of l_traldf_rot 
    489495         zavi = 0._wp      ! avoid warning at compilation phase when lk_ldfslp=F 
    490496      ENDIF 
     
    985991 
    986992   END SUBROUTINE tra_zdf_imp_adj_tst 
    987  
     993#if defined key_tst_tlm 
    988994   SUBROUTINE tra_zdf_imp_tlm_tst( kumadt ) 
    989995      !!----------------------------------------------------------------------- 
     
    10191025      USE tamtrj              ! writing out state trajectory 
    10201026      USE par_tlm,    ONLY: & 
     1027        & tlm_bch,          & 
    10211028        & cur_loop,         & 
    10221029        & h_ratio 
     
    10771084      CHARACTER(LEN=14) ::& 
    10781085         & cl_name 
    1079       CHARACTER (LEN=128) :: file_out, file_wop 
     1086      CHARACTER (LEN=128) :: file_out, file_wop, file_xdx 
    10801087      CHARACTER (LEN=90) :: & 
    10811088         & FMT 
     
    11261133      ! Output filename Xn=F(X0) 
    11271134      !-------------------------------------------------------------------- 
    1128       file_wop='trj_wop_trazdf_imp' 
    11291135      CALL tlm_namrd 
    11301136      gamma = h_ratio 
     1137      file_wop='trj_wop_trazdf_imp' 
     1138      file_xdx='trj_xdx_trazdf_imp' 
    11311139      !-------------------------------------------------------------------- 
    11321140      ! Initialize the tangent input with random noise: dx 
     
    11691177      ! Complete Init for Direct 
    11701178      !------------------------------------------------------------------- 
    1171       CALL istate_p   
     1179      IF ( tlm_bch /= 2 )      CALL istate_p   
    11721180 
    11731181      ! *** initialize the reference trajectory 
     
    11921200      !  Compute the direct model F(X0,t=n) = Xn 
    11931201      !-------------------------------------------------------------------- 
    1194       CALL tra_zdf_imp(nit000, rdttra) 
    1195  
    1196       IF ( cur_loop .EQ. 0) CALL trj_wri_spl(file_wop) 
    1197  
     1202      IF ( tlm_bch /= 2 )  CALL tra_zdf_imp(nit000, rdttra) 
     1203      IF ( tlm_bch == 0 )  CALL trj_wri_spl(file_wop) 
     1204      IF ( tlm_bch == 1 )  CALL trj_wri_spl(file_xdx) 
    11981205      !-------------------------------------------------------------------- 
    11991206      !  Compute the Tangent  
    12001207      !-------------------------------------------------------------------- 
    1201       IF ( cur_loop .NE. 0) THEN 
    1202          !-------------------------------------------------------------------- 
    1203          !  Storing data 
    1204          !--------------------------------------------------------------------   
    1205          zta_out  (:,:,:) = ta   (:,:,:) 
    1206          zsa_out  (:,:,:) = sa   (:,:,:) 
     1208      IF ( tlm_bch == 2 ) THEN 
    12071209         !-------------------------------------------------------------------- 
    12081210         ! Initialize the tangent variables: dy^* = W dy   
     
    12351237         zta_wop  (:,:,:) = ta  (:,:,:) 
    12361238         zsa_wop  (:,:,:) = sa  (:,:,:) 
    1237  
     1239         CALL trj_rd_spl(file_xdx)  
     1240         zta_out  (:,:,:) = ta  (:,:,:) 
     1241         zsa_out  (:,:,:) = sa  (:,:,:) 
    12381242         !-------------------------------------------------------------------- 
    12391243         ! Compute the Linearization Error  
     
    13781382   END SUBROUTINE tra_zdf_imp_tlm_tst 
    13791383#endif 
     1384#endif 
    13801385END MODULE trazdf_imp_tam 
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/trazdf_tam.F90

    r1885 r2587  
    4646      & tra_zdf_imp_tan,     & 
    4747      & tra_zdf_imp_adj,     & 
    48       & tra_zdf_imp_adj_tst, & 
    49       & tra_zdf_imp_tlm_tst 
     48#if defined key_tst_tlm 
     49      & tra_zdf_imp_tlm_tst, & 
     50#endif 
     51      & tra_zdf_imp_adj_tst 
    5052   USE in_out_manager, ONLY: & ! I/O manager  
    5153      & lwp,                 & 
     
    6365      & tra_zdf_tan, & 
    6466      & tra_zdf_adj         ! routines called by step_tam.F90 
    65    PUBLIC  & 
    66       & tra_zdf_adj_tst, &  ! routine called by tst.F90 
    67       & tra_zdf_tlm_tst     ! routine called by tst.F90  
     67   PUBLIC  tra_zdf_adj_tst  ! routine called by tst.F90 
     68#if defined key_tst_tlm 
     69   PUBLIC  tra_zdf_tlm_tst     ! routine called by tst.F90  
     70#endif 
    6871   INTEGER ::   nzdf = 0               ! type vertical diffusion algorithm used 
    6972      !                                ! defined from ln_zdf...  namlist logicals) 
     
    247250 
    248251   END SUBROUTINE zdf_ctl_tam 
    249  
     252#if defined key_tst_tlm 
    250253   SUBROUTINE tra_zdf_tlm_tst( kumadt ) 
    251254      !!----------------------------------------------------------------------- 
     
    282285   END SUBROUTINE tra_zdf_tlm_tst 
    283286#endif 
     287#endif 
    284288END MODULE trazdf_tam 
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/TRA/zpshde_tam.F90

    r1885 r2587  
    7878   PUBLIC zps_hde_adj      ! routine called by step_tam.F90 
    7979   PUBLIC zps_hde_adj_tst  ! routine called by tst.F90 
     80#if defined key_tst_tlm 
    8081   PUBLIC  zps_hde_tlm_tst ! routine called by tamtst.F90 
     82#endif 
    8183 
    8284   !! * module variables 
     
    946948       
    947949   END SUBROUTINE zps_hde_adj_tst 
    948  
     950#if defined key_tst_tlm 
    949951   SUBROUTINE zps_hde_tlm_tst( kumadt ) 
    950952      !!----------------------------------------------------------------------- 
     
    984986      USE tamtrj              ! writing out state trajectory 
    985987      USE par_tlm,    ONLY: & 
     988        & tlm_bch,          & 
    986989        & cur_loop,         & 
    987990        & h_ratio 
     
    10491052         & zgsp7 
    10501053      CHARACTER(LEN=14)   :: cl_name 
    1051       CHARACTER (LEN=128) :: file_out, file_wop 
     1054      CHARACTER (LEN=128) :: file_out, file_wop, file_xdx 
    10521055      CHARACTER (LEN=90)  ::  FMT 
    10531056      REAL(KIND=wp), DIMENSION(100):: & 
     
    11041107      zgru_out(:,:)   = 0.0_wp     
    11051108      zgrv_out(:,:)   = 0.0_wp 
     1109      IF ( tlm_bch == 2 ) THEN 
    11061110      gtu_tl(:,:)     = 0.0_wp 
    11071111      gtv_tl(:,:)     = 0.0_wp     
     
    11101114      gru_tl(:,:)     = 0.0_wp     
    11111115      grv_tl(:,:)     = 0.0_wp  
    1112  
     1116      ENDIF 
    11131117      zscgtu(:)         = 0.0_wp 
    11141118      zscgtv(:)         = 0.0_wp 
     
    11321136      ! Output filename Xn=F(X0) 
    11331137      !-------------------------------------------------------------------- 
    1134       file_wop='trj_wop_zps' 
    11351138      CALL tlm_namrd 
    11361139      gamma = h_ratio 
     1140      file_wop='trj_wop_zps' 
     1141      file_xdx='trj_xdx_zps' 
    11371142      !-------------------------------------------------------------------- 
    11381143      ! Initialize the tangent input with random noise: dx 
     
    11671172      ! Complete Init for Direct 
    11681173      !------------------------------------------------------------------- 
    1169       CALL istate_p   
    1170  
     1174      IF ( tlm_bch /= 2 )  CALL istate_p   
    11711175      ! *** initialize the reference trajectory 
    11721176      ! ------------ 
     
    11871191      !  Compute the direct model F(X0,t=n) = Xn 
    11881192      !-------------------------------------------------------------------- 
    1189       CALL zps_hde(nit000, tn, sn, rhd, gtu, gsu, gru, gtv, gsv, grv) 
    1190  
    1191       IF ( cur_loop .EQ. 0) CALL trj_wri_spl(file_wop) 
    1192  
     1193      IF ( tlm_bch /= 2 ) CALL zps_hde(nit000, tn, sn, rhd, gtu, gsu, gru, gtv, gsv, grv) 
     1194      IF ( tlm_bch == 0 ) CALL trj_wri_spl(file_wop) 
     1195      IF ( tlm_bch == 1 ) CALL trj_wri_spl(file_xdx) 
    11931196      !-------------------------------------------------------------------- 
    11941197      !  Compute the Tangent  
    11951198      !-------------------------------------------------------------------- 
    1196       IF ( cur_loop .NE. 0) THEN 
    1197          !-------------------------------------------------------------------- 
    1198          !  Storing data 
    1199          !--------------------------------------------------------------------   
    1200          zgtu_out  (:,:) = gtu   (:,:) 
    1201          zgtv_out  (:,:) = gtv   (:,:)   
    1202          zgsu_out  (:,:) = gsu   (:,:) 
    1203          zgsv_out  (:,:) = gsv   (:,:)  
    1204          zgru_out  (:,:) = gru   (:,:) 
    1205          zgrv_out  (:,:) = grv   (:,:)          
    1206  
     1199      IF ( tlm_bch == 2 ) THEN 
    12071200         !-------------------------------------------------------------------- 
    12081201         ! Initialize the tangent variables: 
     
    12411234         zgru_wop  (:,:) = gru  (:,:) 
    12421235         zgrv_wop  (:,:) = grv  (:,:) 
     1236         CALL trj_rd_spl(file_xdx)  
     1237         zgtu_out  (:,:) = gtu  (:,:) 
     1238         zgtv_out  (:,:) = gtv  (:,:) 
     1239         zgsu_out  (:,:) = gsu  (:,:) 
     1240         zgsv_out  (:,:) = gsv  (:,:) 
     1241         zgru_out  (:,:) = gru  (:,:) 
     1242         zgrv_out  (:,:) = grv  (:,:) 
    12431243         !-------------------------------------------------------------------- 
    12441244         ! Compute the Linearization Error  
     
    14711471   !!====================================================================== 
    14721472#endif 
     1473#endif 
    14731474END MODULE zpshde_tam 
Note: See TracChangeset for help on using the changeset viewer.