Mercurial > repos > public > sbplib_julia
comparison diffOp.jl @ 62:17b971a0b852 cell_based_test
Inline all the things
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 17 Jan 2019 10:53:12 +0100 |
parents | 7ab0043aca53 |
children |
comparison
equal
deleted
inserted
replaced
60:7ab0043aca53 | 62:17b971a0b852 |
---|---|
36 function apply!(D::DiffOp, u::AbstractVector, v::AbstractVector) | 36 function apply!(D::DiffOp, u::AbstractVector, v::AbstractVector) |
37 li = LinearIndices(D.grid.numberOfPointsPerDim) | 37 li = LinearIndices(D.grid.numberOfPointsPerDim) |
38 | 38 |
39 Nx, Ny = D.grid.numberOfPointsPerDim | 39 Nx, Ny = D.grid.numberOfPointsPerDim |
40 | 40 |
41 h = Grid.spacings(D.grid) | |
42 li = LinearIndices(D.grid.numberOfPointsPerDim) | |
43 ci = CartesianIndices(D.grid.numberOfPointsPerDim) | |
44 is = D.op.innerStencil | |
41 for i ∈ view(li, 5:Nx-4, 5:Ny-4) | 45 for i ∈ view(li, 5:Nx-4, 5:Ny-4) |
42 u[i] = apply(D, v, i) | 46 I = ci[i] |
47 | |
48 | |
49 u[i] = zero(eltype(v)) | |
50 for j ∈ is.range[1]:is.range[2] | |
51 u[i] += is[j]*v[(I[2]-1)*Nx - 1 + I[1]+j]/h[1]^2 | |
52 end | |
53 | |
54 for j ∈ is.range[1]:is.range[2] | |
55 u[i] += is[j]*v[(I[2]-1)*Nx - 1 + I[1]+ j*Nx]/h[2]^2 | |
56 end | |
43 end | 57 end |
44 | 58 |
45 return nothing | 59 return nothing |
46 end | 60 end |
47 | 61 |
79 | 93 |
80 li = LinearIndices(L.grid.numberOfPointsPerDim) | 94 li = LinearIndices(L.grid.numberOfPointsPerDim) |
81 ci = CartesianIndices(L.grid.numberOfPointsPerDim) | 95 ci = CartesianIndices(L.grid.numberOfPointsPerDim) |
82 I = ci[i] | 96 I = ci[i] |
83 | 97 |
84 # 2nd x-derivative | 98 uᵢ = apply(L.op.innerStencil, view(v, li[:,I[2]]), I[1])/h[1]^2 |
85 uᵢ = apply(L.op, h[1], view(v, li[:,I[2]]), I[1]) | 99 uᵢ += apply(L.op.innerStencil, view(v, li[I[1],:]), I[2])/h[2]^2 |
86 # 2nd y-derivative | |
87 uᵢ += apply(L.op, h[2], view(v, li[I[1],:]), I[2]) | |
88 | 100 |
89 return uᵢ | 101 return uᵢ |
90 end | 102 end |