|
| #define | CHOMBO_VERSION_MAJOR 3 |
| |
| #define | CHOMBO_VERSION_MINOR 1 |
| |
| #define | FORTRAN_NAME(NAME, name) |
| | Used to declare a fortran routine in a portable way. More...
|
| |
| #define | CHF_MULTIDO(box, i, j, k) |
| | Used in ChomboFortran to write dimension-independent loops. More...
|
| |
| #define | CHF_ENDDO |
| |
| #define | CHF_INT(i) &i |
| |
| #define | CHF_CONST_INT(i) &i |
| |
| #define | CHF_REAL(r) &r |
| |
| #define | CHF_CONST_REAL(r) &r |
| |
| #define | CHF_COMPLEX(c) &c |
| |
| #define | CHF_CONST_COMPLEX(c) &c |
| |
| #define | CHF_I1D( ia, dimen) ia,(const int*)chfptr(dimen-1) |
| |
| #define | CHF_CONST_I1D(ia, dimen) ia,(const int*)chfptr(dimen-1) |
| |
| #define | CHF_R1D( ra, dimen) ra,(const int*)chfptr(dimen-1) |
| |
| #define | CHF_CONST_R1D(ra, dimen) ra,(const int*)chfptr(dimen-1) |
| |
| #define | CHF_C1D( ra, dimen) ra,(const int*)chfptr(dimen-1) |
| |
| #define | CHF_CONST_C1D(ra, dimen) ra,(const int*)chfptr(dimen-1) |
| |
| #define | CHF_IARRAY(rank, ia, ...) ia,CHF_ARRAY_X(rank, __VA_ARGS__) |
| |
| #define | CHF_CONST_IARRAY(rank, ia, ...) ia,CHF_ARRAY_X(rank, __VA_ARGS__) |
| |
| #define | CHF_RARRAY(rank, ia, ...) ia,CHF_ARRAY_X(rank, __VA_ARGS__) |
| |
| #define | CHF_CONST_RARRAY(rank, ia, ...) ia,CHF_ARRAY_X(rank, __VA_ARGS__) |
| |
| #define | CHF_CARRAY(rank, ia, ...) ia,CHF_ARRAY_X(rank, __VA_ARGS__) |
| |
| #define | CHF_CONST_CARRAY(rank, ia, ...) ia,CHF_ARRAY_X(rank, __VA_ARGS__) |
| |
| #define | CHF_INTVECT(a) a.dataPtr( ) |
| |
| #define | CHF_CONST_INTVECT(a) a.dataPtr( ) |
| |
| #define | CHF_REALVECT(a) a.dataPtr( ) |
| |
| #define | CHF_CONST_REALVECT(a) a.dataPtr( ) |
| |
| #define | CHF_COMPLEXVECT(a) a.dataPtr( ) |
| |
| #define | CHF_CONST_COMPLEXVECT(a) a.dataPtr( ) |
| |
| #define | CHF_VI( v) &v[0],(const int*)chfptr(v.size()-1) |
| |
| #define | CHF_CONST_VI(v) &v[0],(const int*)chfptr(v.size()-1) |
| |
| #define | CHF_VR( v) &v[0],(const int*)chfptr(v.size()-1) |
| |
| #define | CHF_CONST_VR(v) &v[0],(const int*)chfptr(v.size()-1) |
| |
| #define | CHF_VC( v) &v[0],(const int*)chfptr(v.size()-1) |
| |
| #define | CHF_CONST_VC(v) &v[0],(const int*)chfptr(v.size()-1) |
| |
| #define | CHF_BOX(b) |
| |
| #define | CHF_FIA(a) |
| |
| #define | CHF_FIA_SHIFT(a, iv) |
| |
| #define | CHF_FRA(a) |
| |
| #define | CHF_FRA_SHIFT(a, iv) |
| |
| #define | CHF_FCA(a) |
| |
| #define | CHF_CONST_FIA(a) |
| |
| #define | CHF_CONST_FIA_SHIFT(a, iv) |
| |
| #define | CHF_CONST_FRA(a) |
| |
| #define | CHF_CONST_FRA_SHIFT(a, iv) |
| |
| #define | CHF_CONST_FCA(a) |
| |
| #define | CHF_FIA1(a, n) |
| |
| #define | CHF_FIA1_SHIFT(a, n, iv) |
| |
| #define | CHF_FRA1(a, n) |
| |
| #define | CHF_FRA1_SHIFT(a, n, iv) |
| |
| #define | CHF_FCA1(a, n) |
| |
| #define | CHF_CONST_FIA1(a, n) |
| |
| #define | CHF_CONST_FIA1_SHIFT(a, n, iv) |
| |
| #define | CHF_CONST_FRA1(a, n) |
| |
| #define | CHF_CONST_FRA1_SHIFT(a, n, iv) |
| |
| #define | CHF_CONST_FCA1(a, n) |
| |
| #define | CHF_ICHARRAY(rank, ia) ia.begin(),CHF_CHARRAY_X(rank, ia) |
| |
| #define | CHF_CONST_ICHARRAY(rank, ia) ia.begin(),CHF_CHARRAY_X(rank, ia) |
| |
| #define | CHF_RCHARRAY(rank, ra) ra.begin(),CHF_CHARRAY_X(rank, ra) |
| |
| #define | CHF_CONST_RCHARRAY(rank, ra) ra.begin(),CHF_CHARRAY_X(rank, ra) |
| |
| #define | CHF_CCHARRAY(rank, ra) ra.begin(),CHF_CHARRAY_X(rank, ra) |
| |
| #define | CHF_CONST_CCHARRAY(rank, ra) ra.begin(),CHF_CHARRAY_X(rank, ra) |
| |
| #define | CHF_VECTOR(ra) ra.begin(),CHF_CHARRAY_X(1, ra) |
| |
| #define | CHF_CONST_VECTOR(ra) ra.begin(),CHF_CHARRAY_X(1, ra) |
| |
| #define | CHF_MATRIX(ra) ra.begin(),CHF_CHARRAY_X(2, ra) |
| |
| #define | CHF_CONST_MATRIX(ra) ra.begin(),CHF_CHARRAY_X(2, ra) |
| |
| #define | CH_SPACEDIM |
| |
| #define | CH_SPACEDIM 3 |
| |
| #define CHF_MULTIDO |
( |
|
box, |
|
|
|
i, |
|
|
|
j, |
|
|
|
k |
|
) |
| |
Used in ChomboFortran to write dimension-independent loops.
CHF_MULTIDO is used to iterate over a box in a dimension independent fashion by setting up nested Fortran do loops and CHF_ENDDO is used to terminate those do loops correctly. Specifically, CHF_MULTIDO[box;i;j;k] will generate a do loop for i nested inside a do loop for j and, in 3D, this will be nested inside a do loop for k. The i loop will go from first element of the low corner of box to the first element of the high corner of box. Similarly, the { j} loop will use the second element and, in 3D, the k loop will use the third element. CHF_ENDDO will end all the do loops set up by CHF_MULTIDO.
Here is an example using these macros:
integer CHF_DDECL[i;j;k]
integer productsum
productsum = 0
productsum = productsum + i*j*k
array(CHF_IX[i;j;k]) = productsum
return
end
see the section of the Chombo Design document about Chombo Fortran for a more detailed use of macros in Fortran