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

Ignore:
Timestamp:
2017-02-18T10:02:03+01:00 (7 years ago)
Author:
mocavero
Message:

update trunk with OpenMP parallelization

File:
1 edited

Legend:

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

    r7646 r7698  
    130130         WRITE(zchar,'(I2.2)') jl 
    131131         znam = 'v_i'//'_htc'//zchar 
    132          z2d(:,:) = v_i(:,:,jl) 
     132!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     133         DO jj = 1, jpj 
     134            DO ji = 1, jpi 
     135               z2d(ji,jj) = v_i(ji,jj,jl) 
     136            END DO 
     137         END DO 
    133138         CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    134139         znam = 'v_s'//'_htc'//zchar 
    135          z2d(:,:) = v_s(:,:,jl) 
     140!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     141         DO jj = 1, jpj 
     142            DO ji = 1, jpi 
     143               z2d(ji,jj) = v_s(ji,jj,jl) 
     144            END DO 
     145         END DO 
    136146         CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    137147         znam = 'smv_i'//'_htc'//zchar 
    138          z2d(:,:) = smv_i(:,:,jl) 
     148!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     149         DO jj = 1, jpj 
     150            DO ji = 1, jpi 
     151               z2d(ji,jj) = smv_i(ji,jj,jl) 
     152            END DO 
     153         END DO 
    139154         CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    140155         znam = 'oa_i'//'_htc'//zchar 
    141          z2d(:,:) = oa_i(:,:,jl) 
     156!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     157         DO jj = 1, jpj 
     158            DO ji = 1, jpi 
     159               z2d(ji,jj) = oa_i(ji,jj,jl) 
     160            END DO 
     161         END DO 
    142162         CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    143163         znam = 'a_i'//'_htc'//zchar 
    144          z2d(:,:) = a_i(:,:,jl) 
     164!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     165         DO jj = 1, jpj 
     166            DO ji = 1, jpi 
     167               z2d(ji,jj) = a_i(ji,jj,jl) 
     168            END DO 
     169         END DO 
    145170         CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    146171         znam = 't_su'//'_htc'//zchar 
    147          z2d(:,:) = t_su(:,:,jl) 
     172!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     173         DO jj = 1, jpj 
     174            DO ji = 1, jpi 
     175               z2d(ji,jj) = t_su(ji,jj,jl) 
     176            END DO 
     177         END DO 
    148178         CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    149179      END DO 
     
    152182         WRITE(zchar,'(I2.2)') jl 
    153183         znam = 'tempt_sl1'//'_htc'//zchar 
    154          z2d(:,:) = e_s(:,:,1,jl) 
     184!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     185         DO jj = 1, jpj 
     186            DO ji = 1, jpi 
     187               z2d(ji,jj) = e_s(ji,jj,1,jl) 
     188            END DO 
     189         END DO 
    155190         CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    156191      END DO 
     
    161196            WRITE(zchar1,'(I2.2)') jk 
    162197            znam = 'tempt'//'_il'//zchar1//'_htc'//zchar 
    163             z2d(:,:) = e_i(:,:,jk,jl) 
     198!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     199            DO jj = 1, jpj 
     200               DO ji = 1, jpi 
     201                  z2d(ji,jj) = e_i(ji,jj,jk,jl) 
     202            END DO 
     203         END DO 
    164204            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    165205         END DO 
     
    181221            WRITE(zchar,'(I2.2)') jl 
    182222            znam = 'sxice'//'_htc'//zchar 
    183             z2d(:,:) = sxice(:,:,jl) 
     223!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     224            DO jj = 1, jpj 
     225               DO ji = 1, jpi 
     226                  z2d(ji,jj) = sxice(ji,jj,jl) 
     227               END DO 
     228            END DO 
    184229            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    185230            znam = 'syice'//'_htc'//zchar 
    186             z2d(:,:) = syice(:,:,jl) 
     231!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     232            DO jj = 1, jpj 
     233               DO ji = 1, jpi 
     234                  z2d(ji,jj) = syice(ji,jj,jl) 
     235               END DO 
     236            END DO 
    187237            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    188238            znam = 'sxxice'//'_htc'//zchar 
    189             z2d(:,:) = sxxice(:,:,jl) 
     239!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     240            DO jj = 1, jpj 
     241               DO ji = 1, jpi 
     242                  z2d(ji,jj) = sxxice(ji,jj,jl) 
     243               END DO 
     244            END DO 
    190245            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    191246            znam = 'syyice'//'_htc'//zchar 
    192             z2d(:,:) = syyice(:,:,jl) 
     247!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     248            DO jj = 1, jpj 
     249               DO ji = 1, jpi 
     250                  z2d(ji,jj) = syyice(ji,jj,jl) 
     251               END DO 
     252            END DO 
    193253            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    194254            znam = 'sxyice'//'_htc'//zchar 
    195             z2d(:,:) = sxyice(:,:,jl) 
     255!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     256            DO jj = 1, jpj 
     257               DO ji = 1, jpi 
     258                  z2d(ji,jj) = sxyice(ji,jj,jl) 
     259               END DO 
     260            END DO 
    196261            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    197262            znam = 'sxsn'//'_htc'//zchar 
    198             z2d(:,:) = sxsn(:,:,jl) 
     263!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     264            DO jj = 1, jpj 
     265               DO ji = 1, jpi 
     266                  z2d(ji,jj) = sxsn(ji,jj,jl) 
     267               END DO 
     268            END DO 
    199269            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    200270            znam = 'sysn'//'_htc'//zchar 
    201             z2d(:,:) = sysn(:,:,jl) 
     271!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     272            DO jj = 1, jpj 
     273               DO ji = 1, jpi 
     274                  z2d(ji,jj) = sysn(ji,jj,jl) 
     275               END DO 
     276            END DO 
    202277            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    203278            znam = 'sxxsn'//'_htc'//zchar 
    204             z2d(:,:) = sxxsn(:,:,jl) 
     279!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     280            DO jj = 1, jpj 
     281               DO ji = 1, jpi 
     282                  z2d(ji,jj) = sxxsn(ji,jj,jl) 
     283               END DO 
     284            END DO 
    205285            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    206286            znam = 'syysn'//'_htc'//zchar 
    207             z2d(:,:) = syysn(:,:,jl) 
     287!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     288            DO jj = 1, jpj 
     289               DO ji = 1, jpi 
     290                  z2d(ji,jj) = syysn(ji,jj,jl) 
     291               END DO 
     292            END DO 
    208293            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    209294            znam = 'sxysn'//'_htc'//zchar 
    210             z2d(:,:) = sxysn(:,:,jl) 
     295!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     296            DO jj = 1, jpj 
     297               DO ji = 1, jpi 
     298                  z2d(ji,jj) = sxysn(ji,jj,jl) 
     299               END DO 
     300            END DO 
    211301            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    212302            znam = 'sxa'//'_htc'//zchar 
    213             z2d(:,:) = sxa(:,:,jl) 
     303!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     304            DO jj = 1, jpj 
     305               DO ji = 1, jpi 
     306                  z2d(ji,jj) = sxa(ji,jj,jl) 
     307               END DO 
     308            END DO 
    214309            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    215310            znam = 'sya'//'_htc'//zchar 
    216             z2d(:,:) = sya(:,:,jl) 
     311!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     312            DO jj = 1, jpj 
     313               DO ji = 1, jpi 
     314                  z2d(ji,jj) = sya(ji,jj,jl) 
     315               END DO 
     316            END DO 
    217317            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    218318            znam = 'sxxa'//'_htc'//zchar 
    219             z2d(:,:) = sxxa(:,:,jl) 
     319!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     320            DO jj = 1, jpj 
     321               DO ji = 1, jpi 
     322                  z2d(ji,jj) = sxxa(ji,jj,jl) 
     323               END DO 
     324            END DO 
    220325            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    221326            znam = 'syya'//'_htc'//zchar 
    222             z2d(:,:) = syya(:,:,jl) 
     327!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     328            DO jj = 1, jpj 
     329               DO ji = 1, jpi 
     330                  z2d(ji,jj) = syya(ji,jj,jl) 
     331               END DO 
     332            END DO 
    223333            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    224334            znam = 'sxya'//'_htc'//zchar 
    225             z2d(:,:) = sxya(:,:,jl) 
     335!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     336            DO jj = 1, jpj 
     337               DO ji = 1, jpi 
     338                  z2d(ji,jj) = sxya(ji,jj,jl) 
     339               END DO 
     340            END DO 
    226341            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    227342            znam = 'sxc0'//'_htc'//zchar 
    228             z2d(:,:) = sxc0(:,:,jl) 
     343!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     344            DO jj = 1, jpj 
     345               DO ji = 1, jpi 
     346                  z2d(ji,jj) = sxc0(ji,jj,jl) 
     347               END DO 
     348            END DO 
    229349            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    230350            znam = 'syc0'//'_htc'//zchar 
    231             z2d(:,:) = syc0(:,:,jl) 
     351!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     352            DO jj = 1, jpj 
     353               DO ji = 1, jpi 
     354                  z2d(ji,jj) = syc0(ji,jj,jl) 
     355               END DO 
     356            END DO 
    232357            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    233358            znam = 'sxxc0'//'_htc'//zchar 
    234             z2d(:,:) = sxxc0(:,:,jl) 
     359!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     360            DO jj = 1, jpj 
     361               DO ji = 1, jpi 
     362                  z2d(ji,jj) = sxxc0(ji,jj,jl) 
     363               END DO 
     364            END DO 
    235365            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    236366            znam = 'syyc0'//'_htc'//zchar 
    237             z2d(:,:) = syyc0(:,:,jl) 
     367!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     368            DO jj = 1, jpj 
     369               DO ji = 1, jpi 
     370                  z2d(ji,jj) = syyc0(ji,jj,jl) 
     371               END DO 
     372            END DO 
    238373            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    239374            znam = 'sxyc0'//'_htc'//zchar 
    240             z2d(:,:) = sxyc0(:,:,jl) 
     375!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     376            DO jj = 1, jpj 
     377               DO ji = 1, jpi 
     378                  z2d(ji,jj) = sxyc0(ji,jj,jl) 
     379               END DO 
     380            END DO 
    241381            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    242382            znam = 'sxsal'//'_htc'//zchar 
    243             z2d(:,:) = sxsal(:,:,jl) 
     383!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     384            DO jj = 1, jpj 
     385               DO ji = 1, jpi 
     386                  z2d(ji,jj) = sxsal(ji,jj,jl) 
     387               END DO 
     388            END DO 
    244389            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    245390            znam = 'sysal'//'_htc'//zchar 
    246             z2d(:,:) = sysal(:,:,jl) 
     391!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     392            DO jj = 1, jpj 
     393               DO ji = 1, jpi 
     394                  z2d(ji,jj) = sysal(ji,jj,jl) 
     395               END DO 
     396            END DO 
    247397            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    248398            znam = 'sxxsal'//'_htc'//zchar 
    249             z2d(:,:) = sxxsal(:,:,jl) 
     399!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     400            DO jj = 1, jpj 
     401               DO ji = 1, jpi 
     402                  z2d(ji,jj) = sxxsal(ji,jj,jl) 
     403               END DO 
     404            END DO 
    250405            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    251406            znam = 'syysal'//'_htc'//zchar 
    252             z2d(:,:) = syysal(:,:,jl) 
     407!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     408            DO jj = 1, jpj 
     409               DO ji = 1, jpi 
     410                  z2d(ji,jj) = syysal(ji,jj,jl) 
     411               END DO 
     412            END DO 
    253413            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    254414            znam = 'sxysal'//'_htc'//zchar 
    255             z2d(:,:) = sxysal(:,:,jl) 
     415!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     416            DO jj = 1, jpj 
     417               DO ji = 1, jpi 
     418                  z2d(ji,jj) = sxysal(ji,jj,jl) 
     419               END DO 
     420            END DO 
    256421            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    257422            znam = 'sxage'//'_htc'//zchar 
    258             z2d(:,:) = sxage(:,:,jl) 
     423!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     424            DO jj = 1, jpj 
     425               DO ji = 1, jpi 
     426                  z2d(ji,jj) = sxage(ji,jj,jl) 
     427               END DO 
     428            END DO 
    259429            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    260430            znam = 'syage'//'_htc'//zchar 
    261             z2d(:,:) = syage(:,:,jl) 
     431!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     432            DO jj = 1, jpj 
     433               DO ji = 1, jpi 
     434                  z2d(ji,jj) = syage(ji,jj,jl) 
     435               END DO 
     436            END DO 
    262437            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    263438            znam = 'sxxage'//'_htc'//zchar 
    264             z2d(:,:) = sxxage(:,:,jl) 
     439!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     440            DO jj = 1, jpj 
     441               DO ji = 1, jpi 
     442                  z2d(ji,jj) = sxxage(ji,jj,jl) 
     443               END DO 
     444            END DO 
    265445            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    266446            znam = 'syyage'//'_htc'//zchar 
    267             z2d(:,:) = syyage(:,:,jl) 
     447!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     448            DO jj = 1, jpj 
     449               DO ji = 1, jpi 
     450                  z2d(ji,jj) = syyage(ji,jj,jl) 
     451               END DO 
     452            END DO 
    268453            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    269454            znam = 'sxyage'//'_htc'//zchar 
    270             z2d(:,:) = sxyage(:,:,jl) 
     455!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     456            DO jj = 1, jpj 
     457               DO ji = 1, jpi 
     458                  z2d(ji,jj) = sxyage(ji,jj,jl) 
     459               END DO 
     460            END DO 
    271461            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    272462         END DO 
     
    283473               WRITE(zchar1,'(I2.2)') jk 
    284474               znam = 'sxe'//'_il'//zchar1//'_htc'//zchar 
    285                z2d(:,:) = sxe(:,:,jk,jl) 
     475!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     476               DO jj = 1, jpj 
     477                  DO ji = 1, jpi 
     478                     z2d(ji,jj) = sxe(ji,jj,jk,jl) 
     479                  END DO 
     480               END DO 
    286481               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    287482               znam = 'sye'//'_il'//zchar1//'_htc'//zchar 
    288                z2d(:,:) = sye(:,:,jk,jl) 
     483!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     484               DO jj = 1, jpj 
     485                  DO ji = 1, jpi 
     486                     z2d(ji,jj) = sye(ji,jj,jk,jl) 
     487                  END DO 
     488               END DO 
    289489               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    290490               znam = 'sxxe'//'_il'//zchar1//'_htc'//zchar 
    291                z2d(:,:) = sxxe(:,:,jk,jl) 
     491!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     492               DO jj = 1, jpj 
     493                  DO ji = 1, jpi 
     494                     z2d(ji,jj) = sxxe(ji,jj,jk,jl) 
     495                  END DO 
     496               END DO 
    292497               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    293498               znam = 'syye'//'_il'//zchar1//'_htc'//zchar 
    294                z2d(:,:) = syye(:,:,jk,jl) 
     499!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     500               DO jj = 1, jpj 
     501                  DO ji = 1, jpi 
     502                     z2d(ji,jj) = syye(ji,jj,jk,jl) 
     503                  END DO 
     504               END DO 
    295505               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    296506               znam = 'sxye'//'_il'//zchar1//'_htc'//zchar 
    297                z2d(:,:) = sxye(:,:,jk,jl) 
     507!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     508               DO jj = 1, jpj 
     509                  DO ji = 1, jpi 
     510                     z2d(ji,jj) = sxye(ji,jj,jk,jl) 
     511                  END DO 
     512               END DO 
    298513               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
    299514            END DO 
Note: See TracChangeset for help on using the changeset viewer.