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 7753 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90 – NEMO

Ignore:
Timestamp:
2017-03-03T12:46:59+01:00 (7 years ago)
Author:
mocavero
Message:

Reverting trunk to remove OpenMP

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90

    r7698 r7753  
    8686      REAL(wp), POINTER, DIMENSION(:,:)   :: zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini !data from namelist or nc file 
    8787      REAL(wp), POINTER, DIMENSION(:,:,:) :: zh_i_ini, za_i_ini                         !data by cattegories to fill 
    88       INTEGER , DIMENSION(4)     :: itest 
     88      INTEGER , POINTER, DIMENSION(:)     :: itest 
    8989      !-------------------------------------------------------------------- 
    9090 
     
    9292      CALL wrk_alloc( jpi, jpj,      zht_i_ini, zat_i_ini, zvt_i_ini, zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 
    9393      CALL wrk_alloc( jpi, jpj,      zswitch ) 
     94      Call wrk_alloc( 4,             itest ) 
    9495 
    9596      IF(lwp) WRITE(numout,*) 
     
    105106      ! init surface temperature 
    106107      DO jl = 1, jpl 
    107 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    108          DO jj = 1, jpj 
    109             DO ji = 1, jpi 
    110                t_su  (ji,jj,jl) = rt0 * tmask(ji,jj,1) 
    111                tn_ice(ji,jj,jl) = rt0 * tmask(ji,jj,1) 
    112             END DO 
    113          END DO 
     108         t_su  (:,:,jl) = rt0 * tmask(:,:,1) 
     109         tn_ice(:,:,jl) = rt0 * tmask(:,:,1) 
    114110      END DO 
    115111 
    116112      ! init basal temperature (considered at freezing point) 
    117113      CALL eos_fzp( sss_m(:,:), t_bo(:,:) ) 
    118 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    119       DO jj = 1, jpj 
    120          DO ji = 1, jpi 
    121             t_bo(ji,jj) = ( t_bo(ji,jj) + rt0 ) * tmask(ji,jj,1)  
    122          END DO 
    123       END DO 
     114      t_bo(:,:) = ( t_bo(:,:) + rt0 ) * tmask(:,:,1)  
    124115 
    125116 
     
    131122         IF( ln_limini_file )THEN 
    132123         ! 
    133 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    134             DO jj = 1, jpj 
    135                DO ji = 1, jpi 
    136                   zht_i_ini(ji,jj)  = si(jp_hti)%fnow(ji,jj,1) 
    137                   zht_s_ini(ji,jj)  = si(jp_hts)%fnow(ji,jj,1) 
    138                   zat_i_ini(ji,jj)  = si(jp_ati)%fnow(ji,jj,1) 
    139                   zts_u_ini(ji,jj)  = si(jp_tsu)%fnow(ji,jj,1) 
    140                   ztm_i_ini(ji,jj)  = si(jp_tmi)%fnow(ji,jj,1) 
    141                   zsm_i_ini(ji,jj)  = si(jp_smi)%fnow(ji,jj,1) 
    142                   ! 
    143                   IF  ( zat_i_ini(ji,jj) > 0._wp ) THEN ; zswitch(ji,jj) = tmask(ji,jj,1)  
    144                   ELSE                                ; zswitch(ji,jj) = 0._wp 
    145                   END IF 
    146                END DO 
    147             END DO 
    148          ! 
     124            zht_i_ini(:,:)  = si(jp_hti)%fnow(:,:,1) 
     125            zht_s_ini(:,:)  = si(jp_hts)%fnow(:,:,1) 
     126            zat_i_ini(:,:)  = si(jp_ati)%fnow(:,:,1) 
     127            zts_u_ini(:,:)  = si(jp_tsu)%fnow(:,:,1) 
     128            ztm_i_ini(:,:)  = si(jp_tmi)%fnow(:,:,1) 
     129            zsm_i_ini(:,:)  = si(jp_smi)%fnow(:,:,1) 
     130            ! 
     131            WHERE( zat_i_ini(:,:) > 0._wp ) ; zswitch(:,:) = tmask(:,:,1)  
     132            ELSEWHERE                       ; zswitch(:,:) = 0._wp 
     133            END WHERE 
     134            ! 
    149135         ELSE ! ln_limini_file = F 
    150136 
     
    153139            !-------------------------------------------------------------------- 
    154140            ! no ice if sst <= t-freez + ttest 
    155 !$OMP PARALLEL 
    156 !$OMP DO schedule(static) private(jj,ji) 
    157             DO jj = 1, jpj 
    158                DO ji = 1, jpi 
    159                   IF ( ( sst_m(ji,jj) - (t_bo(ji,jj) - rt0) ) * tmask(ji,jj,1) >= rn_thres_sst ) THEN 
    160                      zswitch(ji,jj) = 0._wp  
    161                   ELSE 
    162                      zswitch(ji,jj) = tmask(ji,jj,1) 
    163                   END IF 
    164                END DO 
    165             END DO 
     141            WHERE( ( sst_m(:,:) - (t_bo(:,:) - rt0) ) * tmask(:,:,1) >= rn_thres_sst ) ; zswitch(:,:) = 0._wp  
     142            ELSEWHERE                                                                  ; zswitch(:,:) = tmask(:,:,1) 
     143            END WHERE 
    166144 
    167145            !----------------------------- 
     
    169147            !----------------------------- 
    170148            ! assign initial thickness, concentration, snow depth and salinity to an hemisphere-dependent array 
    171 !$OMP DO schedule(static) private(jj,ji) 
    172149            DO jj = 1, jpj 
    173150               DO ji = 1, jpi 
     
    189166               END DO 
    190167            END DO 
    191 !$OMP END PARALLEL 
    192168            ! 
    193169         ENDIF ! ln_limini_file 
    194170          
    195 !$OMP PARALLEL 
    196 !$OMP DO schedule(static) private(jj,ji) 
    197          DO jj = 1, jpj 
    198             DO ji = 1, jpi 
    199                zvt_i_ini(ji,jj) = zht_i_ini(ji,jj) * zat_i_ini(ji,jj)   ! ice volume 
    200             END DO 
    201          END DO 
     171         zvt_i_ini(:,:) = zht_i_ini(:,:) * zat_i_ini(:,:)   ! ice volume 
    202172         !--------------------------------------------------------------------- 
    203173         ! 3.2) Distribute ice concentration and thickness into the categories 
     
    206176         ! then we check whether the distribution fullfills 
    207177         ! volume and area conservation, positivity and ice categories bounds 
    208          DO jl = 1, jpl 
    209 !$OMP DO schedule(static) private(jj,ji) 
    210             DO jj = 1, jpj 
    211                DO ji = 1, jpi 
    212                   zh_i_ini(ji,jj,jl) = 0._wp  
    213                   za_i_ini(ji,jj,jl) = 0._wp 
    214                END DO 
    215             END DO 
    216          END DO 
     178         zh_i_ini(:,:,:) = 0._wp  
     179         za_i_ini(:,:,:) = 0._wp 
    217180         ! 
    218 !$OMP DO schedule(static) private(jj,ji,jl0,jl,i_fill,zarg,zV,zdv,zconv,itest) 
    219181         DO jj = 1, jpj 
    220182            DO ji = 1, jpi 
     
    327289            END DO    
    328290         END DO    
    329 !$OMP END PARALLEL 
    330291 
    331292         !--------------------------------------------------------------------- 
     
    335296         ! Ice concentration, thickness and volume, ice salinity, ice age, surface temperature 
    336297         DO jl = 1, jpl ! loop over categories 
    337 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    338298            DO jj = 1, jpj 
    339299               DO ji = 1, jpi 
     
    373333         ENDIF 
    374334             
    375 !$OMP PARALLEL 
    376335         ! Snow temperature and heat content 
    377336         DO jk = 1, nlay_s 
    378337            DO jl = 1, jpl ! loop over categories 
    379 !$OMP DO schedule(static) private(jj,ji) 
    380338               DO jj = 1, jpj 
    381339                  DO ji = 1, jpi 
     
    394352         DO jk = 1, nlay_i 
    395353            DO jl = 1, jpl ! loop over categories 
    396 !$OMP DO schedule(static) private(jj,ji) 
    397354               DO jj = 1, jpj 
    398355                  DO ji = 1, jpi 
     
    413370         END DO 
    414371 
     372         tn_ice (:,:,:) = t_su (:,:,:) 
     373 
     374      ELSE ! if ln_limini=false 
     375         a_i  (:,:,:) = 0._wp 
     376         v_i  (:,:,:) = 0._wp 
     377         v_s  (:,:,:) = 0._wp 
     378         smv_i(:,:,:) = 0._wp 
     379         oa_i (:,:,:) = 0._wp 
     380         ht_i (:,:,:) = 0._wp 
     381         ht_s (:,:,:) = 0._wp 
     382         sm_i (:,:,:) = 0._wp 
     383         o_i  (:,:,:) = 0._wp 
     384 
     385         e_i(:,:,:,:) = 0._wp 
     386         e_s(:,:,:,:) = 0._wp 
     387 
    415388         DO jl = 1, jpl 
    416 !$OMP DO schedule(static) private(jj,ji) 
    417             DO jj = 1, jpj 
    418                DO ji = 1, jpi 
    419                   tn_ice (ji,jj,jl) = t_su (ji,jj,jl) 
    420                END DO 
     389            DO jk = 1, nlay_i 
     390               t_i(:,:,jk,jl) = rt0 * tmask(:,:,1) 
     391            END DO 
     392            DO jk = 1, nlay_s 
     393               t_s(:,:,jk,jl) = rt0 * tmask(:,:,1) 
    421394            END DO 
    422395         END DO 
    423 !$OMP END PARALLEL 
    424  
    425       ELSE ! if ln_limini=false 
    426 !$OMP PARALLEL 
    427          DO jl = 1, jpl 
    428 !$OMP DO schedule(static) private(jj,ji) 
    429             DO jj = 1, jpj 
    430                DO ji = 1, jpi 
    431                   a_i  (ji,jj,jl) = 0._wp 
    432                   v_i  (ji,jj,jl) = 0._wp 
    433                   v_s  (ji,jj,jl) = 0._wp 
    434                   smv_i(ji,jj,jl) = 0._wp 
    435                   oa_i (ji,jj,jl) = 0._wp 
    436                   ht_i (ji,jj,jl) = 0._wp 
    437                   ht_s (ji,jj,jl) = 0._wp 
    438                   sm_i (ji,jj,jl) = 0._wp 
    439                   o_i  (ji,jj,jl) = 0._wp 
    440                END DO 
    441             END DO 
    442          END DO 
    443  
    444          DO jk = 1, nlay_i 
    445             DO jl = 1, jpl 
    446 !$OMP DO schedule(static) private(jj,ji) 
    447                DO jj = 1, jpj 
    448                   DO ji = 1, jpi 
    449                      e_i(ji,jj,jl,jk) = 0._wp 
    450                   END DO 
    451                END DO 
    452             END DO 
    453          END DO 
    454          DO jk = 1, nlay_s 
    455             DO jl = 1, jpl 
    456 !$OMP DO schedule(static) private(jj,ji) 
    457                DO jj = 1, jpj 
    458                   DO ji = 1, jpi 
    459                      e_s(ji,jj,jl,jk) = 0._wp 
    460                   END DO 
    461                END DO 
    462             END DO 
    463          END DO 
    464  
    465          DO jl = 1, jpl 
    466             DO jk = 1, nlay_i 
    467 !$OMP DO schedule(static) private(jj,ji) 
    468                DO jj = 1, jpj 
    469                   DO ji = 1, jpi 
    470                      t_i(ji,jj,jk,jl) = rt0 * tmask(ji,jj,1) 
    471                   END DO 
    472                END DO 
    473             END DO 
    474             DO jk = 1, nlay_s 
    475 !$OMP DO schedule(static) private(jj,ji) 
    476                DO jj = 1, jpj 
    477                   DO ji = 1, jpi 
    478                      t_s(ji,jj,jk,jl) = rt0 * tmask(ji,jj,1) 
    479                   END DO 
    480                END DO 
    481             END DO 
    482          END DO 
    483 !$OMP END PARALLEL 
    484396 
    485397      ENDIF ! ln_limini 
    486398       
    487 !$OMP PARALLEL 
    488 !$OMP DO schedule(static) private(jj,ji) 
    489       DO jj = 1, jpj 
    490          DO ji = 1, jpi 
    491             at_i (ji,jj) = 0.0_wp 
    492          END DO 
    493       END DO 
     399      at_i (:,:) = 0.0_wp 
    494400      DO jl = 1, jpl 
    495 !$OMP DO schedule(static) private(jj,ji) 
    496          DO jj = 1, jpj 
    497             DO ji = 1, jpi 
    498                at_i (ji,jj) = at_i (ji,jj) + a_i (ji,jj,jl) 
    499             END DO 
    500          END DO 
     401         at_i (:,:) = at_i (:,:) + a_i (:,:,jl) 
    501402      END DO 
    502403      ! 
    503 !$OMP DO schedule(static) private(jj,ji) 
    504       DO jj = 1, jpj 
    505          DO ji = 1, jpi 
    506             !-------------------------------------------------------------------- 
    507             ! 4) Global ice variables for output diagnostics                    |  
    508             !-------------------------------------------------------------------- 
    509             u_ice (ji,jj)     = 0._wp 
    510             v_ice (ji,jj)     = 0._wp 
    511             stress1_i(ji,jj)  = 0._wp 
    512             stress2_i(ji,jj)  = 0._wp 
    513             stress12_i(ji,jj) = 0._wp 
    514  
    515             !-------------------------------------------------------------------- 
    516             ! 5) Moments for advection 
    517             !-------------------------------------------------------------------- 
    518  
    519             sxopw (ji,jj) = 0._wp  
    520             syopw (ji,jj) = 0._wp  
    521             sxxopw(ji,jj) = 0._wp  
    522             syyopw(ji,jj) = 0._wp  
    523             sxyopw(ji,jj) = 0._wp 
    524          END DO 
    525       END DO 
    526  
    527       DO jl = 1, jpl 
    528 !$OMP DO schedule(static) private(jj,ji) 
    529          DO jj = 1, jpj 
    530             DO ji = 1, jpi 
    531                sxice (ji,jj,jl)  = 0._wp   ;   sxsn (ji,jj,jl)  = 0._wp   ;   sxa  (ji,jj,jl)  = 0._wp 
    532                syice (ji,jj,jl)  = 0._wp   ;   sysn (ji,jj,jl)  = 0._wp   ;   sya  (ji,jj,jl)  = 0._wp 
    533                sxxice(ji,jj,jl)  = 0._wp   ;   sxxsn(ji,jj,jl)  = 0._wp   ;   sxxa (ji,jj,jl)  = 0._wp 
    534                syyice(ji,jj,jl)  = 0._wp   ;   syysn(ji,jj,jl)  = 0._wp   ;   syya (ji,jj,jl)  = 0._wp 
    535                sxyice(ji,jj,jl)  = 0._wp   ;   sxysn(ji,jj,jl)  = 0._wp   ;   sxya (ji,jj,jl)  = 0._wp 
    536  
    537                sxc0  (ji,jj,jl)  = 0._wp    
    538                syc0  (ji,jj,jl)  = 0._wp    
    539                sxxc0 (ji,jj,jl)  = 0._wp    
    540                syyc0 (ji,jj,jl)  = 0._wp    
    541                sxyc0 (ji,jj,jl)  = 0._wp    
    542  
    543                sxsal  (ji,jj,jl)  = 0._wp 
    544                sysal  (ji,jj,jl)  = 0._wp 
    545                sxxsal (ji,jj,jl)  = 0._wp 
    546                syysal (ji,jj,jl)  = 0._wp 
    547                sxysal (ji,jj,jl)  = 0._wp 
    548  
    549                sxage  (ji,jj,jl)  = 0._wp 
    550                syage  (ji,jj,jl)  = 0._wp 
    551                sxxage (ji,jj,jl)  = 0._wp 
    552                syyage (ji,jj,jl)  = 0._wp 
    553                sxyage (ji,jj,jl)  = 0._wp 
    554             END DO 
    555          END DO 
    556       END DO 
    557  
    558       DO jl = 1, jpl 
    559          DO jk = 1, nlay_i 
    560 !$OMP DO schedule(static) private(jj,ji) 
    561             DO jj = 1, jpj 
    562                DO ji = 1, jpi 
    563                   sxe  (ji,jj,jk,jl)= 0._wp 
    564                   sye  (ji,jj,jk,jl)= 0._wp 
    565                   sxxe (ji,jj,jk,jl)= 0._wp 
    566                   syye (ji,jj,jk,jl)= 0._wp 
    567                   sxye (ji,jj,jk,jl)= 0._wp 
    568                END DO 
    569             END DO 
    570          END DO 
    571       END DO 
    572 !$OMP END PARALLEL 
    573  
     404      !-------------------------------------------------------------------- 
     405      ! 4) Global ice variables for output diagnostics                    |  
     406      !-------------------------------------------------------------------- 
     407      u_ice (:,:)     = 0._wp 
     408      v_ice (:,:)     = 0._wp 
     409      stress1_i(:,:)  = 0._wp 
     410      stress2_i(:,:)  = 0._wp 
     411      stress12_i(:,:) = 0._wp 
     412 
     413      !-------------------------------------------------------------------- 
     414      ! 5) Moments for advection 
     415      !-------------------------------------------------------------------- 
     416 
     417      sxopw (:,:) = 0._wp  
     418      syopw (:,:) = 0._wp  
     419      sxxopw(:,:) = 0._wp  
     420      syyopw(:,:) = 0._wp  
     421      sxyopw(:,:) = 0._wp 
     422 
     423      sxice (:,:,:)  = 0._wp   ;   sxsn (:,:,:)  = 0._wp   ;   sxa  (:,:,:)  = 0._wp 
     424      syice (:,:,:)  = 0._wp   ;   sysn (:,:,:)  = 0._wp   ;   sya  (:,:,:)  = 0._wp 
     425      sxxice(:,:,:)  = 0._wp   ;   sxxsn(:,:,:)  = 0._wp   ;   sxxa (:,:,:)  = 0._wp 
     426      syyice(:,:,:)  = 0._wp   ;   syysn(:,:,:)  = 0._wp   ;   syya (:,:,:)  = 0._wp 
     427      sxyice(:,:,:)  = 0._wp   ;   sxysn(:,:,:)  = 0._wp   ;   sxya (:,:,:)  = 0._wp 
     428 
     429      sxc0  (:,:,:)  = 0._wp   ;   sxe  (:,:,:,:)= 0._wp    
     430      syc0  (:,:,:)  = 0._wp   ;   sye  (:,:,:,:)= 0._wp    
     431      sxxc0 (:,:,:)  = 0._wp   ;   sxxe (:,:,:,:)= 0._wp    
     432      syyc0 (:,:,:)  = 0._wp   ;   syye (:,:,:,:)= 0._wp    
     433      sxyc0 (:,:,:)  = 0._wp   ;   sxye (:,:,:,:)= 0._wp    
     434 
     435      sxsal  (:,:,:)  = 0._wp 
     436      sysal  (:,:,:)  = 0._wp 
     437      sxxsal (:,:,:)  = 0._wp 
     438      syysal (:,:,:)  = 0._wp 
     439      sxysal (:,:,:)  = 0._wp 
     440 
     441      sxage  (:,:,:)  = 0._wp 
     442      syage  (:,:,:)  = 0._wp 
     443      sxxage (:,:,:)  = 0._wp 
     444      syyage (:,:,:)  = 0._wp 
     445      sxyage (:,:,:)  = 0._wp 
    574446 
    575447!!!clem 
     
    581453      CALL wrk_dealloc( jpi, jpj,      zht_i_ini, zat_i_ini, zvt_i_ini, zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 
    582454      CALL wrk_dealloc( jpi, jpj,      zswitch ) 
     455      Call wrk_dealloc( 4,             itest ) 
    583456 
    584457   END SUBROUTINE lim_istate 
Note: See TracChangeset for help on using the changeset viewer.