Changeset 590


Ignore:
Timestamp:
10/16/17 20:45:02 (7 years ago)
Author:
dubos
Message:

devel : fix previous commit

Location:
codes/icosagcm/devel/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/diagnostics/diagflux.f90

    r587 r590  
    2020       CALL zero_qfluxt 
    2121    ELSE 
    22        STOP ! FIXME 
    2322       CALL allocate_field(f_qfluxt,  field_u,type_real,llm,0, name="qfluxt") 
    2423       CALL allocate_field(f_qfluxt_lon,  field_t,type_real,llm,0, name="qfluxt_lon") 
  • codes/icosagcm/devel/src/transport/advect.F90

    r583 r590  
    442442 
    443443    CALL trace_start("compute_advect_horiz") 
    444  
    445 #if 1 
    446  
    447444#include "../kernels/advect_horiz.k90" 
    448  
    449 #else 
    450     ! evaluate tracer field at point cc using piecewise linear reconstruction 
    451     ! q(cc)= q0 + gradq.(cc-xyz_i)  with xi centroid of hexagon 
    452     ! ne*hfluxt>0 iff outgoing 
    453     DO l = ll_begin,ll_end 
    454  
    455 !DIR$ SIMD 
    456       DO ij=ij_begin_ext,ij_end_ext 
    457  
    458              IF (ne(ij,right)*hfluxt(ij+u_right,l)>0) THEN  
    459                 ed = cc(ij+u_right,l,:) - xyz_i(ij,:) 
    460 !                qe = qi(ij,l)+sum2(gradq3d(ij,l,:),ed)  
    461                  qe = qi(ij,l)+gradq3d(ij,l,1)*ed(1)+gradq3d(ij,l,2)*ed(2)+gradq3d(ij,l,3)*ed(3)  
    462              ELSE 
    463                 ed = cc(ij+u_right,l,:) - xyz_i(ij+t_right,:) 
    464 !                qe = qi(ij+t_right,l)+sum2(gradq3d(ij+t_right,l,:),ed)  
    465                 qe = qi(ij+t_right,l) + gradq3d(ij+t_right,l,1)*ed(1)+gradq3d(ij+t_right,l,2)*ed(2)+gradq3d(ij+t_right,l,3)*ed(3)  
    466              ENDIF 
    467              qflux(ij+u_right,l) = hfluxt(ij+u_right,l)*qe 
    468               
    469              IF (ne(ij,lup)*hfluxt(ij+u_lup,l)>0) THEN  
    470                 ed = cc(ij+u_lup,l,:) - xyz_i(ij,:) 
    471 !                qe = qi(ij,l)+sum2(gradq3d(ij,l,:),ed) 
    472                 qe = qi(ij,l)  + gradq3d(ij,l,1)*ed(1)+gradq3d(ij,l,2)*ed(2)+gradq3d(ij,l,3)*ed(3)  
    473              ELSE 
    474                 ed = cc(ij+u_lup,l,:) - xyz_i(ij+t_lup,:) 
    475 !                qe = qi(ij+t_lup,l)+sum2(gradq3d(ij+t_lup,l,:),ed)  
    476                 qe = qi(ij+t_lup,l) + gradq3d(ij+t_lup,l,1)*ed(1)+gradq3d(ij+t_lup,l,2)*ed(2)+gradq3d(ij+t_lup,l,3)*ed(3)  
    477              ENDIF 
    478              qflux(ij+u_lup,l) = hfluxt(ij+u_lup,l)*qe  
    479  
    480              IF (ne(ij,ldown)*hfluxt(ij+u_ldown,l)>0) THEN  
    481                 ed = cc(ij+u_ldown,l,:) - xyz_i(ij,:) 
    482 !                qe = qi(ij,l)+sum2(gradq3d(ij,l,:),ed)  
    483                 qe = qi(ij,l) + gradq3d(ij,l,1)*ed(1)+gradq3d(ij,l,2)*ed(2)+gradq3d(ij,l,3)*ed(3)  
    484              ELSE 
    485                 ed = cc(ij+u_ldown,l,:) - xyz_i(ij+t_ldown,:) 
    486 !                qe = qi(ij+t_ldown,l)+sum2(gradq3d(ij+t_ldown,l,:),ed)  
    487                 qe = qi(ij+t_ldown,l)+gradq3d(ij+t_ldown,l,1)*ed(1)+gradq3d(ij+t_ldown,l,2)*ed(2)+gradq3d(ij+t_ldown,l,3)*ed(3)  
    488              ENDIF 
    489              qflux(ij+u_ldown,l) = hfluxt(ij+u_ldown,l)*qe 
    490        END DO 
    491     END DO 
    492  
    493     ! update q and, if update_mass, update mass 
    494     DO l = ll_begin,ll_end 
    495 !DIR$ SIMD 
    496       DO ij=ij_begin,ij_end 
    497              ! sign convention as Ringler et al. (2010) eq. 21 
    498              dmass =   hfluxt(ij+u_right,l)*ne(ij,right)   & 
    499                      + hfluxt(ij+u_lup,l)  *ne(ij,lup)     & 
    500                      + hfluxt(ij+u_ldown,l)*ne(ij,ldown)   & 
    501                      + hfluxt(ij+u_rup,l)  *ne(ij,rup)     & 
    502                      + hfluxt(ij+u_left,l) *ne(ij,left)    & 
    503                      + hfluxt(ij+u_rdown,l)*ne(ij,rdown) 
    504  
    505              dq    =   qflux(ij+u_right,l) *ne(ij,right)   & 
    506                      + qflux(ij+u_lup,l)   *ne(ij,lup)     & 
    507                      + qflux(ij+u_ldown,l) *ne(ij,ldown)   & 
    508                      + qflux(ij+u_rup,l)   *ne(ij,rup)     & 
    509                      + qflux(ij+u_left,l)  *ne(ij,left)    & 
    510                      + qflux(ij+u_rdown,l) *ne(ij,rdown) 
    511  
    512               
    513              newmass = mass(ij,l) - dmass/Ai(ij) 
    514              qi(ij,l) = (qi(ij,l)*mass(ij,l) - dq/Ai(ij) ) / newmass 
    515              IF(update_mass) mass(ij,l) = newmass 
    516  
    517        END DO 
    518     END DO 
    519 #endif 
    520445    CALL trace_end("compute_advect_horiz") 
    521446  CONTAINS 
Note: See TracChangeset for help on using the changeset viewer.