diff --git a/src/jop_prop2DAcoTTIDenQ_DEO2_FDTD.jl b/src/jop_prop2DAcoTTIDenQ_DEO2_FDTD.jl index 37b0e78..96e0d7a 100644 --- a/src/jop_prop2DAcoTTIDenQ_DEO2_FDTD.jl +++ b/src/jop_prop2DAcoTTIDenQ_DEO2_FDTD.jl @@ -51,8 +51,16 @@ function JetProp2DAcoTTIDenQ_DEO2_FDTD(; i += 1 end end - passive_modelset["sinθ"] = isempty(θ) ? zeros(Float32, size(values(active_modelset)[1])) : sin.(convert(Array{Float32}, θ)); - passive_modelset["cosθ"] = isempty(θ) ? ones(Float32, size(values(active_modelset)[1])) : cos.(convert(Array{Float32}, θ)); + + # 2022.11.03 + # - these angles are input in degrees + # - θ is TTI symmetry tilt, input specified in degrees from vertical axis (+z) + # + # Tilt (φ) + # if measured from +z in a right handed coordinate system must be transformed to + # +z in our left handed coordinate system: φ_lhs = - φ_rhs + passive_modelset["sinθ"] = isempty(θ) ? zeros(Float32, size(values(active_modelset)[1])) : sin.(convert(Array{Float32}, deg2rad.(-1 .* θ))); + passive_modelset["cosθ"] = isempty(θ) ? ones(Float32, size(values(active_modelset)[1])) : cos.(convert(Array{Float32}, deg2rad.(-1 .* θ))); @assert length(active_modelset) > 0 # active and passive wavefields (an active wavefield is serialized to disk) @@ -220,6 +228,10 @@ Parameters that are *not* passed to the constructor are assumed to be **active** of the model that the operator acts on, stored as a 3D array with the following indices: `[Z coord][X coord][Active Parameter]` +## TTI Symmetry Axes +This angle is input in degrees, specified as described below + - θ (tilt) opening angle from vertical axis (+z) in right hand coordinate system (z upward) + # Examples ## Model and acquisition geometry setup diff --git a/src/jop_prop3DAcoTTIDenQ_DEO2_FDTD.jl b/src/jop_prop3DAcoTTIDenQ_DEO2_FDTD.jl index b2f5e65..6df14fc 100644 --- a/src/jop_prop3DAcoTTIDenQ_DEO2_FDTD.jl +++ b/src/jop_prop3DAcoTTIDenQ_DEO2_FDTD.jl @@ -61,10 +61,23 @@ function JetProp3DAcoTTIDenQ_DEO2_FDTD(; i += 1 end end - passive_modelset["sinθ"] = isempty(θ) ? zeros(Float32, size(values(active_modelset)[1])) : sin.(convert(Array{Float32}, θ)) - passive_modelset["cosθ"] = isempty(θ) ? ones(Float32, size(values(active_modelset)[1])) : cos.(convert(Array{Float32}, θ)) - passive_modelset["sinϕ"] = isempty(ϕ) ? zeros(Float32, size(values(active_modelset)[1])) : sin.(convert(Array{Float32}, ϕ)) - passive_modelset["cosϕ"] = isempty(ϕ) ? ones(Float32, size(values(active_modelset)[1])) : cos.(convert(Array{Float32}, ϕ)) + + # 2022.11.03 + # - these angles are input in degrees + # - θ is TTI symmetry tilt, input specified in degrees from vertical axis (+z) + # - φ is TTI symmetry azimuth, input specified in "compass angle": degrees clockwise from north (+y) + # + # Tilt (φ) + # if measured from +z in a right handed coordinate system must be transformed to + # +z in our left handed coordinate system: φ_lhs = - φ_rhs + # + # Azimuth (θ) + # must be transformed from compass angle (clockwise from north or +y) + passive_modelset["sinθ"] = isempty(θ) ? zeros(Float32, size(values(active_modelset)[1])) : sin.(convert(Array{Float32}, deg2rad.(-1 .* θ))); + passive_modelset["cosθ"] = isempty(θ) ? ones(Float32, size(values(active_modelset)[1])) : cos.(convert(Array{Float32}, deg2rad.(-1 .* θ))); + passive_modelset["sinϕ"] = isempty(ϕ) ? zeros(Float32, size(values(active_modelset)[1])) : sin.(convert(Array{Float32}, deg2rad.(90 .- ϕ))); + passive_modelset["cosϕ"] = isempty(ϕ) ? ones(Float32, size(values(active_modelset)[1])) : cos.(convert(Array{Float32}, deg2rad.(90 .- ϕ))); + @assert length(active_modelset) > 0 # active and passive wavefields (an active wavefield is serialized to disk) @@ -240,6 +253,11 @@ Parameters that are *not* passed to the constructor are assumed to be **active** of the model that the operator acts on, stored as a 3D array with the following indices: `[Z coord][X coord][Active Parameter]` +## TTI Symmetry Axes +These angles are input in degrees, specified as described below + - θ (tilt) opening angle from vertical axis (+z) in right hand coordinate system (z upward) + - φ (azim) opening angle clockwise from "north" or +y axies in right hand coordinate system (z upward) + # Examples ## Model and acquisition geometry setup