diff --git a/src/constants.jl b/src/constants.jl index 23ad5c3..8ddf72b 100644 --- a/src/constants.jl +++ b/src/constants.jl @@ -56,7 +56,6 @@ struct Constants{T<:AbstractFloat,Tprog<:AbstractFloat} scale::T # multiplicative constant for low-precision arithmetics scale_inv::T # and its inverse scale_sst::T # scale for sst - scale_sst_inv::T # and its inverse end """Generator function for the mutable struct Constants.""" @@ -118,12 +117,10 @@ function Constants{T,Tprog}(P::Parameter,G::Grid) where {T<:AbstractFloat,Tprog< scale = convert(T,P.scale) scale_inv = convert(T,1/P.scale) scale_sst = convert(T,P.scale_sst) - scale_sst_inv = convert(T,1/P.scale_sst) return Constants{T,Tprog}( RKaΔt,RKbΔt,Δt_Δs,Δt_Δ,Δt_Δ_half, SSPRK3c,one_minus_α, g,cD,rD,γ,cSmag,νB,τSST,jSST, ωFη,ωFx,ωFy, - scale,scale_inv, - scale_sst,scale_sst_inv) + scale,scale_inv,scale_sst) end diff --git a/src/ghost_points.jl b/src/ghost_points.jl index 379abca..162b584 100644 --- a/src/ghost_points.jl +++ b/src/ghost_points.jl @@ -40,13 +40,13 @@ function remove_halo( u::Array{T,2}, S::ModelSetup) where {T<:AbstractFloat} @unpack halo,haloη,halosstx,halossty = S.grid - @unpack scale_inv,scale_sst_inv = S.constants + @unpack scale_inv,scale_sst = S.constants # undo scaling as well - ucut = scale_inv*u[halo+1:end-halo,halo+1:end-halo] - vcut = scale_inv*v[halo+1:end-halo,halo+1:end-halo] - ηcut = η[haloη+1:end-haloη,haloη+1:end-haloη] - sstcut = scale_sst_inv*sst[halosstx+1:end-halosstx,halossty+1:end-halossty] + @views ucut = scale_inv*u[halo+1:end-halo,halo+1:end-halo] + @views vcut = scale_inv*v[halo+1:end-halo,halo+1:end-halo] + @views ηcut = η[haloη+1:end-haloη,haloη+1:end-haloη] + @views sstcut = sst[halosstx+1:end-halosstx,halossty+1:end-halossty]/scale_sst return ucut,vcut,ηcut,sstcut end diff --git a/src/output.jl b/src/output.jl index 07100c2..3d271a4 100644 --- a/src/output.jl +++ b/src/output.jl @@ -90,7 +90,7 @@ function output_nc!(i::Int, @unpack halo,haloη,halosstx,halossty = S.grid @unpack f_q,ep,dtint = S.grid - @unpack scale,scale_inv,scale_sst_inv = S.constants + @unpack scale,scale_inv,scale_sst = S.constants # CUT OFF HALOS # As output is before copyto!(u,u0), take u0,v0,η0 @@ -109,7 +109,7 @@ function output_nc!(i::Int, NetCDF.putvar(ncs.η,"eta",η,start=[1,1,iout],count=[-1,-1,1]) end if ncs.sst != nothing - @views sst = Float32.(scale_sst_inv*Prog.sst[halosstx+1:end-halosstx,halossty+1:end-halossty]) + @views sst = Float32.(Prog.sst[halosstx+1:end-halosstx,halossty+1:end-halossty]/scale_sst) NetCDF.putvar(ncs.sst,"sst",sst,start=[1,1,iout],count=[-1,-1,1]) end if ncs.q != nothing