Changeset 8191


Ignore:
Timestamp:
2017-06-19T18:16:30+02:00 (3 years ago)
Author:
andmirek
Message:

merge with XIOS restart read branch

Location:
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/domain_def.xml

    r6499 r8191  
    191191   </domain>   
    192192 
     193     <domain_group id="grid_N"> 
     194      <domain id="grid_N" long_name="grid nomask"/> 
     195     </domain_group> 
    193196 
    194197   </domain_definition>     
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/iodef.xml

    r6487 r8191  
    7979  </context> 
    8080   
     81  <context id="nemo_rst" > 
     82 
     83   <domain_definition src="./domain_def.xml"/> 
     84 
     85   <grid_definition> 
     86     <grid id="grid_T_2D" > 
     87       <domain id="grid_T" /> 
     88     </grid> 
     89     <grid id="grid_T_3D" > 
     90       <domain id="grid_T" /> 
     91       <axis id="deptht" /> 
     92     </grid> 
     93     <grid id="grid_U_2D" > 
     94       <domain id="grid_U" /> 
     95     </grid> 
     96     <grid id="grid_U_3D" > 
     97       <domain id="grid_U" /> 
     98       <axis id="depthu" /> 
     99     </grid> 
     100     <grid id="grid_V_2D" > 
     101       <domain id="grid_V" /> 
     102     </grid> 
     103     <grid id="grid_V_3D" > 
     104       <domain id="grid_V" /> 
     105       <axis id="depthv" /> 
     106     </grid> 
     107     <grid id="grid_W_2D" > 
     108       <domain id="grid_W" /> 
     109     </grid> 
     110     <grid id="grid_W_3D" > 
     111       <domain id="grid_W" /> 
     112       <axis id="depthw" /> 
     113     </grid> 
     114     <grid id="scalarpoint" /> 
     115 
     116     <grid id="Vgrid"> 
     117       <domain domain_ref="ptr" /> 
     118       <axis axis_ref="deptht" /> 
     119     </grid> 
     120 
     121     <grid id="grid_N" > 
     122       <domain domain_ref="grid_N" /> 
     123     </grid> 
     124     <grid id="grid_N_3D" > 
     125       <domain domain_ref="grid_N" /> 
     126       <axis axis_ref="deptht" /> 
     127     </grid> 
     128 
     129    </grid_definition> 
     130 
     131  </context> 
    81132 
    82133  <context id="xios"> 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/CONFIG/SHARED/namelist_ref

    r7540 r8191  
    5050   ln_clobber  = .false.   !  clobber (overwrite) an existing file 
    5151   nn_chunksz  =       0   !  chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) 
     52   ln_xios_read = .FALSE.  !  use XIOS to read restart file (only for a single file restart) 
    5253/ 
    5354! 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90

    r7747 r8191  
    343343            ENDIF 
    344344         ENDIF 
     345<<<<<<< .working 
    345346 
    346347         IF( iom_use("sopht_vt") .OR. iom_use("sopst_vs") ) THEN    
     
    433434         ENDIF 
    434435#endif 
     436======= 
     437 
     438         IF( iom_use("sopht_vt") .OR. iom_use("sopst_vs") ) THEN    
     439            z2d(1,:) = htr_vt(:,1) * rc_pwatt        !  (conversion in PW)  
     440            DO ji = 1, jpi 
     441               z2d(ji,:) = z2d(1,:) 
     442            ENDDO 
     443            cl1 = 'sopht_vt' 
     444            CALL iom_put( TRIM(cl1), z2d ) 
     445            z2d(1,:) = str_vs(:,1) * rc_ggram        !  (conversion in Gg) 
     446            DO ji = 1, jpi 
     447               z2d(ji,:) = z2d(1,:) 
     448            ENDDO 
     449            cl1 = 'sopst_vs' 
     450            CALL iom_put( TRIM(cl1), z2d ) 
     451            IF( ln_subbas ) THEN 
     452              DO jn=2,nptr 
     453               z2d(1,:) = htr_vt(:,jn) * rc_pwatt        !  (conversion in PW) 
     454               DO ji = 1, jpi 
     455                 z2d(ji,:) = z2d(1,:) 
     456               ENDDO 
     457               cl1 = TRIM('sopht_vt_'//clsubb(jn))                  
     458               CALL iom_put( cl1, z2d ) 
     459               z2d(1,:) = str_vs(:,jn) * rc_ggram        ! (conversion in Gg) 
     460               DO ji = 1, jpi 
     461                  z2d(ji,:) = z2d(1,:) 
     462               ENDDO 
     463               cl1 = TRIM('sopst_vs_'//clsubb(jn))                  
     464               CALL iom_put( cl1, z2d )               
     465              ENDDO 
     466            ENDIF 
     467         ENDIF 
     468 
     469#ifdef key_diaeiv 
     470         IF(lk_traldf_eiv) THEN 
     471            IF( iom_use("sophteiv") .OR. iom_use("sopsteiv") ) THEN  
     472               z2d(1,:) = htr_eiv(:,1) * rc_pwatt        !  (conversion in PW)  
     473               DO ji = 1, jpi 
     474                  z2d(ji,:) = z2d(1,:) 
     475               ENDDO 
     476               cl1 = 'sophteiv' 
     477               CALL iom_put( TRIM(cl1), z2d ) 
     478               z2d(1,:) = str_eiv(:,1) * rc_ggram        !  (conversion in Gg) 
     479               DO ji = 1, jpi 
     480                  z2d(ji,:) = z2d(1,:) 
     481               ENDDO 
     482               cl1 = 'sopsteiv' 
     483               CALL iom_put( TRIM(cl1), z2d ) 
     484               IF( ln_subbas ) THEN 
     485                  DO jn=2,nptr 
     486                     z2d(1,:) = htr_eiv(:,jn) * rc_pwatt        !  (conversion in PW) 
     487                     DO ji = 1, jpi 
     488                        z2d(ji,:) = z2d(1,:) 
     489                     ENDDO 
     490                     cl1 = TRIM('sophteiv_'//clsubb(jn))                  
     491                     CALL iom_put( cl1, z2d ) 
     492                     z2d(1,:) = str_eiv(:,jn) * rc_ggram        ! (conversion in Gg) 
     493                     DO ji = 1, jpi 
     494                        z2d(ji,:) = z2d(1,:) 
     495                     ENDDO 
     496                     cl1 = TRIM('sopsteiv_'//clsubb(jn))  
     497                     CALL iom_put( cl1, z2d )               
     498                  ENDDO 
     499               ENDIF 
     500            ENDIF 
     501         ENDIF 
     502#endif 
     503>>>>>>> .merge-right.r7923 
    435504         ! 
    436505      ENDIF 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r7651 r8191  
    157157      IF( iom_use("e3tdef") )   & 
    158158         CALL iom_put( "e3tdef"  , ( ( fse3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 
     159<<<<<<< .working 
    159160      CALL iom_put("tpt_dep", fsdept_n(:,:,:) ) 
    160161      CALL iom_put("wpt_dep", fsdepw_n(:,:,:) ) 
     162======= 
     163      CALL iom_put("tpt_dep", fsdept_n(:,:,:) ) 
     164>>>>>>> .merge-right.r7923 
    161165 
    162166 
     
    250254      CALL iom_put( "avt" , avt                        )    ! T vert. eddy diff. coef. 
    251255      CALL iom_put( "avm" , avmu                       )    ! T vert. eddy visc. coef. 
     256#if defined key_zdftke   ||   defined key_esopa 
    252257      IF( lk_zdftke ) THEN    
    253258         CALL iom_put( "tke"      , en                               )    ! TKE budget: Turbulent Kinetic Energy    
    254259         CALL iom_put( "tke_niw"  , e_niw                            )    ! TKE budget: Near-inertial waves    
    255260      ENDIF  
     261#endif 
    256262      CALL iom_put( "avs" , fsavs(:,:,:)               )    ! S vert. eddy diff. coef. (useful only with key_zdfddm) 
    257263                                                            ! Log of eddy diff coef 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90

    r6487 r8191  
    330330               CALL iom_get( numror, 'ndastp', zndastp ) 
    331331               ndastp = NINT( zndastp ) 
    332                CALL iom_get( numror, 'adatrj', adatrj  ) 
     332               CALL iom_get( numror, 'adatrj', adatrj, lrxios = lxios_read ) 
    333333            ELSE 
    334334               ! parameters correspondting to nit000 - 1 (as we start the step loop with a call to day) 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r6491 r8191  
    138138         &             nn_no   , cn_exp    , cn_ocerst_in, cn_ocerst_out, ln_rstart , ln_rstdate, nn_rstctl,   & 
    139139         &             nn_it000, nn_itend  , nn_date0    , nn_leapy     , nn_istate , nn_stock ,   & 
    140          &             nn_write, ln_dimgnnn, ln_mskland  , ln_cfmeta    , ln_clobber, nn_chunksz, nn_euler 
     140         &             nn_write, ln_dimgnnn, ln_mskland  , ln_cfmeta    , ln_clobber, nn_chunksz, nn_euler, & 
     141         &             ln_xios_read 
    141142      NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin,   & 
    142143         &             nn_acc   , rn_atfp     , rn_rdt      , rn_rdtmin ,                  & 
     
    152153      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    153154      !!---------------------------------------------------------------------- 
    154  
     155      ln_xios_read = .false.            ! set in case ln_xios_read is not in namelist 
    155156      REWIND( numnam_ref )              ! Namelist namrun in reference namelist : Parameters of the run 
    156157      READ  ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) 
     
    193194         WRITE(numout,*) '      overwrite an existing file      ln_clobber = ', ln_clobber 
    194195         WRITE(numout,*) '      NetCDF chunksize (bytes)        nn_chunksz = ', nn_chunksz 
     196         WRITE(numout,*) '      READ restart for a single file using XIOS ln_xios_read =', ln_xios_read 
    195197      ENDIF 
    196198 
     
    207209      nwrite = nn_write 
    208210      neuler = nn_euler 
     211      lxios_read = ln_xios_read 
    209212      IF ( neuler == 1 .AND. .NOT. ln_rstart ) THEN 
    210213         WRITE(ctmp1,*) 'ln_rstart =.FALSE., nn_euler is forced to 0 ' 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90

    r6491 r8191  
    4949   LOGICAL       ::   ln_clobber       !: clobber (overwrite) an existing file 
    5050   INTEGER       ::   nn_chunksz       !: chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) 
     51   LOGICAL       ::   ln_xios_read     !: use xios to read single file restart 
    5152#if defined key_netcdf4 
    5253   !!---------------------------------------------------------------------- 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r7750 r8191  
    4141   USE dianam          ! build name of file 
    4242   USE xios 
     43   USE iom_def, ONLY : max_rst_fields, rst_fields 
    4344# endif 
    4445   USE ioipsl, ONLY :  ju2ymds    ! for calendar 
    4546   USE crs             ! Grid coarsening 
     47   USE lib_fortran  
    4648 
    4749   IMPLICIT NONE 
     
    6264   PRIVATE iom_set_domain_attr, iom_set_axis_attr, iom_set_field_attr, iom_set_file_attr, iom_get_file_attr, iom_set_grid_attr 
    6365   PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_update_file_name, iom_sdate 
     66   PRIVATE set_rst_vars, set_rstr_active 
    6467# endif 
    6568 
     
    136139          &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
    137140      END SELECT 
     141 
    138142#endif 
    139143      ! horizontal grid definition 
     
    142146 
    143147      IF( TRIM(cdname) == TRIM(cxios_context) ) THEN   
    144          CALL set_grid( "T", glamt, gphit )  
    145          CALL set_grid( "U", glamu, gphiu ) 
    146          CALL set_grid( "V", glamv, gphiv ) 
    147          CALL set_grid( "W", glamt, gphit ) 
     148         CALL set_grid( "T", glamt, gphit, ln_mskland )  
     149         CALL set_grid( "U", glamu, gphiu, ln_mskland ) 
     150         CALL set_grid( "V", glamv, gphiv, ln_mskland ) 
     151         CALL set_grid( "W", glamt, gphit, ln_mskland ) 
    148152         CALL set_grid_znl( gphit ) 
     153         CALL set_grid("N",glamt, gphit, .FALSE.)        ! not masked values 
    149154         ! 
    150          IF( ln_cfmeta ) THEN   ! Add additional grid metadata 
     155         IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(rxios_context)) THEN   ! Add additional grid metadata 
    151156            CALL iom_set_domain_attr("grid_T", area = e12t(nldi:nlei, nldj:nlej)) 
    152157            CALL iom_set_domain_attr("grid_U", area = e12u(nldi:nlei, nldj:nlej)) 
     
    163168         CALL dom_grid_crs   ! Save the parent grid information  & Switch to coarse grid domain 
    164169         ! 
    165          CALL set_grid( "T", glamt_crs, gphit_crs )  
    166          CALL set_grid( "U", glamu_crs, gphiu_crs )  
    167          CALL set_grid( "V", glamv_crs, gphiv_crs )  
    168          CALL set_grid( "W", glamt_crs, gphit_crs )  
     170         CALL set_grid( "T", glamt_crs, gphit_crs, ln_mskland )  
     171         CALL set_grid( "U", glamu_crs, gphiu_crs, ln_mskland )  
     172         CALL set_grid( "V", glamv_crs, gphiv_crs, ln_mskland )  
     173         CALL set_grid( "W", glamt_crs, gphit_crs, ln_mskland )  
    169174         CALL set_grid_znl( gphit_crs ) 
    170175          ! 
    171176         CALL dom_grid_glo   ! Return to parent grid domain 
    172177         ! 
    173          IF( ln_cfmeta ) THEN   ! Add additional grid metadata 
     178         IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(rxios_context)) THEN   ! Add additional grid metadata 
    174179            CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 
    175180            CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) 
     
    227232       
    228233      ! automatic definitions of some of the xml attributs 
    229       CALL set_xmlatt 
     234      IF( TRIM(cdname) == TRIM(rxios_context)) THEN 
     235!set names of the fields in restart file IF using XIOS to read/write data 
     236       CALL set_rst_vars() 
     237!set which fields are to be read from restart file 
     238       CALL set_rstr_active() 
     239      ELSE 
     240       CALL set_xmlatt 
     241      ENDIF 
    230242 
    231243      CALL set_1point 
     
    244256   END SUBROUTINE iom_init 
    245257 
     258    
     259   SUBROUTINE set_rst_vars() 
     260!set names for variables in restart file 
     261 
     262        rst_fields(:)%vname="NO_NAME";         rst_fields(:)%grid="NO_GRID" 
     263 
     264        rst_fields(1)%vname="rdt";             rst_fields(1)% grid="grid_scalar" 
     265        rst_fields(2)%vname="rdttra1";         rst_fields(2)% grid="grid_scalar"       
     266        rst_fields(3)%vname="un";              rst_fields(3)% grid="grid_N_3D" 
     267        rst_fields(4)%vname="ub";              rst_fields(4)% grid="grid_N_3D" 
     268        rst_fields(5)%vname="vn";              rst_fields(5)% grid="grid_N_3D" 
     269        rst_fields(6)%vname="vb";              rst_fields(6)% grid="grid_N_3D"   
     270        rst_fields(7)%vname="tn";              rst_fields(7)% grid="grid_N_3D" 
     271        rst_fields(8)%vname="tb";              rst_fields(8)% grid="grid_N_3D" 
     272        rst_fields(9)%vname="sn";              rst_fields(9)% grid="grid_N_3D" 
     273        rst_fields(10)%vname="sb";             rst_fields(10)%grid="grid_N_3D" 
     274        rst_fields(11)%vname="sshn";           rst_fields(11)%grid="grid_N" 
     275        rst_fields(12)%vname="sshb";           rst_fields(12)%grid="grid_N" 
     276        rst_fields(13)%vname="hdivn";          rst_fields(13)%grid="grid_N_3D" 
     277        rst_fields(14)%vname="hdivb";          rst_fields(14)%grid="grid_N_3D" 
     278        rst_fields(15)%vname="rhop";           rst_fields(15)%grid="grid_N_3D" 
     279        rst_fields(16)%vname="rotn";           rst_fields(16)%grid="grid_N_3D" 
     280        rst_fields(17)%vname="rotb";           rst_fields(17)%grid="grid_N_3D" 
     281        rst_fields(18)%vname="kt";             rst_fields(18)%grid="grid_scalar" 
     282        rst_fields(19)%vname="ndastp";         rst_fields(19)%grid="grid_scalar" 
     283        rst_fields(20)%vname="adatrj";         rst_fields(20)%grid="grid_scalar" 
     284        rst_fields(21)%vname="utau_b";         rst_fields(21)%grid="grid_N" 
     285        rst_fields(22)%vname="vtau_b";         rst_fields(22)%grid="grid_N" 
     286        rst_fields(23)%vname="qns_b";          rst_fields(23)%grid="grid_N" 
     287        rst_fields(24)%vname="emp_b";          rst_fields(24)%grid="grid_N" 
     288        rst_fields(25)%vname="sfx_b";          rst_fields(25)%grid="grid_N" 
     289        rst_fields(26)%vname="en" ;            rst_fields(26)%grid="grid_N_3D"  
     290        rst_fields(27)%vname="avt";            rst_fields(27)%grid="grid_N_3D" 
     291        rst_fields(28)%vname="avm";            rst_fields(28)%grid="grid_N_3D" 
     292        rst_fields(29)%vname="avmu";           rst_fields(29)%grid="grid_N_3D" 
     293        rst_fields(30)%vname="avmv";           rst_fields(30)%grid="grid_N_3D" 
     294        rst_fields(31)%vname="dissl";          rst_fields(31)%grid="grid_N_3D" 
     295        rst_fields(32)%vname="sbc_hc_b";       rst_fields(32)%grid="grid_N" 
     296        rst_fields(33)%vname="sbc_sc_b";       rst_fields(33)%grid="grid_N" 
     297        rst_fields(34)%vname="qsr_hc_b";       rst_fields(34)%grid="grid_N_3D" 
     298        rst_fields(35)%vname="gcx";            rst_fields(35)%grid="grid_N" 
     299        rst_fields(36)%vname="gcxb";           rst_fields(36)%grid="grid_N" 
     300        rst_fields(37)%vname="fraqsr_1lev";    rst_fields(37)%grid="grid_N" 
     301        rst_fields(38)%vname="greenland_icesheet_mass" 
     302                                               rst_fields(38)%grid="grid_scalar" 
     303        rst_fields(39)%vname="greenland_icesheet_timelapsed" 
     304                                               rst_fields(39)%grid="grid_scalar" 
     305        rst_fields(40)%vname="greenland_icesheet_mass_roc" 
     306                                               rst_fields(40)%grid="grid_scalar" 
     307        rst_fields(41)%vname="antarctica_icesheet_mass" 
     308                                               rst_fields(41)%grid="grid_scalar" 
     309        rst_fields(42)%vname="antarctica_icesheet_timelapsed" 
     310                                               rst_fields(42)%grid="grid_scalar" 
     311        rst_fields(43)%vname="antarctica_icesheet_mass_roc" 
     312                                               rst_fields(43)%grid="grid_scalar" 
     313        rst_fields(44)%vname="rhd";            rst_fields(44)%grid="grid_N_3D" 
     314        rst_fields(45)%vname="frc_v";          rst_fields(45)%grid="grid_scalar" 
     315        rst_fields(46)%vname="frc_t";          rst_fields(46)%grid="grid_scalar" 
     316        rst_fields(47)%vname="frc_s";          rst_fields(47)%grid="grid_scalar" 
     317        rst_fields(48)%vname="frc_wn_t";       rst_fields(48)%grid="grid_scalar" 
     318        rst_fields(49)%vname="frc_wn_s";       rst_fields(49)%grid="grid_scalar" 
     319        rst_fields(50)%vname="ssh_ini";        rst_fields(50)%grid="grid_N" 
     320        rst_fields(51)%vname="e3t_ini";        rst_fields(51)%grid="grid_N_3D" 
     321        rst_fields(52)%vname="hc_loc_ini";     rst_fields(52)%grid="grid_N_3D" 
     322        rst_fields(53)%vname="sc_loc_ini";     rst_fields(53)%grid="grid_N_3D" 
     323        rst_fields(54)%vname="ssh_hc_loc_ini"; rst_fields(54)%grid="grid_N" 
     324        rst_fields(55)%vname="ssh_sc_loc_ini"; rst_fields(55)%grid="grid_N" 
     325        rst_fields(56)%vname="fse3t_b";        rst_fields(56)%grid="grid_N_3D" 
     326        rst_fields(57)%vname="fse3t_n";        rst_fields(57)%grid="grid_N_3D" 
     327        rst_fields(58)%vname="tilde_e3t_b";    rst_fields(58)%grid="grid_N" 
     328        rst_fields(59)%vname="tilde_e3t_n";    rst_fields(59)%grid="grid_N" 
     329        rst_fields(60)%vname="hdiv_lf";        rst_fields(60)%grid="grid_N" 
     330        rst_fields(61)%vname="ub2_b";          rst_fields(61)%grid="grid_N" 
     331        rst_fields(62)%vname="vb2_b";          rst_fields(62)%grid="grid_N" 
     332        rst_fields(63)%vname="sshbb_e";        rst_fields(63)%grid="grid_N" 
     333        rst_fields(64)%vname="ubb_e";          rst_fields(64)%grid="grid_N" 
     334        rst_fields(65)%vname="vbb_e";          rst_fields(65)%grid="grid_N" 
     335        rst_fields(66)%vname="sshb_e";         rst_fields(66)%grid="grid_N" 
     336        rst_fields(67)%vname="ub_e";           rst_fields(67)%grid="grid_N" 
     337        rst_fields(68)%vname="vb_e";           rst_fields(68)%grid="grid_N" 
     338        rst_fields(69)%vname="fwf_isf_b";      rst_fields(69)%grid="grid_N" 
     339        rst_fields(70)%vname="isf_sc_b";       rst_fields(70)%grid="grid_N" 
     340        rst_fields(71)%vname="isf_hc_b";       rst_fields(71)%grid="grid_N" 
     341        rst_fields(72)%vname="ssh_ibb";        rst_fields(72)%grid="grid_N" 
     342        rst_fields(73)%vname="rnf_b";          rst_fields(73)%grid="grid_N" 
     343        rst_fields(74)%vname="rnf_hc_b";       rst_fields(74)%grid="grid_N" 
     344        rst_fields(75)%vname="rnf_sc_b";       rst_fields(75)%grid="grid_N" 
     345        rst_fields(76)%vname="nn_fsbc";        rst_fields(76)%grid="grid_scalar" 
     346        rst_fields(77)%vname="ssu_m";          rst_fields(77)%grid="grid_N" 
     347        rst_fields(78)%vname="ssv_m";          rst_fields(78)%grid="grid_N" 
     348        rst_fields(79)%vname="sst_m";          rst_fields(79)%grid="grid_N" 
     349        rst_fields(80)%vname="sss_m";          rst_fields(80)%grid="grid_N" 
     350        rst_fields(81)%vname="ssh_m";          rst_fields(81)%grid="grid_N" 
     351        rst_fields(82)%vname="e3t_m";          rst_fields(82)%grid="grid_N" 
     352        rst_fields(83)%vname="frq_m";          rst_fields(83)%grid="grid_N" 
     353        rst_fields(84)%vname="avmb";           rst_fields(84)%grid="Vgrid" 
     354        rst_fields(85)%vname="avtb";           rst_fields(85)%grid="Vgrid" 
     355 
     356   END SUBROUTINE set_rst_vars 
     357 
     358 
     359   SUBROUTINE set_rstr_active() 
     360!sets enabled = .TRUE. for each field in restart file 
     361#if defined key_xios2 
     362   CHARACTER(len=256) :: rst_file 
     363   TYPE(xios_field) :: field_hdl 
     364   TYPE(xios_file) :: file_hdl 
     365   TYPE(xios_filegroup) :: filegroup_hdl 
     366   INTEGER :: i 
     367   CHARACTER(lc)  ::   clpath 
     368 
     369        clpath = TRIM(cn_ocerst_indir) 
     370        IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 
     371        IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     372           rst_file = TRIM(cn_ocerst_indir)//TRIM(cn_ocerst_in) 
     373        ELSE 
     374           rst_file = TRIM(cn_ocerst_indir)//'1_'//TRIM(cn_ocerst_in) 
     375        ENDIF 
     376!set name of the restart file and enable available fields 
     377        if(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS) to: ',rst_file 
     378        CALL xios_get_handle("file_definition", filegroup_hdl ) 
     379        CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart') 
     380        CALL xios_set_file_attr( "rrestart", name=trim(rst_file), type="one_file", & 
     381             par_access="collective", enabled=.TRUE., mode="read",                 & 
     382             output_freq=xios_timestep) 
     383!defin files for restart context 
     384        DO i = 1, max_rst_fields 
     385         IF( TRIM(rst_fields(i)%vname) /= "NO_NAME") THEN 
     386           IF( iom_varid( numror, TRIM(rst_fields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN 
     387                CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 
     388                CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_fields(i)%vname), & 
     389                     grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 
     390                if(lwp) WRITE(numout,*) TRIM(rst_fields(i)%vname), ' enabled' 
     391           ENDIF 
     392         ENDIF 
     393        END DO 
     394#endif 
     395   END SUBROUTINE set_rstr_active 
    246396 
    247397   SUBROUTINE iom_swap( cdname ) 
     
    687837                                                                           ! value for the 2nd dimension (netcdf only) 
    688838      ! 
     839      LOGICAL                        ::   lxios       ! local definition for XIOS read 
    689840      LOGICAL                        ::   llnoov      ! local definition to read overlap 
    690841      LOGICAL                        ::   luse_jattr  ! local definition to read open_ocean_jstart file attribute 
     
    713864      !--------------------------------------------------------------------- 
    714865      ! 
    715       clname = iom_file(kiomid)%name   !   esier to read 
    716       clinfo = '          iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) 
    717       ! local definition of the domain ? 
     866      REAL(wp)                       :: gma, gmi 
     867      lxios = .FALSE. 
     868      if(PRESENT(lrxios)) lxios = lrxios 
     869      idvar = iom_varid( kiomid, cdvar )  
    718870      idom = kdom 
    719       ! do we read the overlap  
    720       ! ugly patch SM+JMM+RB to overwrite global definition in some cases 
    721       llnoov = (jpni * jpnj ) == jpnij .AND. .NOT. lk_agrif  
    722       ! check kcount and kstart optionals parameters... 
    723       IF( PRESENT(kcount) .AND. (.NOT. PRESENT(kstart)) ) CALL ctl_stop(trim(clinfo), 'kcount present needs kstart present') 
    724       IF( PRESENT(kstart) .AND. (.NOT. PRESENT(kcount)) ) CALL ctl_stop(trim(clinfo), 'kstart present needs kcount present') 
    725       IF( PRESENT(kstart) .AND. idom /= jpdom_unknown .AND.  idom /= jpdom_autoglo_xy  ) & 
     871 
     872      IF(.NOT.lxios) THEN 
     873          clname = iom_file(kiomid)%name   !   esier to read 
     874          clinfo = '          iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) 
     875          ! local definition of the domain ? 
     876          ! do we read the overlap  
     877          ! ugly patch SM+JMM+RB to overwrite global definition in some cases 
     878          llnoov = (jpni * jpnj ) == jpnij .AND. .NOT. lk_agrif  
     879          ! check kcount and kstart optionals parameters... 
     880          IF( PRESENT(kcount) .AND. (.NOT. PRESENT(kstart)) ) CALL ctl_stop(trim(clinfo), 'kcount present needs kstart present') 
     881          IF( PRESENT(kstart) .AND. (.NOT. PRESENT(kcount)) ) CALL ctl_stop(trim(clinfo), 'kstart present needs kcount present') 
     882          IF( PRESENT(kstart) .AND. idom /= jpdom_unknown .AND.  idom /= jpdom_autoglo_xy  ) & 
    726883     &           CALL ctl_stop(trim(clinfo), 'kstart present needs kdom = jpdom_unknown or kdom = jpdom_autoglo_xy') 
    727884 
     
    9251082            IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i6,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 
    9261083           
    927             !--- overlap areas and extra hallows (mpp) 
    928             IF(     PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN 
    929                CALL lbc_lnk( pv_r2d,'Z',-999.,'no0' ) 
    930             ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 
    931                ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 
    932                IF( icnt(3) == jpk ) THEN 
    933                   CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 
    934                ELSE   ! put some arbitrary value (a call to lbc_lnk will be done later...) 
    935                   DO jj = nlcj+1, jpj   ;   pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :)   ;   END DO 
    936                   DO ji = nlci+1, jpi   ;   pv_r3d(ji    , : , :) = pv_r3d(nlei  , :   , :)   ;   END DO 
    937                ENDIF 
    938             ENDIF 
    939              
    940             ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 
    941             IF( lk_c1d .AND. PRESENT(pv_r2d) )   CALL lbc_lnk( pv_r2d,'Z',1. ) 
    942             IF( lk_c1d .AND. PRESENT(pv_r3d) )   CALL lbc_lnk( pv_r3d,'Z',1. ) 
    943      
    944             !--- Apply scale_factor and offset 
    945             zscf = iom_file(kiomid)%scf(idvar)      ! scale factor 
    946             zofs = iom_file(kiomid)%ofs(idvar)      ! offset 
    947             IF(     PRESENT(pv_r1d) ) THEN 
    948                IF( zscf /= 1. )   pv_r1d(:) = pv_r1d(:) * zscf  
    949                IF( zofs /= 0. )   pv_r1d(:) = pv_r1d(:) + zofs 
    950             ELSEIF( PRESENT(pv_r2d) ) THEN 
     1084                !--- overlap areas and extra hallows (mpp) 
     1085                IF(     PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN 
     1086                   CALL lbc_lnk( pv_r2d,'Z',-999.,'no0' ) 
     1087                ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 
     1088                   ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 
     1089                   IF( icnt(3) == jpk ) THEN 
     1090                      CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 
     1091                   ELSE   ! put some arbitrary value (a call to lbc_lnk will be done later...) 
     1092                      DO jj = nlcj+1, jpj   ;   pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :)   ;   END DO 
     1093                      DO ji = nlci+1, jpi   ;   pv_r3d(ji    , : , :) = pv_r3d(nlei  , :   , :)   ;   END DO 
     1094                   ENDIF 
     1095                ENDIF 
     1096                ! 
     1097             ELSE 
     1098                ! return if istop == nstop is false 
     1099                RETURN 
     1100             ENDIF 
     1101          ELSE 
     1102             ! return if statment idvar > 0 .AND. istop == nstop is false 
     1103             RETURN 
     1104          ENDIF 
     1105          ! 
     1106       ELSE        ! read using XIOS. Only if KEY_IOMPUT is defined 
     1107#if defined key_iomput 
     1108!would be good to be able to check which context is active and swap only if current is not restart 
     1109          CALL iom_swap( TRIM(rxios_context) )  
     1110          IF( PRESENT(pv_r3d) ) THEN 
     1111             if(lwp) write(numout,*) 'XIOS RST READ (3D): ',trim(cdvar) 
     1112             CALL xios_recv_field( trim(cdvar), pv_r3d) 
     1113             IF(idom /= jpdom_unknown ) then 
     1114                 CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 
     1115             ENDIF 
     1116          ELSEIF( PRESENT(pv_r2d) ) THEN 
     1117             if(lwp) write(numout,*) 'XIOS RST READ (2D): ', trim(cdvar) 
     1118             CALL xios_recv_field( trim(cdvar), pv_r2d) 
     1119             IF(idom /= jpdom_unknown ) THEN 
     1120                 CALL lbc_lnk(pv_r2d,'Z',-999.,'no0') 
     1121             ENDIF 
     1122          ELSEIF( PRESENT(pv_r1d) ) THEN 
     1123             if(lwp) write(numout,*) 'XIOS RST READ (1D): ', trim(cdvar) 
     1124             CALL xios_recv_field( trim(cdvar), pv_r1d) 
     1125          ENDIF 
     1126          CALL iom_swap( TRIM(cxios_context) ) 
     1127#else 
     1128          istop = istop + 1  
     1129          clinfo = 'Can not use XIOS in iom_get_123d, file: '//trim(clname)//', var:'//trim(cdvar) 
     1130#endif 
     1131       ENDIF 
     1132!some final adjustments 
     1133       ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 
     1134       IF( lk_c1d .AND. PRESENT(pv_r2d) )   CALL lbc_lnk( pv_r2d,'Z',1. ) 
     1135       IF( lk_c1d .AND. PRESENT(pv_r3d) )   CALL lbc_lnk( pv_r3d,'Z',1. ) 
     1136 
     1137       !--- Apply scale_factor and offset 
     1138       zscf = iom_file(kiomid)%scf(idvar)      ! scale factor 
     1139       zofs = iom_file(kiomid)%ofs(idvar)      ! offset 
     1140       IF(     PRESENT(pv_r1d) ) THEN 
     1141          IF( zscf /= 1. )   pv_r1d(:) = pv_r1d(:) * zscf  
     1142          IF( zofs /= 0. )   pv_r1d(:) = pv_r1d(:) + zofs 
     1143       ELSEIF( PRESENT(pv_r2d) ) THEN 
    9511144!CDIR COLLAPSE 
    9521145               IF( zscf /= 1.)   pv_r2d(:,:) = pv_r2d(:,:) * zscf 
     
    9571150               IF( zscf /= 1.)   pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 
    9581151!CDIR COLLAPSE 
    959                IF( zofs /= 0.)   pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 
    960             ENDIF 
    961             ! 
    962          ENDIF 
    963          ! 
    964       ENDIF 
    965       ! 
     1152          IF( zofs /= 0.)   pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 
     1153       ENDIF 
    9661154   END SUBROUTINE iom_get_123d 
    9671155 
     
    13671555 
    13681556 
    1369    SUBROUTINE set_grid( cdgrd, plon, plat ) 
     1557   SUBROUTINE set_grid( cdgrd, plon, plat, lmask ) 
    13701558      !!---------------------------------------------------------------------- 
    13711559      !!                     ***  ROUTINE set_grid  *** 
     
    13801568      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zmask 
    13811569      INTEGER  :: ni,nj 
     1570      LOGICAL :: lmask 
    13821571       
    13831572      ni=nlei-nldi+1 ; nj=nlej-nldj+1 
     
    13921581         &                                     latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /)))   
    13931582 
    1394       IF ( ln_mskland ) THEN 
     1583      IF ( lmask ) THEN 
    13951584         ! mask land points, keep values on coast line -> specific mask for U, V and W points 
    13961585         SELECT CASE ( cdgrd ) 
     
    14361625      ! Offset of coordinate representing bottom-left corner 
    14371626      SELECT CASE ( TRIM(cdgrd) ) 
    1438          CASE ('T', 'W') 
     1627         CASE ('T', 'W', 'N') 
    14391628            icnr = -1 ; jcnr = -1 
    14401629         CASE ('U') 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/iom_def.F90

    r6491 r8191  
    5151!$AGRIF_DO_NOT_TREAT 
    5252   INTEGER, PUBLIC            ::   iom_open_init = 0   !: used to initialize iom_file(:)%nfid to 0 
     53!XIOS read restart    
     54   LOGICAL, PUBLIC            ::   lxios_read          !: read single file restart using XIOS 
     55   LOGICAL, PUBLIC            ::   lxios_sini = .FALSE. ! is restart in a single file 
     56   LOGICAL, PUBLIC            ::   lxios_set  = .FALSE.  
    5357 
    5458   TYPE, PUBLIC ::   file_descriptor 
     
    7074   END TYPE file_descriptor 
    7175   TYPE(file_descriptor), DIMENSION(jpmax_files), PUBLIC ::   iom_file !: array containing the info for all opened files 
     76 
     77   INTEGER, PARAMETER, PUBLIC                   :: max_rst_fields = 85   
     78!  CHARACTER(len=30),DIMENSION(max_rst_fields), PUBLIC   :: rst_fields ! names of variables in restart file 
     79 
     80   TYPE, PUBLIC :: RST_FIELD   
     81    CHARACTER(len=30) :: vname ! names of variables in restart file 
     82    CHARACTER(len=30) :: grid 
     83   END TYPE RST_FIELD 
     84   TYPE(RST_FIELD), PUBLIC :: rst_fields(max_rst_fields) 
     85 
    7286!$AGRIF_END_DO_NOT_TREAT 
    7387 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90

    r6755 r8191  
    218218         ENDIF 
    219219         CALL iom_open( TRIM(clpath)//cn_ocerst_in, numror, kiolib = jlibalt ) 
     220! are we using XIOS to read the data? Part above will have to modified once XIOS 
     221! can handle checking if variable is in the restart file (there will be no need to open 
     222! restart) 
     223         IF(.NOT.lxios_set) lxios_read = lxios_read.AND.lxios_sini 
     224         IF( lxios_read) THEN 
     225         if(.NOT.lxios_set) then 
     226             rxios_context = 'nemo_rst' 
     227             call iom_init( rxios_context ) 
     228             lxios_set = .TRUE. 
     229         endif 
     230         ENDIF 
     231         IF( TRIM(Agrif_CFixed()) /= '0' .AND. lxios_read) THEN 
     232            rxios_context = 'nemo_rst' 
     233            call iom_init( rxios_context ) 
     234         ENDIF  
    220235      ENDIF 
    221236   END SUBROUTINE rst_read_open 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90

    r6486 r8191  
    6868      CHARACTER(len=100) ::  cn_dir   ! Root directory for location of ssr files 
    6969      TYPE(FLD_N)        ::  sn_apr   ! informations about the fields to be read 
     70      LOGICAL            ::  lxios_read ! read restart using XIOS? 
    7071      !! 
    7172      NAMELIST/namsbc_apr/ cn_dir, sn_apr, ln_ref_apr, rn_pref, ln_apr_obc 
     
    143144         IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN  
    144145            IF(lwp) WRITE(numout,*) 'sbc_apr:   ssh_ibb read in the restart file' 
    145             CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb )   ! before inv. barometer ssh 
     146            CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb, lrxios = lxios_read )   ! before inv. barometer ssh 
    146147            ! 
    147148         ELSE                                         !* no restart: set from nit000 values 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r7771 r8191  
    8282      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zun, zvn, zwn 
    8383      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdt, ztrds   ! 3D workspace 
     84      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt, ztrds   ! 3D workspace 
    8485      !!---------------------------------------------------------------------- 
    8586      ! 
     
    125126      IF( ln_diaptr )   CALL dia_ptr( zvn )                                     ! diagnose the effective MSF  
    126127      ! 
     128<<<<<<< .working 
    127129      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    128130         ALLOCATE(ztrdt( 1:jpi, 1:jpj, 1:jpk) ) 
     
    132134      ENDIF 
    133135      ! 
     136======= 
     137      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
     138         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
     139         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     140         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     141      ENDIF 
     142      ! 
     143>>>>>>> .merge-right.r7923 
    134144      SELECT CASE ( nadv )                            !==  compute advection trend and add it to general trend  ==! 
    135145      CASE ( 1 )   ;    CALL tra_adv_cen2   ( kt, nit000, 'TRA',         zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  2nd order centered 
     
    162172      END SELECT 
    163173      ! 
     174<<<<<<< .working 
    164175      IF( l_trdtra )   THEN                      ! save the advective trends for further diagnostics 
    165176         DO jk = 1, jpkm1 
     
    172183         DEALLOCATE (ztrds) 
    173184      ENDIF 
     185======= 
     186      IF( l_trdtra )   THEN                      ! save the advective trends for further diagnostics 
     187         DO jk = 1, jpkm1 
     188            ztrdt(:,:,jk) = tsa(:,:,jk,jp_tem) - ztrdt(:,:,jk) 
     189            ztrds(:,:,jk) = tsa(:,:,jk,jp_sal) - ztrds(:,:,jk) 
     190         END DO 
     191         CALL trd_tra( kt, 'TRA', jp_tem, jptra_totad, ztrdt ) 
     192         CALL trd_tra( kt, 'TRA', jp_sal, jptra_totad, ztrds ) 
     193         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 
     194      ENDIF 
     195>>>>>>> .merge-right.r7923 
    174196      !                                              ! print mean trends (used for debugging) 
    175197      IF(ln_ctl)   CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv  - Ta: ', mask1=tmask,               & 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90

    r7771 r8191  
    8686      REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk   !   -      - 
    8787      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk   !   -      - 
     88<<<<<<< .working 
    8889      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zwi, zwz 
    8990      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz, zptry 
    9091      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   :: z2d 
     92======= 
     93      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwz 
     94      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz, zptry 
     95      REAL(wp), POINTER, DIMENSION(:,:)   :: z2d 
     96>>>>>>> .merge-right.r7923 
    9197      !!---------------------------------------------------------------------- 
    9298      ! 
     
    108114      IF( cdtype == 'TRA' .AND. (iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") ) ) l_trans = .TRUE. 
    109115      ! 
     116<<<<<<< .working 
    110117      IF( l_trd .OR. l_trans )  THEN 
    111118         ALLOCATE(ztrdx(1:jpi, 1:jpj, 1:jpk)) 
    112119         ALLOCATE(ztrdy(1:jpi, 1:jpj, 1:jpk)) 
    113120         ALLOCATE(ztrdz(1:jpi, 1:jpj, 1:jpk)) 
     121======= 
     122      IF( l_trd .OR. l_trans )  THEN 
     123         CALL wrk_alloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 
     124>>>>>>> .merge-right.r7923 
    114125         ztrdx(:,:,:) = 0.e0   ;    ztrdy(:,:,:) = 0.e0   ;   ztrdz(:,:,:) = 0.e0 
     126<<<<<<< .working 
    115127         ALLOCATE(z2d(1:jpi, 1:jpj)) 
    116       ENDIF 
    117       ! 
     128======= 
     129         CALL wrk_alloc( jpi, jpj, z2d ) 
     130>>>>>>> .merge-right.r7923 
     131      ENDIF 
     132      ! 
     133<<<<<<< .working 
    118134      IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN   
    119135         ALLOCATE(zptry(1:jpi, 1:jpj, 1:jpk)) 
     
    121137      ENDIF 
    122138      ! 
     139======= 
     140      IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN   
     141         CALL wrk_alloc( jpi, jpj, jpk, zptry ) 
     142         zptry(:,:,:) = 0._wp 
     143      ENDIF 
     144      ! 
     145>>>>>>> .merge-right.r7923 
    123146      zwi(:,:,:) = 0.e0 ;  
    124147      ! 
     
    308331      END DO 
    309332      ! 
     333<<<<<<< .working 
    310334      DEALLOCATE( zwi ) 
    311335      DEALLOCATE( zwz ) 
     
    317341      ENDIF 
    318342      IF( cdtype == 'TRA' .AND. ln_diaptr ) DEALLOCATE( zptry ) 
     343======= 
     344      CALL wrk_dealloc( jpi, jpj, jpk, zwi, zwz ) 
     345      IF( l_trd .OR. l_trans )  THEN  
     346         CALL wrk_dealloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 
     347         CALL wrk_dealloc( jpi, jpj, z2d ) 
     348      ENDIF 
     349      IF( cdtype == 'TRA' .AND. ln_diaptr ) CALL wrk_dealloc( jpi, jpj, jpk, zptry ) 
     350>>>>>>> .merge-right.r7923 
    319351      ! 
    320352      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_tvd') 
     
    360392      REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk   !   -      - 
    361393      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk   !   -      - 
     394<<<<<<< .working 
    362395      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zwx_sav , zwy_sav 
    363396      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zwi, zwz, zhdiv, zwz_sav, zwzts 
     
    365398      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zptry 
    366399      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztrs 
     400======= 
     401      REAL(wp), POINTER, DIMENSION(:,:  ) :: zwx_sav , zwy_sav 
     402      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwz, zhdiv, zwz_sav, zwzts 
     403      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz 
     404      REAL(wp), POINTER, DIMENSION(:,:,:) :: zptry 
     405      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrs 
     406>>>>>>> .merge-right.r7923 
    367407      !!---------------------------------------------------------------------- 
    368408      ! 
     
    394434      ENDIF 
    395435      ! 
     436<<<<<<< .working 
    396437      IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN   
    397438         ALLOCATE(zptry(1:jpi, 1:jpj, 1:jpk))        
     
    399440      ENDIF 
    400441      ! 
     442======= 
     443      IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN   
     444         CALL wrk_alloc( jpi, jpj,jpk, zptry ) 
     445         zptry(:,:,:) = 0._wp 
     446      ENDIF 
     447      ! 
     448>>>>>>> .merge-right.r7923 
    401449      zwi(:,:,:) = 0._wp 
    402450      z_rzts = 1._wp / REAL( jnzts, wp ) 
     
    633681 
    634682      IF( cdtype == 'TRA' .AND. ln_diaptr ) DEALLOCATE(zptry ) 
     683      IF( cdtype == 'TRA' .AND. ln_diaptr ) CALL wrk_dealloc( jpi, jpj, jpk, zptry ) 
    635684      ! 
    636685      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_tvd_zts') 
  • branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90

    r7771 r8191  
    106106      INTEGER  ::  ji, jj, jk, jn   ! dummy loop indices 
    107107      INTEGER  ::  ikt 
     108<<<<<<< .working 
    108109      REAL(wp) ::  zmsku, zabe1, zcof1, zcoef3       ! local scalars 
    109110      REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4       !   -      - 
     
    113114      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET ::  ztrax, ztray, ztraz  
    114115      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET ::  ztrax_T, ztray_T, ztraz_T 
     116======= 
     117      REAL(wp) ::  zmsku, zabe1, zcof1, zcoef3       ! local scalars 
     118      REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4       !   -      - 
     119      REAL(wp) ::  zcoef0, zbtr                      !   -      - 
     120      REAL(wp), POINTER, DIMENSION(:,:  ) ::  z2d 
     121      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zdkt, zdk1t, zdit, zdjt, ztfw  
     122>>>>>>> .merge-right.r7923 
     123      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET ::  ztrax, ztray, ztraz  
     124      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET ::  ztrax_T, ztray_T, ztraz_T 
    115125      !!---------------------------------------------------------------------- 
    116126      ! 
    117127      IF( nn_timing == 1 )  CALL timing_start('tra_ldf_iso') 
    118128      ! 
     129<<<<<<< .working 
    119130      ALLOCATE( z2d(1:jpi, 1:jpj))  
    120131      ALLOCATE( zdit(1:jpi, 1:jpj, 1:jpk)) 
     
    131142         ALLOCATE( ztraz_T(1:jpi,1:jpj,1:jpk))  
    132143      ENDIF 
     144======= 
     145      CALL wrk_alloc( jpi, jpj,      z2d )  
     146      CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw, zdkt, zdk1t)  
     147      ALLOCATE( ztrax(jpi,jpj,jpk), ztray(jpi,jpj,jpk), ztraz(jpi,jpj,jpk) )  
     148      IF( l_trdtra .and. cdtype == 'TRA' ) ALLOCATE( ztrax_T(jpi,jpj,jpk), ztray_T(jpi,jpj,jpk), ztraz_T(jpi,jpj,jpk) )  
     149>>>>>>> .merge-right.r7923 
    133150      ! 
    134151 
     
    347364      END DO 
    348365      ! 
     366<<<<<<< .working 
    349367      IF( l_trdtra .AND. cdtype == "TRA" )   THEN      ! save the horizontal component of diffusive trends for further diagnostics 
    350368         CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_x, ztrax_T ) 
     
    355373         CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_z1, ztraz )    ! 
    356374      ENDIF 
     375======= 
     376      IF( l_trdtra .AND. cdtype == "TRA" )   THEN      ! save the horizontal component of diffusive trends for further diagnostics 
     377         CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_x, ztrax_T ) 
     378         CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_x, ztrax ) 
     379         CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_y, ztray_T ) 
     380         CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_y, ztray ) 
     381         CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_z1, ztraz_T )  ! This is the first part of the vertical component 
     382         CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_z1, ztraz )    ! 
     383      ENDIF 
     384      ! 
     385      CALL wrk_dealloc( jpi, jpj, z2d )  
     386      CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw, zdkt, zdk1t )  
     387>>>>>>> .merge-right.r7923 
     388      DEALLOCATE( ztrax, ztray, ztraz )  
     389      IF( l_trdtra  .and. cdtype == 'TRA' ) DEALLOCATE( ztrax_T, ztray_T, ztraz_T )  
    357390      ! 
    358391      DEALLOCATE( z2d )  
Note: See TracChangeset for help on using the changeset viewer.