Ignore:
Timestamp:
12/10/18 12:48:58 (6 years ago)
Author:
jisesh
Message:

devel/unstructured : added kernel for curl curl ; used by Baroclinic_3D_ullrich

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

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/Python/src/kernels_transport.jin

    r784 r792  
    312312 
    313313KERNEL(scalar_laplacian) 
    314  
    315314  FORALL_CELLS_EXT() 
    316315    ON_EDGES 
     
    330329 
    331330END_BLOCK 
     331 
     332KERNEL(curl_laplacian) 
     333  FORALL_CELLS_EXT() 
     334    ON_DUAL 
     335      etav = 0.d0 
     336      FORALL_EDGES 
     337         etav = etav + SIGN*u(EDGE) 
     338      END_BLOCK 
     339      qv(DUAL_CELL) = etav/AV 
     340    END_BLOCK 
     341  END_BLOCK 
     342 
     343  FORALL_CELLS_EXT() 
     344    ON_EDGES 
     345       curlcurl(EDGE) = SIGN*(qv(VERTEX1)-qv(VERTEX2))*(1./LE_DE) 
     346    END_BLOCK 
     347  END_BLOCK 
     348 
     349END_BLOCK 
  • codes/icosagcm/devel/Python/src/unstructured.pyx

    r784 r792  
    7878                     ['dynamico_caldyn_unstructured', c_num, c_void_p,20], 
    7979                     ['dynamico_scalar_laplacian', c_void_p,2], 
     80                     ['dynamico_curl_laplacian', c_void_p,2], 
    8081                     ['dynamico_partition_graph', c_int,2, c_void_p,3, c_int, c_void_p], 
    8182                     ['dynamico_init_transfer', c_int, c_int,2,c_void_p,3, c_int,2,c_void_p,3], 
  • codes/icosagcm/devel/Python/test/py/Baroclinic_3D_ullrich.py

    r791 r792  
    201201                caldyn_step.next() 
    202202                davies.relax(llm, caldyn_step, flow0) 
    203                 m,S = caldyn_step.mass, caldyn_step.theta_rhodz 
     203                m,S,u = caldyn_step.mass, caldyn_step.theta_rhodz, caldyn_step.u 
    204204                s = S/m 
    205                 laps = mesh.field_mass() 
    206                 bilaps = mesh.field_mass() 
     205                laps, bilaps = mesh.field_mass(), mesh.field_mass() 
     206                lapu, bilapu = mesh.field_u(), mesh.field_u() 
    207207                unst.ker.dynamico_scalar_laplacian(s,laps) 
    208208                unst.ker.dynamico_scalar_laplacian(laps,bilaps) 
     209                unst.ker.dynamico_curl_laplacian(u,lapu) 
     210                unst.ker.dynamico_curl_laplacian(lapu,bilapu) 
    209211                caldyn_step.theta_rhodz[:] = S - dt*kappa*bilaps*m # Euler step 
     212                caldyn_step.u[:] = u - dt*kappa*bilapu # Euler step 
     213 
    210214            return (caldyn_step.mass.copy(), caldyn_step.theta_rhodz.copy(), caldyn_step.u.copy(), 
    211215                    caldyn_step.geopot.copy(), caldyn_step.W.copy()) 
     
    230234        v = mesh.field_mass() # specific volume (diagnosed) 
    231235         
    232         for i in range(Nslice): 
     236        for i in range(Nslice+1): 
    233237            context.update_calendar(i+1) 
    234238 
Note: See TracChangeset for help on using the changeset viewer.