From 02278e4b986eb2f79b1a958ba90c6941da1283ff Mon Sep 17 00:00:00 2001 From: yassine Date: Wed, 8 Jul 2020 12:58:59 -0400 Subject: [PATCH 1/2] Add the Boyd-Vandeven filter co-authored-by: thomasgibson --- docs/src/APIs/Numerics/Meshes/Mesh.md | 1 + src/Numerics/Mesh/Filters.jl | 58 ++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/docs/src/APIs/Numerics/Meshes/Mesh.md b/docs/src/APIs/Numerics/Meshes/Mesh.md index 3ad27fb210a..3ed51af80e9 100644 --- a/docs/src/APIs/Numerics/Meshes/Mesh.md +++ b/docs/src/APIs/Numerics/Meshes/Mesh.md @@ -75,6 +75,7 @@ There are methods used to cleanup state vectors. ```@docs Filters.CutoffFilter +Filters.BoydVandevenFilter Filters.ExponentialFilter Filters.TMARFilter ``` diff --git a/src/Numerics/Mesh/Filters.jl b/src/Numerics/Mesh/Filters.jl index cd4c2578a9b..9b0762e6aae 100644 --- a/src/Numerics/Mesh/Filters.jl +++ b/src/Numerics/Mesh/Filters.jl @@ -1,5 +1,6 @@ module Filters +using SpecialFunctions using LinearAlgebra, GaussQuadrature, KernelAbstractions using KernelAbstractions.Extras: @unroll using StaticArrays @@ -10,7 +11,7 @@ using ...MPIStateArrays using ...VariableTemplates: @vars, varsize, Vars, varsindices export AbstractSpectralFilter, AbstractFilter -export ExponentialFilter, CutoffFilter, TMARFilter +export ExponentialFilter, CutoffFilter, TMARFilter, BoydVandevenFilter abstract type AbstractFilter end abstract type AbstractSpectralFilter <: AbstractFilter end @@ -160,6 +161,61 @@ struct ExponentialFilter <: AbstractSpectralFilter end end +""" + BoydVandevenFilter(grid, Nc=0, s=32) + +Returns the spectral filter using the logorithmic error function of +the form: +```math +σ(η) = 1/2 erfc(2*sqrt(s)*χ(η)*(abs(η)-0.5)) +``` +whenever s ≤ i ≤ N, and 1 otherwise. The function `χ(η)` is defined +as +```math +χ(x) = sqrt(-log(1-4*(abs(x)-0.5)^2)/4*(abs(x)-0.5)^2) +``` +if `x != 0.5` and `1` otherwise. Here, `s` is the filter order, +the filter starts with polynomial order `Nc`, and `alpha` is a parameter +controlling the smallest value of the filter function. + +### References + + @inproceedings{boyd1996erfc, + title={The erfc-log filter and the asymptotics of the Euler and Vandeven sequence accelerations}, + author={Boyd, JP}, + booktitle={Proceedings of the Third International Conference on Spectral and High Order Methods}, + pages={267--276}, + year={1996}, + organization={Houston Math. J} + } +""" +struct BoydVandevenFilter <: AbstractSpectralFilter + "filter matrix" + filter + + function BoydVandevenFilter(grid, Nc = 0, s = 32) + AT = arraytype(grid) + N = polynomialorder(grid) + ξ = referencepoints(grid) + + @assert iseven(s) + @assert 0 <= Nc <= N + + σ(η) = 0.5 * erfc(2 * sqrt(s) * χ(η) * (abs(η) - 0.5)) + filter = spectral_filter_matrix(ξ, Nc, σ) + + new(AT(filter)) + end +end + +function χ(x) + if (x == 0.5) + return 1 + else + return sqrt(-log(1 - 4 * (abs(x) - 0.5)^2) / 4 * (abs(x) - 0.5)^2) + end +end + """ CutoffFilter(grid, Nc=polynomialorder(grid)) From f72c4e4fe1e3ecfc6aa7368c86889de249c78ebf Mon Sep 17 00:00:00 2001 From: Brandon Allen Date: Thu, 2 Jul 2020 17:50:36 -0400 Subject: [PATCH 2/2] =?UTF-8?q?Store=20=E2=88=87=CA=B0u=20separately=20fro?= =?UTF-8?q?m=20=CE=BD=E2=88=87u,=20simplify=20continuity=20equation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- experiments/OceanBoxGCM/ocean_gyre.jl | 50 +--- .../OceanBoxGCM/refvals/ocean_gyre_refvals.jl | 227 ++++++++++++------ .../HydrostaticBoussinesqModel.jl | 9 +- .../3D_hydrostatic_spindown.jl | 6 +- .../HydrostaticBoussinesq/test_ocean_gyre.jl | 6 +- .../3D_hydrostatic_spindown_refvals.jl | 153 ------------ test/Ocean/refvals/test_ocean_gyre_refvals.jl | 162 ------------- 7 files changed, 160 insertions(+), 453 deletions(-) diff --git a/experiments/OceanBoxGCM/ocean_gyre.jl b/experiments/OceanBoxGCM/ocean_gyre.jl index 1b9d5bbb21d..70a03c1c3dc 100755 --- a/experiments/OceanBoxGCM/ocean_gyre.jl +++ b/experiments/OceanBoxGCM/ocean_gyre.jl @@ -97,11 +97,7 @@ function run_ocean_gyre(; imex::Bool = false, BC = nothing, nt = 0, refDat = ()) nt_freq = 620 cb = ClimateMachine.StateCheck.sccreate( - [ - (solver_config.Q, "Q"), - (solver_config.dg.state_auxiliary, "s_aux"), - (solver_config.dg.state_gradient_flux, "s_gflux"), - ], + [(solver_config.Q, "Q"), (solver_config.dg.state_auxiliary, "s_aux")], nt_freq; prec = 12, ) @@ -146,50 +142,8 @@ end # Ocean floor BCs, # Surface BCc # ) - boundary_conditions = [ - ( - OceanBC(Impenetrable(NoSlip()), Insulating()), - OceanBC(Impenetrable(NoSlip()), Insulating()), - OceanBC(Penetrable(KinematicStress()), TemperatureFlux()), - ), - ( - OceanBC(Impenetrable(FreeSlip()), Insulating()), - OceanBC(Impenetrable(NoSlip()), Insulating()), - OceanBC(Penetrable(KinematicStress()), TemperatureFlux()), - ), - ( - OceanBC(Impenetrable(NoSlip()), Insulating()), - OceanBC(Impenetrable(FreeSlip()), Insulating()), - OceanBC(Penetrable(KinematicStress()), TemperatureFlux()), - ), - ( - OceanBC(Impenetrable(FreeSlip()), Insulating()), - OceanBC(Impenetrable(FreeSlip()), Insulating()), - OceanBC(Penetrable(KinematicStress()), TemperatureFlux()), - ), - ( - OceanBC(Impenetrable(NoSlip()), Insulating()), - OceanBC(Impenetrable(NoSlip()), Insulating()), - OceanBC(Penetrable(FreeSlip()), TemperatureFlux()), - ), - ( - OceanBC(Impenetrable(FreeSlip()), Insulating()), - OceanBC(Impenetrable(NoSlip()), Insulating()), - OceanBC(Penetrable(FreeSlip()), TemperatureFlux()), - ), - ( - OceanBC(Impenetrable(NoSlip()), Insulating()), - OceanBC(Impenetrable(FreeSlip()), Insulating()), - OceanBC(Penetrable(FreeSlip()), TemperatureFlux()), - ), - ( - OceanBC(Impenetrable(FreeSlip()), Insulating()), - OceanBC(Impenetrable(FreeSlip()), Insulating()), - OceanBC(Penetrable(FreeSlip()), TemperatureFlux()), - ), - ] + ## By default test with a couple of standard bc's - # Prior block shows that many other combinations are possible # - noslip on sides and bottom # - freeslip on sides and no-slipt on bottom boundary_conditions = [ diff --git a/experiments/OceanBoxGCM/refvals/ocean_gyre_refvals.jl b/experiments/OceanBoxGCM/refvals/ocean_gyre_refvals.jl index 9f123dead8d..16ab65f501b 100644 --- a/experiments/OceanBoxGCM/refvals/ocean_gyre_refvals.jl +++ b/experiments/OceanBoxGCM/refvals/ocean_gyre_refvals.jl @@ -26,10 +26,9 @@ # # Now for real! # -#! format: off - refVals=[] - refPrecs=[] +refVals = [] +refPrecs = [] # SC ========== Test number 1 reference values and precision match template. ======= # SC ========== /home/cnh/projects/cm/experiments/OceanBoxGCM/ocean_gyre.jl test reference values ====================================== @@ -42,48 +41,86 @@ # [ : : : : : : ], # ] varr = [ - [ "Q", "u[1]", -7.88803234115370288659e-02, 6.54328011157667283060e-02, 2.01451525264660777012e-03, 1.24588716783015467093e-02 ], - [ "Q", "u[2]", -8.71605274310934263760e-02, 1.47505267452495314462e-01, 5.63158201082454307890e-03, 1.28959719954838437916e-02 ], - [ "Q", :η, -4.73491408441974459542e-01, 4.02693687285993751068e-01, -6.49059970676089264836e-05, 2.21689928090662985438e-01 ], - [ "Q", :θ, 4.24292935192304451839e-04, 9.24539353455580759089e+00, 2.49938206627401893201e+00, 2.17986626392490689952e+00 ], - [ "s_aux", :y, 0.00000000000000000000e+00, 4.00000000000000046566e+06, 1.99999999999999976717e+06, 1.15573163901915703900e+06 ], - [ "s_aux", :w, -2.22086406767055965930e-04, 2.00575090959195941574e-04, 2.53168866096191178104e-07, 1.66257132341925427171e-05 ], - [ "s_aux", :pkin, -9.00869877619915215838e-01, 0.00000000000000000000e+00, -3.33171488779369640021e-01, 2.54740287894525019308e-01 ], - [ "s_aux", :wz0, -2.96608015794916532427e-05, 3.66759042312538147113e-05, 3.78116102589123325624e-10, 1.07073256826409470244e-05 ], - [ "s_gflux", "ν∇u[1]", -1.98765276856145908790e-02, 1.92976912753076192131e-02, 9.31995586073550077850e-09, 2.84016926475062683050e-04 ], - [ "s_gflux", "ν∇u[2]", -8.60188027210821715141e-03, 2.03898608650850965418e-02, 1.44279862042391183595e-05, 7.01831343135553482361e-04 ], - [ "s_gflux", "ν∇u[3]", -2.36999031942582461820e-05, 3.39171933774427215489e-05, 1.79310417841609871239e-08, 3.03350466717279338539e-06 ], - [ "s_gflux", "ν∇u[4]", -3.27811105688537093861e-02, 3.33776923250933485465e-02, -8.41954909635648634245e-06, 9.93067541524441646170e-04 ], - [ "s_gflux", "ν∇u[5]", -3.19705003898926379269e-02, 3.94072309121676778859e-03, -2.09915474589233714674e-06, 4.56596518968874199012e-04 ], - [ "s_gflux", "ν∇u[6]", -3.84552825296212839770e-05, 3.30579003830798668533e-05, -6.85753430789401392363e-08, 3.41712910764070301712e-06 ], - [ "s_gflux", "κ∇θ[1]", -1.90663030661463762938e-03, 1.59419367775516821958e-03, -2.07346812692515548133e-05, 1.38241222633447261199e-04 ], - [ "s_gflux", "κ∇θ[2]", -1.17846832845764997420e-03, 3.03333905110560143534e-03, 9.95380871168155762288e-04, 8.10649417649871592909e-04 ], - [ "s_gflux", "κ∇θ[3]", -1.91676759182478058212e-05, 6.14879473708830387359e-05, -4.12675761035662034755e-07, 1.91038619046619808554e-06 ], + [ + "Q", + "u[1]", + -7.88803234115370288659e-02, + 6.54328011157667283060e-02, + 2.01451525264660777012e-03, + 1.24588716783015467093e-02, + ], + [ + "Q", + "u[2]", + -8.71605274310934263760e-02, + 1.47505267452495314462e-01, + 5.63158201082454307890e-03, + 1.28959719954838437916e-02, + ], + [ + "Q", + :η, + -4.73491408441974459542e-01, + 4.02693687285993751068e-01, + -6.49059970676089264836e-05, + 2.21689928090662985438e-01, + ], + [ + "Q", + :θ, + 4.24292935192304451839e-04, + 9.24539353455580759089e+00, + 2.49938206627401893201e+00, + 2.17986626392490689952e+00, + ], + [ + "s_aux", + :y, + 0.00000000000000000000e+00, + 4.00000000000000046566e+06, + 1.99999999999999976717e+06, + 1.15573163901915703900e+06, + ], + [ + "s_aux", + :w, + -2.22086406767055965930e-04, + 2.00575090959195941574e-04, + 2.53168866096191178104e-07, + 1.66257132341925427171e-05, + ], + [ + "s_aux", + :pkin, + -9.00869877619915215838e-01, + 0.00000000000000000000e+00, + -3.33171488779369640021e-01, + 2.54740287894525019308e-01, + ], + [ + "s_aux", + :wz0, + -2.96608015794916532427e-05, + 3.66759042312538147113e-05, + 3.78116102589123325624e-10, + 1.07073256826409470244e-05, + ], ] parr = [ - [ "Q", "u[1]", 12, 12, 12, 12 ], - [ "Q", "u[2]", 12, 12, 12, 12 ], - [ "Q", :η, 12, 12, 12, 12 ], - [ "Q", :θ, 12, 12, 12, 12 ], - [ "s_aux", :y, 12, 12, 12, 12 ], - [ "s_aux", :w, 12, 12, 12, 12 ], - [ "s_aux", :pkin, 12, 12, 12, 12 ], - [ "s_aux", :wz0, 12, 12, 8, 12 ], - [ "s_gflux", "ν∇u[1]", 12, 12, 8, 12 ], - [ "s_gflux", "ν∇u[2]", 12, 12, 12, 12 ], - [ "s_gflux", "ν∇u[3]", 12, 12, 12, 12 ], - [ "s_gflux", "ν∇u[4]", 12, 12, 12, 12 ], - [ "s_gflux", "ν∇u[5]", 12, 12, 12, 12 ], - [ "s_gflux", "ν∇u[6]", 12, 12, 12, 12 ], - [ "s_gflux", "κ∇θ[1]", 12, 12, 12, 12 ], - [ "s_gflux", "κ∇θ[2]", 12, 12, 12, 12 ], - [ "s_gflux", "κ∇θ[3]", 12, 12, 12, 12 ], + ["Q", "u[1]", 12, 12, 12, 12], + ["Q", "u[2]", 12, 12, 12, 12], + ["Q", :η, 12, 12, 12, 12], + ["Q", :θ, 12, 12, 12, 12], + ["s_aux", :y, 12, 12, 12, 12], + ["s_aux", :w, 12, 12, 12, 12], + ["s_aux", :pkin, 12, 12, 12, 12], + ["s_aux", :wz0, 12, 12, 8, 12], ] # END SCPRINT # SC ==================================================================================== - append!(refVals ,[ varr ] ) - append!(refPrecs,[ parr ] ) +append!(refVals, [varr]) +append!(refPrecs, [parr]) # SC ========== Test number 2 reference values and precision match template. ======= # SC ========== /home/cnh/projects/cm/experiments/OceanBoxGCM/ocean_gyre.jl test reference values ====================================== @@ -96,47 +133,83 @@ parr = [ # [ : : : : : : ], # ] varr = [ - [ "Q", "u[1]", -3.08415268094245687003e-01, 3.31683879748177812274e-01, 2.34355645025035056947e-03, 1.38278493625595393784e-02 ], - [ "Q", "u[2]", -9.30330187375882494694e-02, 1.45773331490709479041e-01, 6.38739141648009701308e-03, 1.38107523198905141754e-02 ], - [ "Q", :η, -4.60215148246349181615e-01, 3.97155090993862369686e-01, -1.05814653709044253051e-04, 2.14356824554893188317e-01 ], - [ "Q", :θ, 3.90305009874997816885e-04, 9.28488770009523101123e+00, 2.49938688339290848717e+00, 2.17986650147491722862e+00 ], - [ "s_aux", :y, 0.00000000000000000000e+00, 4.00000000000000046566e+06, 1.99999999999999976717e+06, 1.15573163901915703900e+06 ], - [ "s_aux", :w, -2.65432487944419423249e-04, 2.51335486222488370053e-04, 3.34985017281366756292e-07, 1.98256782258218657716e-05 ], - [ "s_aux", :pkin, -9.01203660410079376852e-01, 0.00000000000000000000e+00, -3.33173652152760846334e-01, 2.54737286187841360796e-01 ], - [ "s_aux", :wz0, -3.16776291712146345464e-05, 3.89428424525183031852e-05, 4.05688221636862481177e-10, 1.10561449663397378925e-05 ], - [ "s_gflux", "ν∇u[1]", -6.91411158656193985950e-02, 6.71894067927724242262e-02, 1.93151282317531301526e-08, 3.67871498890457999768e-04 ], - [ "s_gflux", "ν∇u[2]", -6.41072589623675609394e-02, 5.93158959821227672188e-03, -1.72612717858599068401e-05, 1.09370391833557892812e-03 ], - [ "s_gflux", "ν∇u[3]", -7.40852152420143496942e-05, 7.70630509235797829829e-05, 1.94096112473072846645e-08, 3.35721658566900582726e-06 ], - [ "s_gflux", "ν∇u[4]", -2.77618725100101104708e-02, 2.76053769492804849939e-02, 8.37000168929151316390e-06, 1.04649435866464054871e-03 ], - [ "s_gflux", "ν∇u[5]", -3.57980327012049140412e-02, 4.20082014423407961584e-03, -2.26270579934147913334e-06, 5.16063361553070450508e-04 ], - [ "s_gflux", "ν∇u[6]", -3.87729590851969090591e-05, 3.38326906830031177748e-05, -7.64232106453937395084e-08, 3.42855062975519724920e-06 ], - [ "s_gflux", "κ∇θ[1]", -2.63114521554794764460e-03, 3.13139570197398927828e-03, -2.58270397697685688597e-05, 1.80489106756528977114e-04 ], - [ "s_gflux", "κ∇θ[2]", -4.29150657020392189284e-03, 3.20181945576268351533e-03, 9.94194034856019440149e-04, 8.13274467049271117605e-04 ], - [ "s_gflux", "κ∇θ[3]", -3.08119171379054497821e-05, 9.12508944783092335127e-05, -4.12575332587978521639e-07, 1.92043362474637987870e-06 ], + [ + "Q", + "u[1]", + -3.08415268094245687003e-01, + 3.31683879748177812274e-01, + 2.34355645025035056947e-03, + 1.38278493625595393784e-02, + ], + [ + "Q", + "u[2]", + -9.30330187375882494694e-02, + 1.45773331490709479041e-01, + 6.38739141648009701308e-03, + 1.38107523198905141754e-02, + ], + [ + "Q", + :η, + -4.60215148246349181615e-01, + 3.97155090993862369686e-01, + -1.05814653709044253051e-04, + 2.14356824554893188317e-01, + ], + [ + "Q", + :θ, + 3.90305009874997816885e-04, + 9.28488770009523101123e+00, + 2.49938688339290848717e+00, + 2.17986650147491722862e+00, + ], + [ + "s_aux", + :y, + 0.00000000000000000000e+00, + 4.00000000000000046566e+06, + 1.99999999999999976717e+06, + 1.15573163901915703900e+06, + ], + [ + "s_aux", + :w, + -2.65432487944419423249e-04, + 2.51335486222488370053e-04, + 3.34985017281366756292e-07, + 1.98256782258218657716e-05, + ], + [ + "s_aux", + :pkin, + -9.01203660410079376852e-01, + 0.00000000000000000000e+00, + -3.33173652152760846334e-01, + 2.54737286187841360796e-01, + ], + [ + "s_aux", + :wz0, + -3.16776291712146345464e-05, + 3.89428424525183031852e-05, + 4.05688221636862481177e-10, + 1.10561449663397378925e-05, + ], ] parr = [ - [ "Q", "u[1]", 12, 12, 12, 12 ], - [ "Q", "u[2]", 12, 12, 12, 12 ], - [ "Q", :η, 12, 12, 12, 12 ], - [ "Q", :θ, 12, 12, 12, 12 ], - [ "s_aux", :y, 12, 12, 12, 12 ], - [ "s_aux", :w, 12, 12, 12, 12 ], - [ "s_aux", :pkin, 12, 12, 12, 12 ], - [ "s_aux", :wz0, 12, 12, 8, 12 ], - [ "s_gflux", "ν∇u[1]", 12, 12, 8, 12 ], - [ "s_gflux", "ν∇u[2]", 12, 12, 12, 12 ], - [ "s_gflux", "ν∇u[3]", 12, 12, 12, 12 ], - [ "s_gflux", "ν∇u[4]", 12, 12, 12, 12 ], - [ "s_gflux", "ν∇u[5]", 12, 12, 12, 12 ], - [ "s_gflux", "ν∇u[6]", 12, 12, 12, 12 ], - [ "s_gflux", "κ∇θ[1]", 12, 12, 12, 12 ], - [ "s_gflux", "κ∇θ[2]", 12, 12, 12, 12 ], - [ "s_gflux", "κ∇θ[3]", 12, 12, 12, 12 ], + ["Q", "u[1]", 12, 12, 12, 12], + ["Q", "u[2]", 12, 12, 12, 12], + ["Q", :η, 12, 12, 12, 12], + ["Q", :θ, 12, 12, 12, 12], + ["s_aux", :y, 12, 12, 12, 12], + ["s_aux", :w, 12, 12, 12, 12], + ["s_aux", :pkin, 12, 12, 12, 12], + ["s_aux", :wz0, 12, 12, 8, 12], ] # END SCPRINT # SC ==================================================================================== - append!(refVals ,[ varr ] ) - append!(refPrecs,[ parr ] ) - -#! format: on +append!(refVals, [varr]) +append!(refPrecs, [parr]) diff --git a/src/Ocean/HydrostaticBoussinesq/HydrostaticBoussinesqModel.jl b/src/Ocean/HydrostaticBoussinesq/HydrostaticBoussinesqModel.jl index cc14975d816..a199c2916f2 100644 --- a/src/Ocean/HydrostaticBoussinesq/HydrostaticBoussinesqModel.jl +++ b/src/Ocean/HydrostaticBoussinesq/HydrostaticBoussinesqModel.jl @@ -223,6 +223,7 @@ multiplies ∇u by viscosity tensor and ∇θ by the diffusivity tensor """ function vars_state_gradient_flux(m::HBModel, T) @vars begin + ∇ʰu::T ν∇u::SMatrix{3, 2, T, 6} κ∇θ::SVector{3, T} end @@ -250,6 +251,9 @@ this computation is done pointwise at each nodal point A::Vars, t, ) + # store ∇ʰu for continuity equation (convert gradient to divergence) + D.∇ʰu = G.∇u[1, 1] + G.∇u[2, 2] + ν = viscosity_tensor(m) D.ν∇u = -ν * G.∇u @@ -619,9 +623,8 @@ function update_auxiliary_state_gradient!( # store ∇ʰu as integrand for w function f!(m::HBModel, Q, A, D, t) @inbounds begin - ν = viscosity_tensor(m) - ∇u = ν \ D.ν∇u # minus sign included in gradient flux - A.w = (∇u[1, 1] + ∇u[2, 2]) + # load -∇ʰu as ∂ᶻw + A.w = -D.∇ʰu end return nothing diff --git a/test/Ocean/HydrostaticBoussinesq/3D_hydrostatic_spindown.jl b/test/Ocean/HydrostaticBoussinesq/3D_hydrostatic_spindown.jl index 550c43f60e3..9666060437a 100644 --- a/test/Ocean/HydrostaticBoussinesq/3D_hydrostatic_spindown.jl +++ b/test/Ocean/HydrostaticBoussinesq/3D_hydrostatic_spindown.jl @@ -105,11 +105,7 @@ function run_hydrostatic_test(; imex::Bool = false, BC = nothing, refDat = ()) # ClimateMachine.Settings.diagnostics = "$(output_interval)steps" cb = ClimateMachine.StateCheck.sccreate( - [ - (solver.Q, "state"), - (solver.dg.state_auxiliary, "aux"), - (solver.dg.state_gradient_flux, "gradient"), - ], + [(solver.Q, "state"), (solver.dg.state_auxiliary, "aux")], output_interval; prec = 12, ) diff --git a/test/Ocean/HydrostaticBoussinesq/test_ocean_gyre.jl b/test/Ocean/HydrostaticBoussinesq/test_ocean_gyre.jl index 30e771dce66..a2a051dae7a 100644 --- a/test/Ocean/HydrostaticBoussinesq/test_ocean_gyre.jl +++ b/test/Ocean/HydrostaticBoussinesq/test_ocean_gyre.jl @@ -94,11 +94,7 @@ function test_ocean_gyre(; ## every ntFreq timesteps. nt_freq = 30 cb = ClimateMachine.StateCheck.sccreate( - [ - (solver_config.Q, "Q"), - (solver_config.dg.state_auxiliary, "s_aux"), - (solver_config.dg.state_gradient_flux, "s_gflux"), - ], + [(solver_config.Q, "Q"), (solver_config.dg.state_auxiliary, "s_aux")], nt_freq; prec = 12, ) diff --git a/test/Ocean/refvals/3D_hydrostatic_spindown_refvals.jl b/test/Ocean/refvals/3D_hydrostatic_spindown_refvals.jl index 52238535e65..365b1e493e3 100644 --- a/test/Ocean/refvals/3D_hydrostatic_spindown_refvals.jl +++ b/test/Ocean/refvals/3D_hydrostatic_spindown_refvals.jl @@ -11,15 +11,6 @@ parr = [ ["s_aux", :w, 12, 12, 0, 12], ["s_aux", :pkin, 15, 15, 15, 15], ["s_aux", :wz0, 12, 12, 0, 12], - ["s_gflux", "ν∇u[1]", 12, 12, 0, 12], - ["s_gflux", "ν∇u[2]", 0, 0, 0, 0], - ["s_gflux", "ν∇u[3]", 12, 12, 0, 12], - ["s_gflux", "ν∇u[4]", 0, 0, 0, 0], - ["s_gflux", "ν∇u[5]", 0, 0, 0, 0], - ["s_gflux", "ν∇u[6]", 0, 0, 0, 0], - ["s_gflux", "κ∇θ[1]", 15, 15, 15, 15], - ["s_gflux", "κ∇θ[2]", 15, 15, 15, 15], - ["s_gflux", "κ∇θ[3]", 15, 15, 15, 15], ] ### fully explicit @@ -88,78 +79,6 @@ explicit = [ -4.04787314778332067465e-18, 1.42228420244457093172e-04, ], - [ - "gradient", - "ν∇u[1]", - -3.02533436906178843095e-02, - 3.02672063846342910554e-02, - -4.42668124378542436722e-17, - 1.39908850081337052945e-02, - ], - [ - "gradient", - "ν∇u[2]", - -1.98888312224296442203e-14, - 1.58585831384859874335e-14, - -5.97650441680448701261e-18, - 1.37599909069757041181e-15, - ], - [ - "gradient", - "ν∇u[3]", - -6.93365444020214706468e-05, - 6.93365444020245470704e-05, - -5.96744875736021625817e-21, - 3.47549857820500168802e-05, - ], - [ - "gradient", - "ν∇u[4]", - -1.40248249158552605926e-14, - 1.77948947362760857169e-14, - -2.48606279337477605597e-18, - 8.94870749961523651958e-16, - ], - [ - "gradient", - "ν∇u[5]", - -1.13225004558759602193e-14, - 7.96231567357939597811e-15, - -9.68557990199653647578e-18, - 7.40456230983618725513e-16, - ], - [ - "gradient", - "ν∇u[6]", - -3.88765647215842748497e-17, - 3.28753645073848130822e-17, - 1.34105203282856766272e-20, - 2.28666870835684302808e-18, - ], - [ - "gradient", - "κ∇θ[1]", - -0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - ], - [ - "gradient", - "κ∇θ[2]", - -0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - ], - [ - "gradient", - "κ∇θ[3]", - -0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - ], ] imex = [ @@ -227,78 +146,6 @@ imex = [ -5.08482145278321681062e-19, 1.39393318574472491710e-04, ], - [ - "gradient", - "ν∇u[1]", - -3.02008906327922432844e-02, - 3.02169054863201981542e-02, - -1.16529008664656427978e-17, - 1.39861266421406997551e-02, - ], - [ - "gradient", - "ν∇u[2]", - -2.05578465050897392358e-14, - 1.58090500493021862404e-14, - 1.23958046977554940041e-18, - 1.32883059463594900574e-15, - ], - [ - "gradient", - "ν∇u[3]", - -6.93350513318613547765e-05, - 6.93350513318593896601e-05, - -4.16333634234433666187e-21, - 3.47542054494539510360e-05, - ], - [ - "gradient", - "ν∇u[4]", - -1.59227879281875965199e-14, - 1.95717125927725476947e-14, - 1.95900079638567234050e-18, - 9.66273969680383041051e-16, - ], - [ - "gradient", - "ν∇u[5]", - -1.29213131818525770634e-14, - 9.56948291806534911195e-15, - 7.34176716746285465880e-19, - 8.32921568033785046159e-16, - ], - [ - "gradient", - "ν∇u[6]", - -3.92788480592504448907e-17, - 3.25194361857075705481e-17, - 9.97864173740318921758e-21, - 2.26587524647364862115e-18, - ], - [ - "gradient", - "κ∇θ[1]", - -0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - ], - [ - "gradient", - "κ∇θ[2]", - -0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - ], - [ - "gradient", - "κ∇θ[3]", - -0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - 0.00000000000000000000e+00, - ], ] refVals = (explicit = (explicit, parr), imex = (imex, parr)) diff --git a/test/Ocean/refvals/test_ocean_gyre_refvals.jl b/test/Ocean/refvals/test_ocean_gyre_refvals.jl index 46d5876fcbc..adc58466ea6 100644 --- a/test/Ocean/refvals/test_ocean_gyre_refvals.jl +++ b/test/Ocean/refvals/test_ocean_gyre_refvals.jl @@ -104,78 +104,6 @@ varr = [ -2.78589672590168561413e-08, 7.72520757253795920232e-06, ], - [ - "s_gflux", - "ν∇u[1]", - -1.84915426791050691892e-03, - 1.81823541139391206892e-03, - 4.41670652876216560588e-08, - 1.43003334026535461722e-04, - ], - [ - "s_gflux", - "ν∇u[2]", - -2.18923622988041743920e-03, - 1.83543406028729679316e-03, - 3.98744828991449433208e-06, - 3.02040505665129290977e-04, - ], - [ - "s_gflux", - "ν∇u[3]", - -1.31369743560772895408e-05, - 6.60039477945146449384e-06, - -1.12119891567145960325e-08, - 9.06617548358093396365e-07, - ], - [ - "s_gflux", - "ν∇u[4]", - -3.29092487463896604671e-03, - 3.71582885889340866492e-03, - -2.53728229769815408283e-06, - 2.97060576409856780689e-04, - ], - [ - "s_gflux", - "ν∇u[5]", - -3.81669587050501284836e-03, - 7.74606451320633592264e-04, - -5.95763172118155189140e-06, - 2.09071039491200258605e-04, - ], - [ - "s_gflux", - "ν∇u[6]", - -7.41189897881484784109e-06, - 1.26149616846000803353e-05, - 1.41878743800085061125e-08, - 1.12070628757683659611e-06, - ], - [ - "s_gflux", - "κ∇θ[1]", - -5.86968584224644812338e-05, - 4.34652887121820283387e-05, - -2.82719382567508372835e-06, - 8.15301391557321884090e-06, - ], - [ - "s_gflux", - "κ∇θ[2]", - -3.70308432284375849564e-05, - 3.11721545144766831389e-03, - 9.81447035540739714035e-04, - 8.31872571479874375368e-04, - ], - [ - "s_gflux", - "κ∇θ[3]", - -2.15846132870457054810e-05, - 2.00382267962942220408e-05, - -5.17436031104969784121e-07, - 1.79150072112032684306e-06, - ], ] parr = [ ["Q", "u[1]", 12, 12, 12, 12], @@ -186,15 +114,6 @@ parr = [ ["s_aux", :w, 12, 12, 12, 12], ["s_aux", :pkin, 12, 12, 12, 12], ["s_aux", :wz0, 12, 12, 12, 12], - ["s_gflux", "ν∇u[1]", 12, 12, 12, 12], - ["s_gflux", "ν∇u[2]", 12, 12, 12, 12], - ["s_gflux", "ν∇u[3]", 12, 12, 12, 12], - ["s_gflux", "ν∇u[4]", 12, 12, 12, 12], - ["s_gflux", "ν∇u[5]", 12, 12, 12, 12], - ["s_gflux", "ν∇u[6]", 12, 12, 12, 12], - ["s_gflux", "κ∇θ[1]", 12, 12, 12, 12], - ["s_gflux", "κ∇θ[2]", 12, 12, 12, 12], - ["s_gflux", "κ∇θ[3]", 12, 12, 8, 12], ] # END SCPRINT @@ -276,78 +195,6 @@ varr = [ -2.71999565492576589218e-08, 7.76164707621753630128e-06, ], - [ - "s_gflux", - "ν∇u[1]", - -1.85093041460835305498e-03, - 1.81880838666876047845e-03, - 4.56526424711389789871e-08, - 1.42643910766357428534e-04, - ], - [ - "s_gflux", - "ν∇u[2]", - -2.20819366719671563229e-03, - 1.84128108384750657951e-03, - 3.98074575776293245019e-06, - 3.03797417171225480129e-04, - ], - [ - "s_gflux", - "ν∇u[3]", - -1.32036367846675870225e-05, - 6.56099008285145167548e-06, - -1.24087351933463812712e-08, - 9.05500396408119435374e-07, - ], - [ - "s_gflux", - "ν∇u[4]", - -3.28419921150994737619e-03, - 3.70704618050693088249e-03, - -2.54827541969113706709e-06, - 2.96228406753828749521e-04, - ], - [ - "s_gflux", - "ν∇u[5]", - -3.80879251696829247351e-03, - 7.74834565383260352560e-04, - -5.93513695165015881065e-06, - 2.08479602570907525654e-04, - ], - [ - "s_gflux", - "ν∇u[6]", - -7.39839704966590930855e-06, - 1.26017207509591005658e-05, - 1.46129449482955510494e-08, - 1.11733219690338497597e-06, - ], - [ - "s_gflux", - "κ∇θ[1]", - -5.81601257251870891614e-05, - 4.70677319813339798652e-05, - -2.82659431063543911260e-06, - 8.16581551142350108366e-06, - ], - [ - "s_gflux", - "κ∇θ[2]", - -3.76891063975906055088e-05, - 3.10874693302757654570e-03, - 9.82036601802479310747e-04, - 8.31189786431030404844e-04, - ], - [ - "s_gflux", - "κ∇θ[3]", - -2.42394160392341078493e-06, - 8.68196014640797840416e-08, - -5.04918136536487334668e-07, - 3.01622429419160335704e-07, - ], ] parr = [ ["Q", "u[1]", 12, 12, 12, 12], @@ -358,15 +205,6 @@ parr = [ ["s_aux", :w, 12, 12, 12, 12], ["s_aux", :pkin, 12, 12, 12, 12], ["s_aux", :wz0, 12, 12, 12, 12], - ["s_gflux", "ν∇u[1]", 12, 12, 12, 12], - ["s_gflux", "ν∇u[2]", 12, 12, 12, 12], - ["s_gflux", "ν∇u[3]", 12, 12, 12, 12], - ["s_gflux", "ν∇u[4]", 12, 12, 12, 12], - ["s_gflux", "ν∇u[5]", 12, 12, 12, 12], - ["s_gflux", "ν∇u[6]", 12, 12, 12, 12], - ["s_gflux", "κ∇θ[1]", 12, 12, 12, 12], - ["s_gflux", "κ∇θ[2]", 12, 12, 12, 12], - ["s_gflux", "κ∇θ[3]", 12, 8, 12, 12], ] append!(refVals, [varr])