Skip to content

Commit

Permalink
Error in Hyper Diffusion
Browse files Browse the repository at this point in the history
  • Loading branch information
OsKnoth committed Jul 13, 2023
1 parent 372bb24 commit 7403696
Show file tree
Hide file tree
Showing 4 changed files with 174 additions and 81 deletions.
5 changes: 3 additions & 2 deletions Jobs/JobNHHeldSuarezDrySphere
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ mpirun -n 6 julia --project --check-bounds=yes Examples/testNHSphere.jl \
--Source=true \
--Coriolis=true \
--Upwind=true \
--HorLimit=true \
--HorLimit=false \
--ModelType="VectorInvariant" \
--Curl=true \
--SurfaceFluxMom=false \
Expand All @@ -33,5 +33,6 @@ mpirun -n 6 julia --project --check-bounds=yes Examples/testNHSphere.jl \
--HyperVisc=true \
--HyperDCurl=1.e16 \
--HyperDGrad=1.e16 \
--HyperDDiv=0.e16
--HyperDRhoDiv=1.e16 \
--HyperDDiv=1.e16

66 changes: 22 additions & 44 deletions src/DyCore/Fcn.jl
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,8 @@ function Fcn!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views GradDiv!(Grad1CG,Grad2CG,v1CG,v2CG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@. DivCG = 0.0
@views DivGrad!(DivCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivRhoGrad!(DivThCG,ThCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivGradF!(DivwCG,wCG,CG,
Expand Down Expand Up @@ -332,7 +333,8 @@ function Fcn!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views GradDiv!(Grad1CG,Grad2CG,v1CG,v2CG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@. DivCG = 0.0
@views DivGrad!(DivCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivRhoGrad!(DivThCG,ThCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivGradF!(DivwCG,wCG,CG,
Expand Down Expand Up @@ -420,6 +422,9 @@ function Fcn!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
@views GradDiv!(FCG[:,:,:,uPos],FCG[:,:,:,vPos],Grad1CG,Grad2CG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDGrad)
@views DivGrad!(FCG[:,:,:,RhoPos],DivCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDRhoDiv)
@views DivRhoGrad!(FCG[:,:,:,ThPos],DivThCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDDiv)
Expand Down Expand Up @@ -615,6 +620,9 @@ function Fcn!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
@views GradDiv!(FCG[:,:,:,uPos],FCG[:,:,:,vPos],Grad1CG,Grad2CG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDGrad)
@views DivGrad!(FCG[:,:,:,RhoPos],DivCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDRhoDiv)
@views DivRhoGrad!(FCG[:,:,:,ThPos],DivThCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDDiv)
Expand Down Expand Up @@ -890,13 +898,9 @@ function FcnHDiffRho!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views GradDiv!(Grad1CG,Grad2CG,v1CG,v2CG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
# @views DivRhoGrad!(DivCG,RhoCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivGrad!(DivCG,RhoCG,CG,
@views DivGradHor!(DivCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
# @views DivRhoGrad!(DivThCG,ThCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivGradHor!(DivThCG,ThCG,CG,
@views DivRhoGradHor!(DivThCG,ThCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivGradF!(DivwCG,wCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
Expand Down Expand Up @@ -928,9 +932,7 @@ function FcnHDiffRho!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
end
end
end
# @views DivRhoGrad!(DivCG,ThCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivGradHor!(DivCG,ThCG,CG,
@views DivRhoGradHor!(DivCG,ThCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@inbounds for jP=1:OP
@inbounds for iP=1:OP
Expand Down Expand Up @@ -964,13 +966,9 @@ function FcnHDiffRho!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views GradDiv!(Grad1CG,Grad2CG,v1CG,v2CG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
# @views DivRhoGrad!(DivCG,RhoCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivGrad!(DivCG,RhoCG,CG,
@views DivGradHor!(DivCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
# @views DivRhoGrad!(DivThCG,ThCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivGradHor!(DivThCG,ThCG,CG,
@views DivRhoGradHor!(DivThCG,ThCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivGradF!(DivwCG,wCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
Expand Down Expand Up @@ -1002,9 +1000,7 @@ function FcnHDiffRho!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
end
end
end
# @views DivRhoGrad!(DivCG,ThCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@views DivGradHor!(DivCG,ThCG,CG,
@views DivRhoGradHor!(DivCG,ThCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache)
@inbounds for jP=1:OP
@inbounds for iP=1:OP
Expand Down Expand Up @@ -1059,16 +1055,10 @@ function FcnHDiffRho!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
@views GradDiv!(FCG[:,:,:,uPos],FCG[:,:,:,vPos],Grad1CG,Grad2CG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDGrad)
# @views DivRhoGrad!(FCG[:,:,:,RhoPos],DivCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
# Global.Model.HyperDDiv)
@views DivGrad!(FCG[:,:,:,RhoPos],DivCG,CG,
@views DivGradHor!(FCG[:,:,:,RhoPos],DivCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDRhoDiv)
# @views DivRhoGrad!(FCG[:,:,:,ThPos],DivThCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
# Global.Model.HyperDDiv)
@views DivGradHor!(FCG[:,:,:,ThPos],DivThCG,CG,
@views DivRhoGradHor!(FCG[:,:,:,ThPos],DivThCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDDiv)
@views DivGradF!(FwCG,DivwCG,RhoCG,CG,
Expand Down Expand Up @@ -1181,10 +1171,7 @@ function FcnHDiffRho!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
end
end
# Hyperdiffusion, second Laplacian
# @views DivRhoGrad!(FCG[:,:,:,iT+NumV],DivTrCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
# Global.Model.HyperDDiv)
@views DivGradHor!(FCG[:,:,:,iT+NumV],DivTrCG,CG,
@views DivRhoGradHor!(FCG[:,:,:,iT+NumV],DivTrCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDDiv)
if Global.Model.Upwind
Expand Down Expand Up @@ -1266,16 +1253,10 @@ function FcnHDiffRho!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
@views GradDiv!(FCG[:,:,:,uPos],FCG[:,:,:,vPos],Grad1CG,Grad2CG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDGrad)
# @views DivRhoGrad!(FCG[:,:,:,RhoPos],DivCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
# Global.Model.HyperDDiv)
@views DivGrad!(FCG[:,:,:,RhoPos],DivCG,CG,
@views DivGradHor!(FCG[:,:,:,RhoPos],DivCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDRhoDiv)
# @views DivRhoGrad!(FCG[:,:,:,ThPos],DivThCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
# Global.Model.HyperDDiv)
@views DivGradHor!(FCG[:,:,:,ThPos],DivThCG,CG,
@views DivRhoGradHor!(FCG[:,:,:,ThPos],DivThCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDDiv)
@views DivGradF!(FwCG,DivwCG,RhoCG,CG,
Expand Down Expand Up @@ -1386,10 +1367,7 @@ function FcnHDiffRho!(F,U,CG,Global,Param,DiscType::Val{:VectorInvariant})
end
end
# Hyperdiffusion, second Laplacian
# @views DivRhoGrad!(FCG[:,:,:,iT+NumV],DivTrCG,RhoCG,CG,
# Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
# Global.Model.HyperDDiv)
@views DivGradHor!(FCG[:,:,:,iT+NumV],DivTrCG,CG,
@views DivRhoGradHor!(FCG[:,:,:,iT+NumV],DivTrCG,RhoCG,CG,
Global.Metric.dXdxI[:,:,:,:,:,:,iF],Global.Metric.J[:,:,:,:,iF],Global.ThreadCache,
Global.Model.HyperDDiv)
if Global.Model.Upwind
Expand Down
Loading

0 comments on commit 7403696

Please sign in to comment.