Skip to content

Commit

Permalink
Merge pull request #173 from omlins/fields
Browse files Browse the repository at this point in the history
Add field allocators and types
  • Loading branch information
omlins authored Oct 16, 2024
2 parents 241f0c5 + 08067e7 commit 2024995
Show file tree
Hide file tree
Showing 19 changed files with 1,718 additions and 398 deletions.
5 changes: 2 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,8 @@ jobs:
fail-fast: false
matrix:
version:
- '1.9' # Minimum version supporting extensions
- '1.10' # LTS version
- '1' # Latest stable 1.x release of Julia
- '1.10' # Minimum version supporting Data module creation
- '1' # Latest stable 1.x release of Julia
#- 'nightly'
os:
- ubuntu-latest
Expand Down
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Enzyme = "0.11, 0.12, 0.13"
MacroTools = "0.5"
Polyester = "0.7"
StaticArrays = "1"
julia = "1.9" # Minimum version supporting extensions
julia = "1.10" # Minimum version supporting Data module creation

[extras]
TOML = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
Expand Down
50 changes: 50 additions & 0 deletions src/FieldAllocators.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
"""
Module FieldAllocators
Provides macros for the allocation of different kind of fields on a grid of size `gridsize`.
# Usage
using ParallelStencil.FieldAllocators
# Macros
###### Multiple fields at once
- [`@allocate`](@ref)
###### Scalar fields
- [`@Field`](@ref)
- `{X|Y|Z}Field`, e.g. [`@XField`](@ref)
- `B{X|Y|Z}Field`, e.g. [`@BXField`](@ref)
- `{XX|YY|ZZ|XY|XZ|YZ}Field`, e.g. [`@XXField`](@ref)
###### Vector fields
- [`@VectorField`](@ref)
- [`@BVectorField`](@ref)
###### Tensor fields
- [`@TensorField`](@ref)
To see a description of a macro type `?<macroname>` (including the `@`).
"""
module FieldAllocators
import ..ParallelKernel
@doc replace(ParallelKernel.FieldAllocators.ALLOCATE_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro allocate(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@allocate($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.FIELD_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro Field(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@Field($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.VECTORFIELD_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro VectorField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@VectorField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.BVECTORFIELD_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro BVectorField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@BVectorField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.TENSORFIELD_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro TensorField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@TensorField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.VECTORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro XField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@XField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.BVECTORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro BXField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@BXField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.VECTORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro YField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@YField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.BVECTORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro BYField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@BYField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.VECTORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro ZField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@ZField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.BVECTORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro BZField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@BZField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.TENSORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro XXField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@XXField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.TENSORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro YYField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@YYField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.TENSORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro ZZField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@ZZField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.TENSORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro XYField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@XYField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.TENSORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro XZField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@XZField($(args...)))); end
@doc replace(ParallelKernel.FieldAllocators.TENSORFIELD_COMP_DOC, "@init_parallel_kernel" => "@init_parallel_stencil") macro YZField(args...) check_initialized(__module__); esc(:(ParallelStencil.ParallelKernel.FieldAllocators.@YZField($(args...)))); end

export @allocate, @Field, @VectorField, @BVectorField, @TensorField, @XField, @BXField, @YField, @BYField, @ZField, @BZField, @XXField, @YYField, @ZZField, @XYField, @XZField, @YZField
end
Loading

0 comments on commit 2024995

Please sign in to comment.