Changeset 683 for codes


Ignore:
Timestamp:
03/07/18 11:18:39 (6 years ago)
Author:
dubos
Message:

devel/unstructured : cleanup

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

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/kernels_unst/coriolis.k90

    r658 r683  
    180180      ! this VLOOP iterates over the TRISK stencil 
    181181      SELECT CASE(trisk_deg(edge)) 
    182       CASE(10) 
     182      CASE(4) 
    183183         !DIR$ SIMD 
    184184         DO l = 1, llm 
     
    196196            edge_trisk = trisk(4,edge) 
    197197            du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
    198             itrisk = 5 
    199             edge_trisk = trisk(5,edge) 
    200             du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
    201             itrisk = 6 
    202             edge_trisk = trisk(6,edge) 
    203             du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
    204             itrisk = 7 
    205             edge_trisk = trisk(7,edge) 
    206             du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
    207             itrisk = 8 
    208             edge_trisk = trisk(8,edge) 
    209             du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
    210             itrisk = 9 
    211             edge_trisk = trisk(9,edge) 
    212             du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
    213             itrisk = 10 
    214             edge_trisk = trisk(10,edge) 
    215             du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
    216198            du(l,edge) = du(l,edge) + .5*du_trisk 
    217199         END DO 
    218       CASE(4) 
     200      CASE(10) 
    219201         !DIR$ SIMD 
    220202         DO l = 1, llm 
     
    231213            itrisk = 4 
    232214            edge_trisk = trisk(4,edge) 
     215            du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
     216            itrisk = 5 
     217            edge_trisk = trisk(5,edge) 
     218            du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
     219            itrisk = 6 
     220            edge_trisk = trisk(6,edge) 
     221            du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
     222            itrisk = 7 
     223            edge_trisk = trisk(7,edge) 
     224            du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
     225            itrisk = 8 
     226            edge_trisk = trisk(8,edge) 
     227            du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
     228            itrisk = 9 
     229            edge_trisk = trisk(9,edge) 
     230            du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
     231            itrisk = 10 
     232            edge_trisk = trisk(10,edge) 
    233233            du_trisk = du_trisk + wee(itrisk,edge)*hflux(l,edge_trisk)*(qu(l,edge)+qu(l,edge_trisk)) 
    234234            du(l,edge) = du(l,edge) + .5*du_trisk 
  • codes/icosagcm/devel/src/unstructured/data_unstructured.F90

    r681 r683  
    6161          num(:), & ! number of cells to send to / receive from other MPI ranks 
    6262          cells(:) ! local indices of cells to send/receive 
    63      DBL, ALLOCATABLE :: buf1(:), buf2(:,:), buf3(:,:,:) 
     63     DBL, ALLOCATABLE :: buf2(:,:) 
    6464  END TYPE Halo_transfer 
    6565  TYPE(Halo_transfer), TARGET :: send_info(transfer_max), recv_info(transfer_max) 
  • codes/icosagcm/devel/src/unstructured/timestep_unstructured.F90

    r681 r683  
    135135    FIELD_UL     :: bufu1, bufu2, bufu3,bufu4 
    136136    DBL       :: time1,time2 
    137     INTEGER :: step, stage, ij 
     137    INTEGER :: step, stage, iq, ij 
    138138     
    139139    !CALL CPU_TIME(time1) 
     
    153153           
    154154          CALL update_halo(transfer_primal, rhodz) 
    155           CALL update_halo(transfer_primal, theta_rhodz(:,:,1)) ! FIXME 
     155          DO iq=1, nqdyn 
     156             CALL update_halo(transfer_primal, theta_rhodz(:,:,iq)) 
     157          END DO 
    156158 
    157159          IF(hydrostatic) THEN 
     
    172174 
    173175             CALL compute_caldyn_slow_hydro(rhodz,theta,u, berni,hflux,du_slow(:,:,stage)) 
    174              CALL compute_coriolis(hflux,theta,qu, bufu1, drhodz(:,:,stage), dtheta_rhodz(:,:,:,stage),du_slow(:,:,stage)) 
     176             CALL compute_coriolis(hflux,theta,qu, bufu1, drhodz(:,:,stage), & 
     177                  dtheta_rhodz(:,:,:,stage),du_slow(:,:,stage)) 
    175178             IF(caldyn_eta == eta_mass) THEN 
    176179                CALL caldyn_vert(drhodz(:,:,stage),rhodz,theta,u, & 
     
    179182              
    180183          ELSE ! NH 
     184             CALL update_halo(transfer_primal, geopot) 
     185             CALL update_halo(transfer_primal, W) 
     186              
    181187             CALL compute_theta(mass_col,rhodz,theta_rhodz, theta) 
    182188             CALL compute_caldyn_solver(tauj(stage),rhodz,theta, bufm1,bufm2,bufm3, pk,geopot,W, & 
    183189                  dPhi_fast(:,:,stage), dW_fast(:,:,stage), du_fast(:,:,stage)) 
     190 
    184191             CALL compute_caldyn_fast(tauj(stage), pk,berni,theta,geopot, du_fast(:,:,stage),u) 
     192             CALL update_halo(transfer_edge, u) 
    185193             CALL compute_pvort_only(rhodz,u,qv,qu) 
    186              CALL compute_caldyn_slow_NH(u,rhodz,geopot,W, bufm1,bufm2,bufm3,bufu1,bufu2,bufu3,bufu4, hflux, & 
     194             CALL update_halo(transfer_edge, qu) 
     195 
     196             CALL compute_caldyn_slow_NH(u,rhodz,geopot,W, bufm1,bufm2,bufm3, & 
     197                  bufu1,bufu2,bufu3,bufu4, hflux, & 
    187198                  du_slow(:,:,stage), dPhi_slow(:,:,stage), dW_slow(:,:,stage)) 
    188              CALL compute_coriolis(hflux,theta,qu, bufu1, drhodz(:,:,stage),dtheta_rhodz(:,:,:,stage), du_slow(:,:,stage)) 
     199             CALL compute_coriolis(hflux,theta,qu, bufu1, & 
     200                  drhodz(:,:,stage),dtheta_rhodz(:,:,:,stage), du_slow(:,:,stage)) 
    189201             IF(caldyn_eta == eta_mass) THEN 
    190202                CALL caldyn_vert(drhodz(:,:,stage),rhodz,theta,u, & 
     
    298310    CALL xios_get_handle("icosagcm",ctx_hdl) 
    299311    CALL xios_set_current_context(ctx_hdl) 
    300     !   CALL xios_set_axis_attr("lev",n_glo=llm ,value=lev_value) ; 
    301     !   CALL xios_set_axis_attr("levp1",n_glo=llm+1 ,value=lev_valuep1) ; 
    302     !   CALL xios_set_axis_attr("nq",n_glo=nqtot, value=nq_value) ; 
    303     !   CALL xios_set_domaingroup_attr("i",ni_glo=ncell_tot, ibegin=displ, ni=ncell) 
    304     !   CALL xios_set_domaingroup_attr("i", data_dim=1, type='unstructured' , nvertex=6, i_index=ind_glo) 
    305     !   CALL xios_set_domaingroup_attr("i",lonvalue_1d=lon, latvalue_1d=lat, bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat) 
    306     !   CALL xios_set_domain_attr("u",ni_glo=ncell_tot, ibegin=displ, ni=ncell) 
    307     !   CALL xios_set_domain_attr("u", data_dim=1, type='unstructured' , nvertex=2, i_index=ind_glo) 
    308     !  CALL xios_set_domain_attr("u",lonvalue_1d=lon, latvalue_1d=lat, bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat) 
    309     !   CALL xios_set_domain_attr("v",ni_glo=ncell_tot, ibegin=displ, ni=ncell) 
    310     !   CALL xios_set_domain_attr("v", data_dim=1, type='unstructured' , nvertex=3) 
    311     !   CALL xios_set_domain_attr("v",lonvalue_1d=lon, latvalue_1d=lat, bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat) 
    312     !   CALL xios_set_timestep(dtime)   
    313     !   CALL xios_set_fieldgroup_attr("standard_output", freq_op=itau_out*xios_timestep, freq_offset=(itau_out-1)*xios_timestep)     
    314     ! CALL xios_close_context_definition() 
    315      
    316     ! PRINT *, 'Read data' 
    317     ! CALL xios_recv_field(name,field) 
    318      
    319     ! PRINT *,'Write data' 
    320     ! CALL xios_send_field(name,field_tmp) 
    321      
    322    !   PRINT *, 'Flush to disk, clean up and die' 
    323    !   CALL xios_context_finalize 
    324312  END SUBROUTINE setup_xios 
    325 ! 
     313 
    326314  SUBROUTINE call_xios_set_timestep(dt) BINDC(xios_set_timestep) 
    327315    DBL, VALUE :: dt 
Note: See TracChangeset for help on using the changeset viewer.