Ignore:
Timestamp:
Jan 27, 2016, 1:43:09 PM (9 years ago)
Author:
Laurent Fairhead
Message:

Correction on the calculation of the surface of the grid at the poles (problem was introduced
in r2222).
Due to the different distribution of OMP tasks in the dynamics and the physics, had to
introduce 2 new logical variables, is_pole_north_phy and is_pole_south_phy, and so decided
to rename the old is_north_pole/is_south_pole to is_north_pole_dyn/is_south_pole_dyn to
stay coherent and, hopefully, clear things up a bit.
LF

Location:
LMDZ5/trunk/libf/dynphy_lonlat
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/dynphy_lonlat/calfis_loc.F

    • Property svn:keywords set to Id
    r2418 r2429  
    417417      kend=klon
    418418     
    419       if (is_north_pole) kstart=2
    420       if (is_south_pole) kend=klon-1
     419      if (is_north_pole_dyn) kstart=2
     420      if (is_south_pole_dyn) kend=klon-1
    421421     
    422422c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     
    446446      jjb=jj_begin_dyn-1
    447447      jje=jj_end_dyn+1
    448       if (is_north_pole) jjb=1
    449       if (is_south_pole) jje=jjm
     448      if (is_north_pole_dyn) jjb=1
     449      if (is_south_pole_dyn) jje=jjm
    450450
    451451c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     
    497497c        V = 1 / pi  *  integrale [ v * sin(long) * d long ]
    498498
    499       if (is_north_pole) then
     499      if (is_north_pole_dyn) then
    500500c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    501501        DO l=1,llm
     
    525525c        V = 1 / pi  *  integrale [ v * sin(long) * d long ]
    526526
    527       if (is_south_pole) then
     527      if (is_south_pole_dyn) then
    528528c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    529529        DO l=1,llm
     
    915915        pdvfi(:,jj_begin,l)=0
    916916               
    917         if (.not. is_south_pole) then
     917        if (.not. is_south_pole_dyn) then
    918918          pdhfi(:,jj_end:jj_end+1,l)=0
    919919          pdqfi(:,jj_end:jj_end+1,l,:)=0
     
    928928        pdpsfi(:,jj_begin)=0   
    929929       
    930        if (.not. is_south_pole) then
     930       if (.not. is_south_pole_dyn) then
    931931         pdpsfi(:,jj_end:jj_end+1)=0
    932932       endif
     
    944944      kend=klon
    945945
    946       if (is_north_pole) kstart=2
    947       if (is_south_pole)  kend=klon-1
     946      if (is_north_pole_dyn) kstart=2
     947      if (is_south_pole_dyn)  kend=klon-1
    948948
    949949!CDIR ON_ADB(index_i)
     
    957957         enddo         
    958958
    959         if (is_north_pole) then
     959        if (is_north_pole_dyn) then
    960960            DO i=1,iip1
    961961              pdpsfi(i,1)    = zdpsrf(1)
     
    963963        endif
    964964       
    965         if (is_south_pole) then
     965        if (is_south_pole_dyn) then
    966966            DO i=1,iip1
    967967              pdpsfi(i,jjp1) = zdpsrf(klon)
     
    978978      kend=klon
    979979
    980       if (is_north_pole) kstart=2
    981       if (is_south_pole)  kend=klon-1
     980      if (is_north_pole_dyn) kstart=2
     981      if (is_south_pole_dyn)  kend=klon-1
    982982
    983983c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     
    994994         enddo         
    995995
    996         if (is_north_pole) then
     996        if (is_north_pole_dyn) then
    997997            DO i=1,iip1
    998998              pdhfi(i,1,l)    = cpp *  zdtfi(1,l)      / ppk(i, 1  ,l)
     
    10001000        endif
    10011001       
    1002         if (is_south_pole) then
     1002        if (is_south_pole_dyn) then
    10031003            DO i=1,iip1
    10041004              pdhfi(i,jjp1,l) = cpp *  zdtfi(klon,l)/ ppk(i,jjp1,l)
     
    10221022!           enddo
    10231023!           
    1024 !           if (is_north_pole) then
     1024!           if (is_north_pole_dyn) then
    10251025!             do i=1,iip1
    10261026!               pdqfi(i,1,l,iq)    = zdqfi(1,l,iq)             
     
    10281028!           endif
    10291029!           
    1030 !           if (is_south_pole) then
     1030!           if (is_south_pole_dyn) then
    10311031!             do i=1,iip1
    10321032!               pdqfi(i,jjp1,l,iq) = zdqfi(klon,l,iq)
     
    10631063            ENDDO
    10641064           
    1065             IF (is_north_pole) then
     1065            IF (is_north_pole_dyn) then
    10661066              DO i=1,iip1
    10671067                pdqfi(i,1,l,iiq)    = zdqfi(1,l,iq)
     
    10691069            ENDIF
    10701070           
    1071             IF (is_south_pole) then
     1071            IF (is_south_pole_dyn) then
    10721072              DO i=1,iip1
    10731073                pdqfi(i,jjp1,l,iiq) = zdqfi(klon,l,iq)
     
    11021102         enddo
    11031103         
    1104          if (is_north_pole) then
     1104         if (is_north_pole_dyn) then
    11051105           DO i=1,iip1
    11061106            pdufi(i,1,l)    = 0.
     
    11081108         endif
    11091109         
    1110          if (is_south_pole) then
     1110         if (is_south_pole_dyn) then
    11111111           DO i=1,iip1
    11121112            pdufi(i,jjp1,l) = 0.
     
    11231123      kend=klon
    11241124
    1125       if (is_north_pole) kstart=2
    1126       if (is_south_pole)  kend=klon-1-iim
     1125      if (is_north_pole_dyn) kstart=2
     1126      if (is_south_pole_dyn)  kend=klon-1-iim
    11271127     
    11281128c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     
    11481148c      v = U * cos(long) + V * SIN(long)
    11491149
    1150       if (is_north_pole) then
     1150      if (is_north_pole_dyn) then
    11511151
    11521152c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     
    11681168      endif   
    11691169     
    1170       if (is_south_pole) then
     1170      if (is_south_pole_dyn) then
    11711171
    11721172c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
  • LMDZ5/trunk/libf/dynphy_lonlat/calfis_p.F

    r2418 r2429  
    393393      kend=klon
    394394     
    395       if (is_north_pole) kstart=2
    396       if (is_south_pole) kend=klon-1
     395      if (is_north_pole_dyn) kstart=2
     396      if (is_south_pole_dyn) kend=klon-1
    397397     
    398398c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     
    422422      jjb=jj_begin_dyn-1
    423423      jje=jj_end_dyn+1
    424       if (is_north_pole) jjb=1
    425       if (is_south_pole) jje=jjm
     424      if (is_north_pole_dyn) jjb=1
     425      if (is_south_pole_dyn) jje=jjm
    426426
    427427c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     
    474474c        V = 1 / pi  *  integrale [ v * sin(long) * d long ]
    475475
    476       if (is_north_pole) then
     476      if (is_north_pole_dyn) then
    477477c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    478478        DO l=1,llm
     
    502502c        V = 1 / pi  *  integrale [ v * sin(long) * d long ]
    503503
    504       if (is_south_pole) then
     504      if (is_south_pole_dyn) then
    505505c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    506506        DO l=1,llm
     
    878878         pdvfi(:,jj_begin,l)=0
    879879         
    880          if (.not. is_south_pole) then
     880         if (.not. is_south_pole_dyn) then
    881881           pdhfi(:,jj_end,l)=0
    882882           pdqfi(:,jj_end,l,:)=0
     
    890890c$OMP MASTER
    891891       pdpsfi(:,jj_begin)=0   
    892        if (.not. is_south_pole) then
     892       if (.not. is_south_pole_dyn) then
    893893         pdpsfi(:,jj_end)=0
    894894       endif
     
    908908      kend=klon
    909909
    910       if (is_north_pole) kstart=2
    911       if (is_south_pole)  kend=klon-1
     910      if (is_north_pole_dyn) kstart=2
     911      if (is_south_pole_dyn)  kend=klon-1
    912912
    913913c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     
    924924         enddo         
    925925
    926         if (is_north_pole) then
     926        if (is_north_pole_dyn) then
    927927            DO i=1,iip1
    928928              pdhfi(i,1,l)    = cpp *  zdtfi(1,l)      / ppk(i, 1  ,l)
     
    930930        endif
    931931       
    932         if (is_south_pole) then
     932        if (is_south_pole_dyn) then
    933933            DO i=1,iip1
    934934              pdhfi(i,jjp1,l) = cpp *  zdtfi(klon,l)/ ppk(i,jjp1,l)
     
    952952!           enddo
    953953!           
    954 !           if (is_north_pole) then
     954!           if (is_north_pole_dyn) then
    955955!             do i=1,iip1
    956956!               pdqfi(i,1,l,iq)    = zdqfi(1,l,iq)             
     
    958958!           endif
    959959!           
    960 !           if (is_south_pole) then
     960!           if (is_south_pole_dyn) then
    961961!             do i=1,iip1
    962962!               pdqfi(i,jjp1,l,iq) = zdqfi(klon,l,iq)
     
    993993            ENDDO
    994994           
    995             IF (is_north_pole) then
     995            IF (is_north_pole_dyn) then
    996996              DO i=1,iip1
    997997                pdqfi(i,1,l,iiq)    = zdqfi(1,l,iq)
     
    999999            ENDIF
    10001000           
    1001             IF (is_south_pole) then
     1001            IF (is_south_pole_dyn) then
    10021002              DO i=1,iip1
    10031003                pdqfi(i,jjp1,l,iiq) = zdqfi(klon,l,iq)
     
    10321032         enddo
    10331033         
    1034          if (is_north_pole) then
     1034         if (is_north_pole_dyn) then
    10351035           DO i=1,iip1
    10361036            pdufi(i,1,l)    = 0.
     
    10381038         endif
    10391039         
    1040          if (is_south_pole) then
     1040         if (is_south_pole_dyn) then
    10411041           DO i=1,iip1
    10421042            pdufi(i,jjp1,l) = 0.
     
    10531053      kend=klon
    10541054
    1055       if (is_north_pole) kstart=2
    1056       if (is_south_pole)  kend=klon-1-iim
     1055      if (is_north_pole_dyn) kstart=2
     1056      if (is_south_pole_dyn)  kend=klon-1-iim
    10571057     
    10581058c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     
    10781078c      v = U * cos(long) + V * SIN(long)
    10791079
    1080       if (is_north_pole) then
     1080      if (is_north_pole_dyn) then
    10811081
    10821082c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     
    10981098      endif   
    10991099     
    1100       if (is_south_pole) then
     1100      if (is_south_pole_dyn) then
    11011101
    11021102c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
  • LMDZ5/trunk/libf/dynphy_lonlat/mod_interface_dyn_phys.F90

    r2351 r2429  
    2222   
    2323    k=1
    24     IF (is_north_pole) THEN
     24    IF (is_north_pole_dyn) THEN
    2525      index_i(k)=1
    2626      index_j(k)=1
     
    2828    ELSE
    2929      DO i=ii_begin,iim
    30         index_i(k)=i
    31         index_j(k)=jj_begin
    32         k=k+1
    33        ENDDO
     30        index_i(k)=i
     31        index_j(k)=jj_begin
     32        k=k+1
     33      ENDDO
    3434    ENDIF
    3535   
    3636    DO j=jj_begin+1,jj_end-1
    3737      DO i=1,iim
    38         index_i(k)=i
    39         index_j(k)=j
    40         k=k+1
     38        index_i(k)=i
     39        index_j(k)=j
     40        k=k+1
    4141      ENDDO
    4242    ENDDO
    4343   
    44     IF (is_south_pole) THEN
     44    IF (is_south_pole_dyn) THEN
    4545      index_i(k)=1
    4646      index_j(k)=jj_end
    4747    ELSE
    4848      DO i=1,ii_end
    49         index_i(k)=i
    50         index_j(k)=jj_end
    51         k=k+1
     49        index_i(k)=i
     50        index_j(k)=jj_end
     51        k=k+1
    5252       ENDDO
    5353    ENDIF
Note: See TracChangeset for help on using the changeset viewer.