Changeset 650 for codes/icosagcm/devel/Python/src/unstructured/macros.jin
- Timestamp:
- 12/22/17 01:35:23 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/Python/src/unstructured/macros.jin
r647 r650 86 86 {%- endmacro %} 87 87 88 {# ---------------------- PRELOAD STENCIL INDICES ---------------------- #} 89 90 {% macro get_edges(thecode, mesh,degree) %} 91 {% for iedge in range(1,degree+1) %} 92 {{ 'edge%d = %s_edge(%d,ij)'%(iedge,mesh,iedge) if 'EDGE' in thecode }} 93 {% endfor %} 94 {% for iedge in range(1,degree+1) %} 95 {{ 'le_de%d = le_de(edge%d)'%(iedge,iedge) if 'LE_DE' in thecode }} 96 {% endfor %} 97 {% for iedge in range(1,degree+1) %} 98 {{ 'sign%d = %s_ne(%d,ij)'%(iedge,mesh,iedge) if 'SIGN' in thecode }} 99 {% endfor %} 100 {% for iedge in range(1,degree+1) %} 101 {{ 'ij_up%d = up(edge%d)'%(iedge,iedge) if 'VERTEX1' in thecode }} 102 {% endfor %} 103 {% for iedge in range(1,degree+1) %} 104 {{ 'ij_down%d = down(edge%d)'%(iedge,iedge) if 'VERTEX2' in thecode }} 105 {% endfor %} 106 {% endmacro %} 107 108 {% macro get_vertices(thecode, mesh,degree) %} 109 {% for ivertex in range(1,degree+1) %} 110 {{ 'vertex%d = %s_vertex(%d,ij)'%(ivertex,mesh,ivertex) if 'VERTEX' in thecode }} 111 {% endfor %} 112 {% endmacro %} 113 88 114 {# ------------------------------ MESHES --------------------------- #} 89 90 {% macro get_edges(thecode, mesh,degree) %}91 {% for iedge in range(1,degree+1) %}92 {{ 'edge%d = %s_edge(%d,ij)'%(iedge,mesh,iedge) }}93 {% endfor %}94 {% for iedge in range(1,degree+1) %}95 {{ 'le_de%d = le_de(edge%d)'%(iedge,iedge) }}96 {% endfor %}97 {% for iedge in range(1,degree+1) %}98 {{ 'sign%d = %s_ne(%d,ij)'%(iedge,mesh,iedge) }}99 {% endfor %}100 {% for iedge in range(1,degree+1) %}101 {{ 'ij_up%d = up(edge%d)'%(iedge,iedge) if 'VERTEX1' in thecode }}102 {% endfor %}103 {% for iedge in range(1,degree+1) %}104 {{ 'ij_down%d = down(edge%d)'%(iedge,iedge) if 'VERTEX2' in thecode }}105 {% endfor %}106 {% endmacro %}107 115 108 116 {# argument 'code' is the body enclosed by ON_XXX ... END_BLOCK ; it takes arguments : mesh,degree=0 #} … … 148 156 SELECT CASE(dual_deg(ij)) 149 157 CASE(3) 158 {{ get_edges(thecode, mesh, 3) }} 159 {{ get_vertices(thecode,mesh,3) }} 150 160 {{ vloop(mesh, lrange, flags, code, 3) }} 151 161 CASE(4) 162 {{ get_edges(thecode, mesh, 4) }} 163 {{ get_vertices(thecode,mesh,4) }} 152 164 {{ vloop(mesh, lrange, flags, code, 4) }} 153 165 CASE DEFAULT … … 243 255 {% set thecode = caller(mesh) %} 244 256 {{ define('EDGE', 'l,edge') }} 245 {{ define('LE_DE', 'le_de(edge)') }}246 {{ define('SIGN', '1.') }}247 {{ define('CELL1', 'l,ij_left') }}248 {{ define('CELL2', 'l,ij_right') }}249 {{ define('VERTEX1', 'l,ij_down') }}250 {{ define('VERTEX2', 'l,ij_up') }}257 {{ cdef(thecode, 'LE_DE', 'le_de(edge)') }} 258 {{ cdef(thecode, 'SIGN', '1.') }} 259 {{ cdef(thecode, 'CELL1', 'l,ij_left') }} 260 {{ cdef(thecode, 'CELL2', 'l,ij_right') }} 261 {{ cdef(thecode, 'VERTEX1', 'l,ij_down') }} 262 {{ cdef(thecode, 'VERTEX2', 'l,ij_up') }} 251 263 !$OMP DO SCHEDULE(STATIC) 252 264 DO edge = 1, edge_num … … 258 270 END DO 259 271 !$OMP END DO 260 {{ undef('EDGE') }} 261 {{ undef('LE_DE') }} 262 {{ undef('SIGN') }} 263 {{ undef('CELL1') }} 264 {{ undef('CELL2') }} 265 {{ undef('VERTEX1') }} 266 {{ undef('VERTEX2') }} 272 {{ cundef(thecode, ('EDGE','LE_DE','SIGN','CELL1','CELL2','VERTEX1','VERTEX2') ) }} 267 273 {%- endmacro %} 268 274 … … 272 278 {% if degree>1 %} 273 279 {% for iedge in range(1,degree+1) %} 274 {{ define('EDGE', 'l,edge%d'%iedge) }}275 {{ define('SIGN', 'sign%d'%iedge) }}276 {{ define('LE_DE', 'le_de%d'%iedge) }}277 {{ define('VERTEX1', 'l,ij_up%d'%iedge) }}278 {{ define('VERTEX2', 'l,ij_down%d'%iedge) }}280 {{ cdef(thecode, 'EDGE', 'l,edge%d'%iedge) }} 281 {{ cdef(thecode, 'SIGN', 'sign%d'%iedge) }} 282 {{ cdef(thecode, 'LE_DE', 'le_de%d'%iedge) }} 283 {{ cdef(thecode, 'VERTEX1', 'l,ij_up%d'%iedge) }} 284 {{ cdef(thecode, 'VERTEX2', 'l,ij_down%d'%iedge) }} 279 285 {{ thecode }} 280 286 {% endfor %} 281 287 {% else %} 282 {{ define('EDGE', 'l,edge') }}283 {{ define('SIGN', mesh + '_ne(iedge,ij)') }}284 {{ define('LE_DE', 'le_de(edge)') }}285 {{ define('VERTEX1', 'l,ij_up') }}286 {{ define('VERTEX2', 'l,ij_down') }}288 {{ cdef(thecode, 'EDGE', 'l,edge') }} 289 {{ cdef(thecode, 'SIGN', mesh + '_ne(iedge,ij)') }} 290 {{ cdef(thecode, 'LE_DE', 'le_de(edge)') }} 291 {{ cdef(thecode, 'VERTEX1', 'l,ij_up') }} 292 {{ cdef(thecode, 'VERTEX2', 'l,ij_down') }} 287 293 DO iedge = 1, {{ mesh }}_deg(ij) 288 294 edge = {{ mesh }}_edge(iedge,ij) … … 292 298 END DO 293 299 {% endif %} 294 295 {{ undef('EDGE') }} 296 {{ undef('SIGN') }} 297 {{ undef('LE_DE') }} 298 {{ undef('VERTEX1') }} 299 {{ undef('VERTEX2') }} 300 {{ cundef(thecode, ('EDGE', 'SIGN', 'LE_DE', 'VERTEX1', 'VERTEX2') ) }} 300 301 {%- endmacro %} 301 302 … … 320 321 {% macro forall_vertices(mesh,degree) -%} 321 322 {% set thecode = caller() %} 322 {{ define('VERTEX', 'l,vertex') }}323 323 {% if degree>1 %} 324 324 {% for ivertex in range(1,degree+1) %} 325 ivertex = {{ ivertex}}326 vertex = {{ mesh }}_vertex({{ ivertex }},ij) 325 {{ define('RIV2', 'Riv2(%d,ij)'%ivertex ) }} 326 {{ define('VERTEX', 'l,vertex%d'%ivertex ) }} 327 327 {{ thecode }} 328 328 {% endfor %} 329 329 {% else %} 330 {{ define('RIV2', 'Riv2(ivertex,ij)') }} 331 {{ define('VERTEX', 'l,vertex') }} 330 332 DO ivertex = 1, {{ mesh }}_deg(ij) 331 333 vertex = {{ mesh }}_vertex(ivertex,ij) … … 334 336 {% endif %} 335 337 {{ undef('VERTEX') }} 338 {{ undef('RIV2') }} 336 339 {%- endmacro %} 337 340 … … 357 360 #define _FALSE_ (0==1) 358 361 359 #define RIV2 Riv2(ivertex,ij)360 362 #define AI Ai(ij) 361 363 #define AV Av(ij)
Note: See TracChangeset
for help on using the changeset viewer.