├── .gitignore ├── CITATION.cff ├── LICENSE ├── README.md ├── banner.txt ├── doc └── tutorial │ ├── beamercolorthememetropolis.sty │ ├── beamerfontthememetropolis.sty │ ├── beamerinnerthememetropolis.sty │ ├── beamerouterthememetropolis.sty │ ├── beamerthememetropolis.sty │ ├── figs │ └── d2q9.jpg │ ├── pgfplotsthemetol.sty │ ├── src │ ├── julia-setup.tex │ └── notation.tex │ ├── tutorial.pdf │ └── tutorial.tex ├── example_sims ├── 2phase │ └── 2phase.yaml ├── couette │ └── couette_velocity-profile.yaml ├── free-surface │ ├── dam │ │ ├── dam.yaml │ │ ├── dam_bingham.yaml │ │ ├── dam_bingham2.yaml │ │ ├── dam_bingham3.yaml │ │ ├── dam_bingham4.yaml │ │ ├── dam_with_obs.yaml │ │ ├── dam_with_obs2.yaml │ │ ├── dam_with_obs3.yaml │ │ ├── dam_with_obs4.yaml │ │ └── dam_with_obs5.yaml │ ├── fill_cavity.yaml │ ├── fill_cavity2.yaml │ ├── fill_cavity3.yaml │ ├── fill_cavity4.yaml │ └── pipe │ │ ├── pipe.yaml │ │ ├── pipe2.yaml │ │ ├── pipe2g-32.yaml │ │ ├── pipe2g.yaml │ │ ├── pipe3.yaml │ │ ├── pipe3g-32.yaml │ │ ├── pipe3g-32_b-000010.yaml │ │ ├── pipe3g-32_b-000025.yaml │ │ ├── pipe3g.yaml │ │ ├── pipe4.yaml │ │ ├── pipe4g.yaml │ │ ├── pipe_with_obs.yaml │ │ ├── pipeg.yaml │ │ ├── pipeg_nu-0050.yaml │ │ └── tow.yaml ├── lid │ ├── bingham │ │ ├── bingham-lid_bn001.yaml │ │ ├── bingham-lid_bn010.yaml │ │ └── bingham-lid_bn100.yaml │ └── lid.yaml └── poiseuille │ ├── poiseuille_pressure-contours.yaml │ └── poiseuille_velocity-profile.yaml ├── inc ├── LBXFlow.jl ├── accessors.jl ├── analytical.jl ├── api.jl ├── bcs │ ├── mass.jl │ └── vprofs.jl ├── boundary.jl ├── col │ ├── bgk.jl │ ├── collision.jl │ ├── constitutive.jl │ ├── entropic.jl │ ├── equilibrium.jl │ ├── filtering.jl │ ├── forcing.jl │ ├── forcing0.jl │ ├── freecol.jl │ ├── m2phase.jl │ ├── modcol.jl │ ├── mrt.jl │ ├── mrt_matrices.jl │ ├── pmodcol.jl │ └── stdcol.jl ├── convergence.jl ├── debug.jl ├── entropy.jl ├── io │ ├── animate.jl │ ├── animate0.jl │ ├── readwrite.jl │ └── sample.jl ├── lattice.jl ├── lbxio.jl ├── multiscale.jl ├── numerics.jl ├── obstacle.jl ├── profile.jl ├── sim │ ├── adapt.jl │ ├── lazy.jl │ ├── recolor.jl │ ├── simtypes.jl │ ├── simulate.jl │ └── tracking.jl └── stability.jl ├── lbxflow.jl ├── publication_sims ├── archive │ ├── elbm │ │ ├── elbm_Re2000.yaml │ │ ├── elbm_Re5000.yaml │ │ └── elbm_Re7500.yaml │ ├── filter │ │ ├── median-filter_Re2000.yaml │ │ ├── median-filter_Re5000.yaml │ │ └── median-filter_Re7500.yaml │ ├── poise │ │ ├── chen │ │ │ ├── explicit │ │ │ │ ├── 000000.yaml │ │ │ │ ├── 000004.yaml │ │ │ │ ├── 000008.yaml │ │ │ │ └── 000012.yaml │ │ │ └── implicit │ │ │ │ ├── 000000.yaml │ │ │ │ ├── 000004.yaml │ │ │ │ ├── 000008.yaml │ │ │ │ └── 000012.yaml │ │ └── wang │ │ │ ├── explicit │ │ │ ├── 0000.yaml │ │ │ ├── 0001.yaml │ │ │ ├── 0005.yaml │ │ │ └── 0010.yaml │ │ │ └── implicit │ │ │ ├── 0000.yaml │ │ │ ├── 0001.yaml │ │ │ ├── 0005.yaml │ │ │ └── 0010.yaml │ └── power_law │ │ ├── 050.yaml │ │ ├── 075.yaml │ │ ├── 100.yaml │ │ ├── 125.yaml │ │ ├── 150.yaml │ │ └── 175.yaml ├── bgk_v_mrt │ └── poise │ │ ├── 001 │ │ ├── bgk │ │ │ ├── 000000.yaml │ │ │ ├── 000004.yaml │ │ │ ├── 000008.yaml │ │ │ └── 000012.yaml │ │ ├── mrt │ │ │ ├── 000000.yaml │ │ │ ├── 000004.yaml │ │ │ ├── 000008.yaml │ │ │ └── 000012.yaml │ │ └── svec │ │ │ ├── 000000.yaml │ │ │ ├── 000004.yaml │ │ │ ├── 000008.yaml │ │ │ └── 000012.yaml │ │ ├── 002 │ │ ├── bgk │ │ │ ├── re-003_bn-0025.yaml │ │ │ ├── re-010_bn-0025.yaml │ │ │ ├── re-100_bn-0025.yaml │ │ │ └── re-500_bn-0025.yaml │ │ ├── mrt │ │ │ ├── re-003_bn-0025.yaml │ │ │ ├── re-010_bn-0025.yaml │ │ │ ├── re-100_bn-0025.yaml │ │ │ └── re-500_bn-0025.yaml │ │ └── svec │ │ │ ├── re-003_bn-0025.yaml │ │ │ ├── re-010_bn-0025.yaml │ │ │ ├── re-100_bn-0025.yaml │ │ │ └── re-500_bn-0025.yaml │ │ ├── 003 │ │ ├── bgk │ │ │ ├── 000000.yaml │ │ │ ├── 000004.yaml │ │ │ ├── 000008.yaml │ │ │ └── 000012.yaml │ │ └── mrt │ │ │ ├── 000000.yaml │ │ │ ├── 000004.yaml │ │ │ ├── 000008.yaml │ │ │ └── 000012.yaml │ │ ├── 004 │ │ ├── bgk │ │ │ ├── 000000.yaml │ │ │ ├── 000004.yaml │ │ │ ├── 000008.yaml │ │ │ └── 000012.yaml │ │ └── mrt │ │ │ ├── 000000.yaml │ │ │ ├── 000004.yaml │ │ │ ├── 000008.yaml │ │ │ ├── 000012.yaml │ │ │ ├── 000016.yaml │ │ │ └── 000020.yaml │ │ ├── 005 │ │ ├── bgk │ │ │ ├── 02.yaml │ │ │ ├── 04.yaml │ │ │ ├── 06.yaml │ │ │ └── 08.yaml │ │ └── mrt │ │ │ ├── 02.yaml │ │ │ ├── 04.yaml │ │ │ ├── 06.yaml │ │ │ └── 08.yaml │ │ └── 006 │ │ ├── bgk │ │ ├── 000000.yaml │ │ ├── 000004.yaml │ │ ├── 000008.yaml │ │ ├── 000012.yaml │ │ ├── 000024.yaml │ │ └── 000036.yaml │ │ ├── mrt │ │ ├── 000000.yaml │ │ ├── 000004.yaml │ │ ├── 000008.yaml │ │ ├── 000012.yaml │ │ ├── 000024.yaml │ │ └── 000036.yaml │ │ └── svec │ │ ├── 000000.yaml │ │ ├── 000004.yaml │ │ ├── 000008.yaml │ │ ├── 000012.yaml │ │ ├── 000024.yaml │ │ └── 000036.yaml ├── bingham_channel │ ├── base │ │ ├── re-003_bn-0025.yaml │ │ ├── re-010_bn-0025.yaml │ │ ├── re-050_bn-0001.yaml │ │ ├── re-050_bn-0005.yaml │ │ ├── re-050_bn-0050.yaml │ │ ├── re-050_bn-0500.yaml │ │ └── re-100_bn-0025.yaml │ ├── cavity │ │ ├── re-003_bn-0025.yaml │ │ ├── re-010_bn-0025.yaml │ │ ├── re-050_bn-0001.yaml │ │ ├── re-050_bn-0005.yaml │ │ ├── re-050_bn-0050.yaml │ │ ├── re-050_bn-0500.yaml │ │ └── re-100_bn-0025.yaml │ ├── expand │ │ ├── re-003_bn-0025.yaml │ │ ├── re-010_bn-0025.yaml │ │ ├── re-050_bn-0001.yaml │ │ ├── re-050_bn-0005.yaml │ │ ├── re-050_bn-0050.yaml │ │ ├── re-050_bn-0500.yaml │ │ └── re-100_bn-0025.yaml │ └── notch │ │ ├── re-003_bn-0025.yaml │ │ ├── re-010_bn-0025.yaml │ │ ├── re-050_bn-0001.yaml │ │ ├── re-050_bn-0005.yaml │ │ ├── re-050_bn-0050.yaml │ │ ├── re-050_bn-0500.yaml │ │ └── re-100_bn-0025.yaml ├── bingham_lid │ ├── 200 │ │ ├── filter │ │ │ ├── filter_Re5000_tau004_200grid.yaml │ │ │ ├── filter_Re5000_tau012_200grid.yaml │ │ │ └── filter_Re7500_tau004_200grid.yaml │ │ ├── mrt │ │ │ ├── mrt_Re5000_tau004_200grid.yaml │ │ │ ├── mrt_Re5000_tau012_200grid.yaml │ │ │ └── mrt_Re7500_tau004_200grid.yaml │ │ ├── svec │ │ │ ├── svec_Re5000_tau004_200grid.yaml │ │ │ ├── svec_Re5000_tau008_200grid.yaml │ │ │ ├── svec_Re5000_tau012_200grid.yaml │ │ │ └── svec_Re7500_tau004_200grid.yaml │ │ └── unregulated │ │ │ ├── unregulated_Re5000_tau004_200grid.yaml │ │ │ ├── unregulated_Re5000_tau008_200grid.yaml │ │ │ ├── unregulated_Re5000_tau012_200grid.yaml │ │ │ └── unregulated_Re7500_tau004_200grid.yaml │ ├── HL │ │ └── HL_Re2000_tau004.yaml │ ├── chen │ │ ├── chen_bingham_Re100_Bn-hundredth.yaml │ │ ├── chen_bingham_Re100_Bn-one.yaml │ │ └── chen_bingham_Re100_Bn-tenth.yaml │ ├── filter │ │ ├── filter_Re10000_tau004.yaml │ │ ├── filter_Re15000_tau004.yaml │ │ ├── filter_Re2000_tau004.yaml │ │ ├── filter_Re5000_tau004.yaml │ │ ├── filter_Re5000_tau008.yaml │ │ ├── filter_Re5000_tau012.yaml │ │ ├── filter_Re5000_tau016.yaml │ │ └── filter_Re7500_tau004.yaml │ ├── mitsoulis │ │ ├── mitsoulis_Re0_tau2.yaml │ │ └── mitsoulis_Re0_tau2_tryingdiffninj.yaml │ ├── mrt │ │ ├── mrt_Re10000_tau004.yaml │ │ ├── mrt_Re15000_tau004.yaml │ │ ├── mrt_Re2000_tau004.yaml │ │ ├── mrt_Re5000_tau004.yaml │ │ ├── mrt_Re5000_tau008.yaml │ │ ├── mrt_Re5000_tau012.yaml │ │ ├── mrt_Re5000_tau016.yaml │ │ └── mrt_Re7500_tau004.yaml │ ├── mrt_filter │ │ ├── mrt_filter_Re10000_tau004.yaml │ │ ├── mrt_filter_Re15000_tau004.yaml │ │ ├── mrt_filter_Re2000_tau004.yaml │ │ ├── mrt_filter_Re5000_tau004.yaml │ │ ├── mrt_filter_Re5000_tau008.yaml │ │ ├── mrt_filter_Re5000_tau012.yaml │ │ ├── mrt_filter_Re5000_tau016.yaml │ │ └── mrt_filter_Re7500_tau004.yaml │ ├── svec │ │ ├── svec_Re2000_tau004.yaml │ │ ├── svec_Re5000_tau004.yaml │ │ ├── svec_Re5000_tau008.yaml │ │ ├── svec_Re5000_tau012.yaml │ │ └── svec_Re7500_tau004.yaml │ └── unregulated │ │ ├── unregulated_Re2000.yaml │ │ ├── unregulated_Re2000_tau004.yaml │ │ ├── unregulated_Re5000_tau004.yaml │ │ ├── unregulated_Re5000_tau008.yaml │ │ ├── unregulated_Re5000_tau012.yaml │ │ └── unregulated_Re7500_tau004.yaml ├── for_paper │ ├── bingham_lid │ │ ├── 100 │ │ │ ├── bgk-5 │ │ │ │ ├── bingham_100_bgk-5_Bn100_Re100.yaml │ │ │ │ ├── bingham_100_bgk-5_Bn100_Re1000.yaml │ │ │ │ ├── bingham_100_bgk-5_Bn100_Re10000.yaml │ │ │ │ ├── bingham_100_bgk-5_Bn100_Re5000.yaml │ │ │ │ ├── bingham_100_bgk-5_Bn10_Re100.yaml │ │ │ │ ├── bingham_100_bgk-5_Bn10_Re1000.yaml │ │ │ │ ├── bingham_100_bgk-5_Bn10_Re10000.yaml │ │ │ │ ├── bingham_100_bgk-5_Bn10_Re5000.yaml │ │ │ │ ├── bingham_100_bgk-5_Bn1_Re100.yaml │ │ │ │ ├── bingham_100_bgk-5_Bn1_Re1000.yaml │ │ │ │ ├── bingham_100_bgk-5_Bn1_Re10000.yaml │ │ │ │ └── bingham_100_bgk-5_Bn1_Re5000.yaml │ │ │ ├── bgk-8 │ │ │ │ ├── bingham_100_bgk-8_Bn100_Re100.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn100_Re1000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn100_Re10000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn100_Re5000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn10_Re100.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn10_Re1000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn10_Re10000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn10_Re5000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn1_Re100.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn1_Re1000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn1_Re10000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn1_Re1500.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn1_Re2000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn1_Re2500.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn1_Re3000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn1_Re3500.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn1_Re4000.yaml │ │ │ │ ├── bingham_100_bgk-8_Bn1_Re4500.yaml │ │ │ │ └── bingham_100_bgk-8_Bn1_Re5000.yaml │ │ │ ├── bgk-filter-8 │ │ │ │ ├── bingham_100_bgk-filter_Bn100_Re100.yaml │ │ │ │ ├── bingham_100_bgk-filter_Bn100_Re1000.yaml │ │ │ │ ├── bingham_100_bgk-filter_Bn100_Re10000.yaml │ │ │ │ ├── bingham_100_bgk-filter_Bn100_Re5000.yaml │ │ │ │ ├── bingham_100_bgk-filter_Bn10_Re100.yaml │ │ │ │ ├── bingham_100_bgk-filter_Bn10_Re1000.yaml │ │ │ │ ├── bingham_100_bgk-filter_Bn10_Re10000.yaml │ │ │ │ ├── bingham_100_bgk-filter_Bn10_Re5000.yaml │ │ │ │ ├── bingham_100_bgk-filter_Bn1_Re100.yaml │ │ │ │ ├── bingham_100_bgk-filter_Bn1_Re1000.yaml │ │ │ │ ├── bingham_100_bgk-filter_Bn1_Re10000.yaml │ │ │ │ └── bingham_100_bgk-filter_Bn1_Re5000.yaml │ │ │ ├── mrt-8 │ │ │ │ ├── bingham_100_mrt-8_Bn100_Re100.yaml │ │ │ │ ├── bingham_100_mrt-8_Bn100_Re1000.yaml │ │ │ │ ├── bingham_100_mrt-8_Bn100_Re10000.yaml │ │ │ │ ├── bingham_100_mrt-8_Bn100_Re5000.yaml │ │ │ │ ├── bingham_100_mrt-8_Bn10_Re100.yaml │ │ │ │ ├── bingham_100_mrt-8_Bn10_Re1000.yaml │ │ │ │ ├── bingham_100_mrt-8_Bn10_Re10000.yaml │ │ │ │ ├── bingham_100_mrt-8_Bn10_Re5000.yaml │ │ │ │ ├── bingham_100_mrt-8_Bn1_Re100.yaml │ │ │ │ ├── bingham_100_mrt-8_Bn1_Re1000.yaml │ │ │ │ ├── bingham_100_mrt-8_Bn1_Re10000.yaml │ │ │ │ └── bingham_100_mrt-8_Bn1_Re5000.yaml │ │ │ ├── mrt-filter-8 │ │ │ │ ├── bingham_100_mrt-filter_Bn100_Re100.yaml │ │ │ │ ├── bingham_100_mrt-filter_Bn100_Re1000.yaml │ │ │ │ ├── bingham_100_mrt-filter_Bn100_Re10000.yaml │ │ │ │ ├── bingham_100_mrt-filter_Bn100_Re5000.yaml │ │ │ │ ├── bingham_100_mrt-filter_Bn10_Re100.yaml │ │ │ │ ├── bingham_100_mrt-filter_Bn10_Re1000.yaml │ │ │ │ ├── bingham_100_mrt-filter_Bn10_Re10000.yaml │ │ │ │ ├── bingham_100_mrt-filter_Bn10_Re5000.yaml │ │ │ │ ├── bingham_100_mrt-filter_Bn1_Re100.yaml │ │ │ │ ├── bingham_100_mrt-filter_Bn1_Re1000.yaml │ │ │ │ ├── bingham_100_mrt-filter_Bn1_Re10000.yaml │ │ │ │ └── bingham_100_mrt-filter_Bn1_Re5000.yaml │ │ │ ├── svec-5 │ │ │ │ ├── bingham_100_svec-5_Bn100_Re100.yaml │ │ │ │ ├── bingham_100_svec-5_Bn100_Re1000.yaml │ │ │ │ ├── bingham_100_svec-5_Bn100_Re10000.yaml │ │ │ │ ├── bingham_100_svec-5_Bn100_Re5000.yaml │ │ │ │ ├── bingham_100_svec-5_Bn10_Re100.yaml │ │ │ │ ├── bingham_100_svec-5_Bn10_Re1000.yaml │ │ │ │ ├── bingham_100_svec-5_Bn10_Re10000.yaml │ │ │ │ ├── bingham_100_svec-5_Bn10_Re5000.yaml │ │ │ │ ├── bingham_100_svec-5_Bn1_Re100.yaml │ │ │ │ ├── bingham_100_svec-5_Bn1_Re1000.yaml │ │ │ │ ├── bingham_100_svec-5_Bn1_Re10000.yaml │ │ │ │ └── bingham_100_svec-5_Bn1_Re5000.yaml │ │ │ └── svec-8 │ │ │ │ ├── bingham_100_svec-8_Bn100_Re100.yaml │ │ │ │ ├── bingham_100_svec-8_Bn100_Re1000.yaml │ │ │ │ ├── bingham_100_svec-8_Bn100_Re10000.yaml │ │ │ │ ├── bingham_100_svec-8_Bn100_Re5000.yaml │ │ │ │ ├── bingham_100_svec-8_Bn10_Re100.yaml │ │ │ │ ├── bingham_100_svec-8_Bn10_Re1000.yaml │ │ │ │ ├── bingham_100_svec-8_Bn10_Re10000.yaml │ │ │ │ ├── bingham_100_svec-8_Bn10_Re5000.yaml │ │ │ │ ├── bingham_100_svec-8_Bn1_Re100.yaml │ │ │ │ ├── bingham_100_svec-8_Bn1_Re1000.yaml │ │ │ │ ├── bingham_100_svec-8_Bn1_Re10000.yaml │ │ │ │ └── bingham_100_svec-8_Bn1_Re5000.yaml │ │ ├── 200 │ │ │ ├── bgk-5 │ │ │ │ ├── bingham_200_bgk-5_Bn100_Re100.yaml │ │ │ │ ├── bingham_200_bgk-5_Bn100_Re1000.yaml │ │ │ │ ├── bingham_200_bgk-5_Bn100_Re10000.yaml │ │ │ │ ├── bingham_200_bgk-5_Bn100_Re5000.yaml │ │ │ │ ├── bingham_200_bgk-5_Bn10_Re100.yaml │ │ │ │ ├── bingham_200_bgk-5_Bn10_Re1000.yaml │ │ │ │ ├── bingham_200_bgk-5_Bn10_Re10000.yaml │ │ │ │ ├── bingham_200_bgk-5_Bn10_Re5000.yaml │ │ │ │ ├── bingham_200_bgk-5_Bn1_Re100.yaml │ │ │ │ ├── bingham_200_bgk-5_Bn1_Re1000.yaml │ │ │ │ ├── bingham_200_bgk-5_Bn1_Re10000.yaml │ │ │ │ └── bingham_200_bgk-5_Bn1_Re5000.yaml │ │ │ ├── bgk-8 │ │ │ │ ├── bingham_200_bgk-8_Bn100_Re100.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn100_Re1000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn100_Re10000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn100_Re5000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn10_Re100.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn10_Re1000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn10_Re10000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn10_Re5000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn1_Re100.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn1_Re1000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn1_Re10000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn1_Re1500.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn1_Re2000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn1_Re2500.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn1_Re3000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn1_Re3500.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn1_Re4000.yaml │ │ │ │ ├── bingham_200_bgk-8_Bn1_Re4500.yaml │ │ │ │ └── bingham_200_bgk-8_Bn1_Re5000.yaml │ │ │ ├── bgk-filter-8 │ │ │ │ ├── bingham_200_bgk-filter_Bn100_Re100.yaml │ │ │ │ ├── bingham_200_bgk-filter_Bn100_Re1000.yaml │ │ │ │ ├── bingham_200_bgk-filter_Bn100_Re10000.yaml │ │ │ │ ├── bingham_200_bgk-filter_Bn100_Re5000.yaml │ │ │ │ ├── bingham_200_bgk-filter_Bn10_Re100.yaml │ │ │ │ ├── bingham_200_bgk-filter_Bn10_Re1000.yaml │ │ │ │ ├── bingham_200_bgk-filter_Bn10_Re10000.yaml │ │ │ │ ├── bingham_200_bgk-filter_Bn10_Re5000.yaml │ │ │ │ ├── bingham_200_bgk-filter_Bn1_Re100.yaml │ │ │ │ ├── bingham_200_bgk-filter_Bn1_Re1000.yaml │ │ │ │ ├── bingham_200_bgk-filter_Bn1_Re10000.yaml │ │ │ │ └── bingham_200_bgk-filter_Bn1_Re5000.yaml │ │ │ ├── mrt-8 │ │ │ │ ├── bingham_200_mrt-8_Bn100_Re100.yaml │ │ │ │ ├── bingham_200_mrt-8_Bn100_Re1000.yaml │ │ │ │ ├── bingham_200_mrt-8_Bn100_Re10000.yaml │ │ │ │ ├── bingham_200_mrt-8_Bn100_Re5000.yaml │ │ │ │ ├── bingham_200_mrt-8_Bn10_Re100.yaml │ │ │ │ ├── bingham_200_mrt-8_Bn10_Re1000.yaml │ │ │ │ ├── bingham_200_mrt-8_Bn10_Re10000.yaml │ │ │ │ ├── bingham_200_mrt-8_Bn10_Re5000.yaml │ │ │ │ ├── bingham_200_mrt-8_Bn1_Re100.yaml │ │ │ │ ├── bingham_200_mrt-8_Bn1_Re1000.yaml │ │ │ │ ├── bingham_200_mrt-8_Bn1_Re10000.yaml │ │ │ │ └── bingham_200_mrt-8_Bn1_Re5000.yaml │ │ │ ├── mrt-filter-8 │ │ │ │ ├── bingham_200_mrt-filter_Bn100_Re100.yaml │ │ │ │ ├── bingham_200_mrt-filter_Bn100_Re1000.yaml │ │ │ │ ├── bingham_200_mrt-filter_Bn100_Re10000.yaml │ │ │ │ ├── bingham_200_mrt-filter_Bn100_Re5000.yaml │ │ │ │ ├── bingham_200_mrt-filter_Bn10_Re100.yaml │ │ │ │ ├── bingham_200_mrt-filter_Bn10_Re1000.yaml │ │ │ │ ├── bingham_200_mrt-filter_Bn10_Re10000.yaml │ │ │ │ ├── bingham_200_mrt-filter_Bn10_Re5000.yaml │ │ │ │ ├── bingham_200_mrt-filter_Bn1_Re100.yaml │ │ │ │ ├── bingham_200_mrt-filter_Bn1_Re1000.yaml │ │ │ │ ├── bingham_200_mrt-filter_Bn1_Re10000.yaml │ │ │ │ └── bingham_200_mrt-filter_Bn1_Re5000.yaml │ │ │ ├── svec-5 │ │ │ │ ├── bingham_200_svec-5_Bn100_Re100.yaml │ │ │ │ ├── bingham_200_svec-5_Bn100_Re1000.yaml │ │ │ │ ├── bingham_200_svec-5_Bn100_Re10000.yaml │ │ │ │ ├── bingham_200_svec-5_Bn100_Re5000.yaml │ │ │ │ ├── bingham_200_svec-5_Bn10_Re100.yaml │ │ │ │ ├── bingham_200_svec-5_Bn10_Re1000.yaml │ │ │ │ ├── bingham_200_svec-5_Bn10_Re10000.yaml │ │ │ │ ├── bingham_200_svec-5_Bn10_Re5000.yaml │ │ │ │ ├── bingham_200_svec-5_Bn1_Re100.yaml │ │ │ │ ├── bingham_200_svec-5_Bn1_Re1000.yaml │ │ │ │ ├── bingham_200_svec-5_Bn1_Re10000.yaml │ │ │ │ └── bingham_200_svec-5_Bn1_Re5000.yaml │ │ │ └── svec-8 │ │ │ │ ├── bingham_200_svec-8_Bn100_Re100.yaml │ │ │ │ ├── bingham_200_svec-8_Bn100_Re1000.yaml │ │ │ │ ├── bingham_200_svec-8_Bn100_Re10000.yaml │ │ │ │ ├── bingham_200_svec-8_Bn100_Re5000.yaml │ │ │ │ ├── bingham_200_svec-8_Bn10_Re100.yaml │ │ │ │ ├── bingham_200_svec-8_Bn10_Re1000.yaml │ │ │ │ ├── bingham_200_svec-8_Bn10_Re10000.yaml │ │ │ │ ├── bingham_200_svec-8_Bn10_Re5000.yaml │ │ │ │ ├── bingham_200_svec-8_Bn1_Re100.yaml │ │ │ │ ├── bingham_200_svec-8_Bn1_Re1000.yaml │ │ │ │ ├── bingham_200_svec-8_Bn1_Re10000.yaml │ │ │ │ └── bingham_200_svec-8_Bn1_Re5000.yaml │ │ └── 300 │ │ │ └── bgk-8 │ │ │ ├── bingham_300_bgk-8_Bn10_Re10000.yaml │ │ │ ├── bingham_300_bgk-8_Bn10_Re5000.yaml │ │ │ ├── bingham_300_bgk-8_Bn1_Re10000.yaml │ │ │ └── bingham_300_bgk-8_Bn1_Re5000.yaml │ ├── bingham_poise │ │ └── noise │ │ │ ├── bgk_008.yaml │ │ │ ├── bgk_ehren-000010_008.yaml │ │ │ ├── bgk_ehren-000100_008.yaml │ │ │ ├── bgk_fltr-000010_008.yaml │ │ │ ├── bgk_fltr-000100_008.yaml │ │ │ └── mrt_008.yaml │ ├── lid │ │ ├── bingham_pstudy.yaml │ │ ├── n-125_svec-1.yaml │ │ └── power-law_pstudy.yaml │ ├── poise │ │ ├── bingham_pstudy2.yaml │ │ ├── draft │ │ │ ├── bingham-fltr_pstudy.yaml │ │ │ ├── bingham_pstudy.yaml │ │ │ ├── ehren_bgk-8.yaml │ │ │ ├── ehren_bgk-8_delta-1.yaml │ │ │ ├── ehren_bgk-8_delta-1e-1.yaml │ │ │ ├── ehren_bgk-8_delta-1e-2.yaml │ │ │ ├── ehren_bgk-8_delta-1e-3.yaml │ │ │ ├── ehren_bgk-8_delta-1e-4.yaml │ │ │ ├── ehren_bgk-8_delta-1e-5.yaml │ │ │ ├── ehren_bgk-8_delta-1e1.yaml │ │ │ ├── for-opt_median_bgk-12.yaml │ │ │ ├── for-opt_median_bgk-12.yaml.bak │ │ │ ├── median_bgk-8.yaml │ │ │ ├── median_bgk-8_delta-1.yaml │ │ │ ├── median_bgk-8_delta-1e-1.yaml │ │ │ ├── median_bgk-8_delta-1e-2.yaml │ │ │ ├── median_bgk-8_delta-1e-3.yaml │ │ │ ├── median_bgk-8_delta-1e-4.yaml │ │ │ ├── median_bgk-8_delta-1e-5.yaml │ │ │ ├── median_bgk-8_delta-1e1.yaml │ │ │ ├── power-law_pstudy.yaml │ │ │ ├── tau-04_bgk-5.yaml │ │ │ ├── tau-04_bgk-8.yaml │ │ │ ├── tau-04_bgk-fltr.yaml │ │ │ ├── tau-04_mrt.yaml │ │ │ ├── tau-04_svec.yaml │ │ │ ├── tau-08_bgk-5.yaml │ │ │ ├── tau-08_bgk-8.yaml │ │ │ ├── tau-08_bgk-fltr.yaml │ │ │ ├── tau-08_mrt.yaml │ │ │ ├── tau-08_svec.yaml │ │ │ ├── tau-12_bgk-5.yaml │ │ │ ├── tau-12_bgk-8.yaml │ │ │ ├── tau-12_bgk-fltr.yaml │ │ │ ├── tau-12_mrt.yaml │ │ │ ├── tau-12_svec.yaml │ │ │ ├── tau-16_bgk-5.yaml │ │ │ ├── tau-16_bgk-8.yaml │ │ │ ├── tau-16_bgk-fltr.yaml │ │ │ ├── tau-16_mrt.yaml │ │ │ └── tau-16_svec.yaml │ │ └── power-law_pstudy.yaml │ └── power_lid │ │ ├── 100x100 │ │ ├── bgk-filter │ │ │ ├── power_bgk-filter_100_n0.5_Re100.yaml │ │ │ ├── power_bgk-filter_100_n0.5_Re1000.yaml │ │ │ ├── power_bgk-filter_100_n0.5_Re10000.yaml │ │ │ ├── power_bgk-filter_100_n0.5_Re5000.yaml │ │ │ ├── power_bgk-filter_100_n1.5_Re100.yaml │ │ │ ├── power_bgk-filter_100_n1.5_Re1000.yaml │ │ │ ├── power_bgk-filter_100_n1.5_Re10000.yaml │ │ │ └── power_bgk-filter_100_n1.5_Re5000.yaml │ │ ├── bgk │ │ │ ├── power_bgk_100_n0.5_Re100.yaml │ │ │ ├── power_bgk_100_n0.5_Re1000.yaml │ │ │ ├── power_bgk_100_n0.5_Re10000.yaml │ │ │ ├── power_bgk_100_n0.5_Re5000.yaml │ │ │ ├── power_bgk_100_n1.5_Re100.yaml │ │ │ ├── power_bgk_100_n1.5_Re1000.yaml │ │ │ ├── power_bgk_100_n1.5_Re10000.yaml │ │ │ └── power_bgk_100_n1.5_Re5000.yaml │ │ ├── mrt-filter │ │ │ ├── power_mrt-filter_100_n0.5_Re100.yaml │ │ │ ├── power_mrt-filter_100_n0.5_Re1000.yaml │ │ │ ├── power_mrt-filter_100_n0.5_Re10000.yaml │ │ │ ├── power_mrt-filter_100_n0.5_Re5000.yaml │ │ │ ├── power_mrt-filter_100_n1.5_Re100.yaml │ │ │ ├── power_mrt-filter_100_n1.5_Re1000.yaml │ │ │ ├── power_mrt-filter_100_n1.5_Re10000.yaml │ │ │ └── power_mrt-filter_100_n1.5_Re5000.yaml │ │ ├── mrt │ │ │ ├── power_mrt_100_n0.5_Re100.yaml │ │ │ ├── power_mrt_100_n0.5_Re1000.yaml │ │ │ ├── power_mrt_100_n0.5_Re10000.yaml │ │ │ ├── power_mrt_100_n0.5_Re5000.yaml │ │ │ ├── power_mrt_100_n1.5_Re100.yaml │ │ │ ├── power_mrt_100_n1.5_Re1000.yaml │ │ │ ├── power_mrt_100_n1.5_Re10000.yaml │ │ │ └── power_mrt_100_n1.5_Re5000.yaml │ │ └── svec │ │ │ ├── power_svec_100_n0.5_Re100.yaml │ │ │ ├── power_svec_100_n0.5_Re1000.yaml │ │ │ ├── power_svec_100_n0.5_Re10000.yaml │ │ │ ├── power_svec_100_n0.5_Re5000.yaml │ │ │ ├── power_svec_100_n1.5_Re100.yaml │ │ │ ├── power_svec_100_n1.5_Re1000.yaml │ │ │ ├── power_svec_100_n1.5_Re10000.yaml │ │ │ └── power_svec_100_n1.5_Re5000.yaml │ │ └── benchmarks │ │ ├── power_bgk-filter_100_n0.25_Re20000.yaml │ │ ├── power_bgk-filter_100_n0.25_Re30000.yaml │ │ ├── power_bgk-filter_100_n0.5_Re500.yaml │ │ ├── power_bgk-filter_100_n1.75_Re22000.yaml │ │ ├── power_bgk-filter_100_n1.75_Re30000.yaml │ │ ├── power_bgk-filter_256_n0.25_Re20000.yaml │ │ ├── power_bgk-filter_256_n0.25_Re30000.yaml │ │ ├── power_bgk-filter_256_n1.75_Re22000.yaml │ │ ├── power_bgk-filter_256_n1.75_Re30000.yaml │ │ ├── power_bgk_100_n0.25_Re20000.yaml │ │ ├── power_bgk_100_n0.25_Re30000.yaml │ │ ├── power_bgk_100_n0.5_Re100.yaml │ │ ├── power_bgk_100_n0.5_Re500.yaml │ │ ├── power_bgk_100_n0.75_Re100.yaml │ │ ├── power_bgk_100_n1.0_Re100.yaml │ │ ├── power_bgk_100_n1.0_Re500.yaml │ │ ├── power_bgk_100_n1.5_Re100.yaml │ │ ├── power_bgk_100_n1.5_Re500.yaml │ │ ├── power_bgk_100_n1.75_Re22000.yaml │ │ ├── power_bgk_100_n1.75_Re30000.yaml │ │ ├── power_bgk_256_n0.25_Re20000.yaml │ │ ├── power_bgk_256_n0.25_Re30000.yaml │ │ ├── power_bgk_256_n0.5_Re100.yaml │ │ ├── power_bgk_256_n0.5_Re500.yaml │ │ ├── power_bgk_256_n0.75_Re100.yaml │ │ ├── power_bgk_256_n1.0_Re100.yaml │ │ ├── power_bgk_256_n1.0_Re500.yaml │ │ ├── power_bgk_256_n1.5_Re100.yaml │ │ ├── power_bgk_256_n1.5_Re500.yaml │ │ ├── power_bgk_256_n1.75_Re22000.yaml │ │ ├── power_bgk_256_n1.75_Re30000.yaml │ │ ├── power_mrt_100_n0.5_Re100.yaml │ │ ├── power_mrt_100_n0.5_Re500.yaml │ │ ├── power_mrt_100_n0.75_Re100.yaml │ │ ├── power_mrt_100_n1.0_Re100.yaml │ │ ├── power_mrt_100_n1.0_Re500.yaml │ │ ├── power_mrt_100_n1.5_Re100.yaml │ │ ├── power_mrt_100_n1.5_Re500.yaml │ │ ├── power_mrt_256_n0.5_Re100.yaml │ │ ├── power_mrt_256_n0.5_Re500.yaml │ │ ├── power_mrt_256_n0.75_Re100.yaml │ │ ├── power_mrt_256_n1.0_Re100.yaml │ │ ├── power_mrt_256_n1.0_Re500.yaml │ │ ├── power_mrt_256_n1.5_Re100.yaml │ │ └── power_mrt_256_n1.5_Re500.yaml ├── stability_tests │ ├── test_HL_bingham_000.yaml │ ├── test_HL_bingham_004.yaml │ ├── test_HL_bingham_008.yaml │ ├── test_HL_bingham_012.yaml │ ├── test_HL_bingham_016.yaml │ ├── test_HL_bingham_020.yaml │ ├── test_filter_HL_bingham_000.yaml │ ├── test_filter_HL_bingham_004.yaml │ ├── test_filter_HL_bingham_008.yaml │ ├── test_filter_HL_bingham_012.yaml │ ├── test_filter_HL_bingham_016.yaml │ ├── test_filter_HL_bingham_020.yaml │ ├── test_filter_mrt_bingham_000.yaml │ ├── test_filter_mrt_bingham_004.yaml │ ├── test_filter_mrt_bingham_008.yaml │ ├── test_filter_mrt_bingham_012.yaml │ ├── test_filter_mrt_bingham_016.yaml │ ├── test_filter_mrt_bingham_020.yaml │ ├── test_filter_srt_bingham_000.yaml │ ├── test_filter_srt_bingham_004.yaml │ ├── test_filter_srt_bingham_008.yaml │ ├── test_filter_srt_bingham_012.yaml │ ├── test_filter_srt_bingham_016.yaml │ ├── test_filter_srt_bingham_020.yaml │ ├── test_mrt_bingham_000.yaml │ ├── test_mrt_bingham_004.yaml │ ├── test_mrt_bingham_008.yaml │ ├── test_mrt_bingham_012.yaml │ ├── test_mrt_bingham_016.yaml │ ├── test_mrt_bingham_020.yaml │ ├── test_srt_bingham_000.yaml │ ├── test_srt_bingham_004.yaml │ ├── test_srt_bingham_008.yaml │ ├── test_srt_bingham_012.yaml │ ├── test_srt_bingham_016.yaml │ └── test_srt_bingham_020.yaml ├── tows │ ├── archive │ │ ├── tow.yaml │ │ ├── tow_n-050.yaml │ │ ├── tow_n-075.yaml │ │ ├── tow_n-080.yaml │ │ ├── tow_n-090.yaml │ │ ├── tow_n-110.yaml │ │ └── tow_n-125.yaml │ ├── tow.yaml │ ├── tow_n-080.yaml │ ├── tow_n-080_vented.yaml │ ├── tow_n-090.yaml │ ├── tow_n-090_vented.yaml │ └── tow_vented.yaml ├── unregulated │ ├── unregulated_Re2000.yaml │ ├── unregulated_Re5000.yaml │ └── unregulated_Re7500.yaml └── wbs │ ├── wb │ └── wb_pstudy.yaml │ ├── wb0 │ ├── pstudy_test.yaml │ └── verify │ │ ├── dam.yaml │ │ ├── dam2.yaml │ │ └── dam3.yaml │ ├── wb1 │ ├── pstudy_test.yaml │ ├── re-0001_bn-0004_g1_cav-15x1.yaml │ ├── re-0001_bn-0004_g1_cav-30x1.yaml │ ├── re-0001_bn-0004_g1_obs-30x1.yaml │ ├── re-0001_bn-0004_g1_obs-30x2.yaml │ ├── re-0001_bn-0004_g1_obs-30xL.yaml │ ├── re-0001_bn-0004_g1_obs-40x1.yaml │ ├── re-0001_bn-0004_g1_obs-40x2.yaml │ ├── re-0001_bn-0004_g1_obs-40xL.yaml │ ├── re-0001_bn-0004_g2_cav-15x1.yaml │ ├── re-0001_bn-0004_g2_cav-30x1.yaml │ ├── re-0001_bn-0004_g2_obs-30x1.yaml │ ├── re-0001_bn-0004_g2_obs-30x2.yaml │ ├── re-0001_bn-0004_g2_obs-30xL.yaml │ ├── re-0001_bn-0004_g2_obs-40x1.yaml │ ├── re-0001_bn-0004_g2_obs-40x2.yaml │ ├── re-0001_bn-0004_g2_obs-40xL.yaml │ ├── re-0003_bn-0000_g1_cav-15x1.yaml │ ├── re-0003_bn-0000_g1_cav-30x1.yaml │ ├── re-0003_bn-0000_g1_obs-30x1.yaml │ ├── re-0003_bn-0000_g1_obs-30x2.yaml │ ├── re-0003_bn-0000_g1_obs-30xL.yaml │ ├── re-0003_bn-0000_g1_obs-40x1.yaml │ ├── re-0003_bn-0000_g1_obs-40x2.yaml │ ├── re-0003_bn-0000_g1_obs-40xL.yaml │ ├── re-0003_bn-0000_g2_cav-15x1.yaml │ ├── re-0003_bn-0000_g2_cav-30x1.yaml │ ├── re-0003_bn-0000_g2_obs-30x1.yaml │ ├── re-0003_bn-0000_g2_obs-30x2.yaml │ ├── re-0003_bn-0000_g2_obs-30xL.yaml │ ├── re-0003_bn-0000_g2_obs-40x1.yaml │ ├── re-0003_bn-0000_g2_obs-40x2.yaml │ ├── re-0003_bn-0000_g2_obs-40xL.yaml │ ├── re-0003_bn-0005_g1_cav-15x1.yaml │ ├── re-0003_bn-0005_g1_cav-30x1.yaml │ ├── re-0003_bn-0005_g1_obs-30x1.yaml │ ├── re-0003_bn-0005_g1_obs-30x2.yaml │ ├── re-0003_bn-0005_g1_obs-30xL.yaml │ ├── re-0003_bn-0005_g1_obs-40x1.yaml │ ├── re-0003_bn-0005_g1_obs-40x2.yaml │ ├── re-0003_bn-0005_g1_obs-40xL.yaml │ ├── re-0003_bn-0005_g2_cav-15x1.yaml │ ├── re-0003_bn-0005_g2_cav-30x1.yaml │ ├── re-0003_bn-0005_g2_obs-30x1.yaml │ ├── re-0003_bn-0005_g2_obs-30x2.yaml │ ├── re-0003_bn-0005_g2_obs-30xL.yaml │ ├── re-0003_bn-0005_g2_obs-40x1.yaml │ ├── re-0003_bn-0005_g2_obs-40x2.yaml │ ├── re-0003_bn-0005_g2_obs-40xL.yaml │ ├── re-0003_bn-0010_g1_cav-15x1.yaml │ ├── re-0003_bn-0010_g1_cav-30x1.yaml │ ├── re-0003_bn-0010_g1_obs-30x1.yaml │ ├── re-0003_bn-0010_g1_obs-30x2.yaml │ ├── re-0003_bn-0010_g1_obs-30xL.yaml │ ├── re-0003_bn-0010_g1_obs-40x1.yaml │ ├── re-0003_bn-0010_g1_obs-40x2.yaml │ ├── re-0003_bn-0010_g1_obs-40xL.yaml │ ├── re-0003_bn-0010_g2_cav-15x1.yaml │ ├── re-0003_bn-0010_g2_cav-30x1.yaml │ ├── re-0003_bn-0010_g2_obs-30x1.yaml │ ├── re-0003_bn-0010_g2_obs-30x2.yaml │ ├── re-0003_bn-0010_g2_obs-30xL.yaml │ ├── re-0003_bn-0010_g2_obs-40x1.yaml │ ├── re-0003_bn-0010_g2_obs-40x2.yaml │ ├── re-0003_bn-0010_g2_obs-40xL.yaml │ ├── re-0003_bn-0025_g1_cav-15x1.yaml │ ├── re-0003_bn-0025_g1_cav-30x1.yaml │ ├── re-0003_bn-0025_g1_obs-30x1.yaml │ ├── re-0003_bn-0025_g1_obs-30x2.yaml │ ├── re-0003_bn-0025_g1_obs-30xL.yaml │ ├── re-0003_bn-0025_g1_obs-40x1.yaml │ ├── re-0003_bn-0025_g1_obs-40x2.yaml │ ├── re-0003_bn-0025_g1_obs-40xL.yaml │ ├── re-0003_bn-0025_g2_cav-15x1.yaml │ ├── re-0003_bn-0025_g2_cav-30x1.yaml │ ├── re-0003_bn-0025_g2_obs-30x1.yaml │ ├── re-0003_bn-0025_g2_obs-30x2.yaml │ ├── re-0003_bn-0025_g2_obs-30xL.yaml │ ├── re-0003_bn-0025_g2_obs-40x1.yaml │ ├── re-0003_bn-0025_g2_obs-40x2.yaml │ ├── re-0003_bn-0025_g2_obs-40xL.yaml │ ├── re-0005_bn-0005_g1_cav-15x1.yaml │ ├── re-0005_bn-0005_g1_cav-30x1.yaml │ ├── re-0005_bn-0005_g1_obs-30x1.yaml │ ├── re-0005_bn-0005_g1_obs-30x2.yaml │ ├── re-0005_bn-0005_g1_obs-30xL.yaml │ ├── re-0005_bn-0005_g1_obs-40x1.yaml │ ├── re-0005_bn-0005_g1_obs-40x2.yaml │ ├── re-0005_bn-0005_g1_obs-40xL.yaml │ ├── re-0005_bn-0005_g2_cav-15x1.yaml │ ├── re-0005_bn-0005_g2_cav-30x1.yaml │ ├── re-0005_bn-0005_g2_obs-30x1.yaml │ ├── re-0005_bn-0005_g2_obs-30x2.yaml │ ├── re-0005_bn-0005_g2_obs-30xL.yaml │ ├── re-0005_bn-0005_g2_obs-40x1.yaml │ ├── re-0005_bn-0005_g2_obs-40x2.yaml │ ├── re-0005_bn-0005_g2_obs-40xL.yaml │ ├── re-0013_bn-0002_g1_cav-15x1.yaml │ ├── re-0013_bn-0002_g1_cav-30x1.yaml │ ├── re-0013_bn-0002_g1_obs-30x1.yaml │ ├── re-0013_bn-0002_g1_obs-30x2.yaml │ ├── re-0013_bn-0002_g1_obs-30xL.yaml │ ├── re-0013_bn-0002_g1_obs-40x1.yaml │ ├── re-0013_bn-0002_g1_obs-40x2.yaml │ ├── re-0013_bn-0002_g1_obs-40xL.yaml │ ├── re-0013_bn-0002_g2_cav-15x1.yaml │ ├── re-0013_bn-0002_g2_cav-30x1.yaml │ ├── re-0013_bn-0002_g2_obs-30x1.yaml │ ├── re-0013_bn-0002_g2_obs-30x2.yaml │ ├── re-0013_bn-0002_g2_obs-30xL.yaml │ ├── re-0013_bn-0002_g2_obs-40x1.yaml │ ├── re-0013_bn-0002_g2_obs-40x2.yaml │ └── re-0013_bn-0002_g2_obs-40xL.yaml │ ├── wb2 │ └── pstudy_test.yaml │ ├── wb3 │ └── wb_pstudy.yaml │ ├── wb4 │ ├── debug │ │ ├── re-0050_bn-00005_wt-0025_no-obs.yaml │ │ ├── re-0050_bn-00005_wt-2500.yaml │ │ ├── re-0050_bn-00005_wt-2500_obs-15x1.yaml │ │ ├── re-0050_bn-0005_wt-0025_no-obs.yaml │ │ ├── re-0050_bn-0005_wt-0025_no-obs_mrt.yaml │ │ ├── re-0050_bn-0005_wt-0025_obs-15x1_2.yaml │ │ └── re-0050_bn-0005_wt-0250_no-obs.yaml │ └── wb_pstudy.yaml │ └── wb5 │ └── wb_pstudy.yaml ├── scripts ├── calc_fill.jl ├── compile_pstudy.py ├── cumsimp.m ├── dump_bak.jl ├── flowfun.m ├── install-dependencies.jl ├── opt_contract_qx.jl ├── opt_delta.jl ├── opt_delta2.jl ├── paper_params.jl ├── plot_analytical.jl ├── pvd.jl ├── renum_figs.py ├── rf.jl └── stream_func_from_file.m └── test ├── archive ├── test_coltype_bgk_newt_01.yaml ├── test_coltype_bgk_newt_02.yaml ├── test_coltype_bgk_newt_03.yaml ├── test_coltype_mrt_newt_01.yaml ├── test_const_bingham_explicit_0_1.yaml ├── test_const_bingham_explicit_0_2.yaml ├── test_const_bingham_explicit_0_3.yaml ├── test_const_bingham_implicit_0_1.yaml ├── test_const_hb_explicit_0_1.yaml ├── test_const_hb_explicit_0_2.yaml ├── test_const_hb_explicit_0_3.yaml ├── test_const_hb_explicit_1e-6--5e-5_1.yaml ├── test_const_hb_implicit_0_1.yaml ├── test_dam_basic_stability_01.yaml ├── test_dam_basic_stability_02.yaml ├── test_dam_basic_stability_03.yaml ├── test_dam_basic_stability_04.yaml ├── test_dam_gs_stability_01.yaml ├── test_dam_gs_stability_02.yaml ├── test_dam_obs_stability_01.yaml ├── test_dam_vcf_stability_01.yaml ├── test_dam_vcf_stability_02.yaml ├── test_entropic_mrt_involution_1.yaml ├── test_entropic_mrt_involution_2.yaml ├── test_entropic_newton_search_involution_1.yaml ├── test_entropic_search_lid_Re5000.yaml ├── test_entropic_search_lid_Re7500.yaml ├── test_entropic_srt_bingham_004.yaml ├── test_entropic_srt_bingham_008.yaml ├── test_entropic_srt_bingham_012.yaml ├── test_entropic_srt_involution_1.yaml ├── test_entropic_srt_involution_2.yaml ├── test_entropic_srt_involution_3.yaml ├── test_entropic_srt_involution_4.yaml ├── test_entropic_srt_involution_5.yaml ├── test_entropic_srt_involution_6.yaml ├── test_entropic_srt_involution_7.yaml ├── test_entropic_srt_involution_8.yaml ├── test_entropic_srt_involution_9.yaml ├── test_entropic_stef_search_involution_1.yaml ├── test_entropic_stef_search_involution_2.yaml ├── test_entropic_stef_search_involution_3.yaml ├── test_entropic_stef_srt_bingham_004.yaml ├── test_entropic_stef_srt_bingham_008.yaml ├── test_feqHL.yaml ├── test_filter_srt_2.yaml ├── test_filter_srt_3.yaml ├── test_filter_srt_4.yaml ├── test_filter_srt_5.yaml ├── test_filter_srt_6.yaml ├── test_filter_srt_bingham_004_1.yaml ├── test_filter_srt_bingham_004_2.yaml ├── test_filter_srt_bingham_004_3.yaml ├── test_filter_srt_bingham_008_1.yaml ├── test_filter_srt_bingham_008_2.yaml ├── test_filter_srt_bingham_008_3.yaml ├── test_filter_srt_bingham_012_1.yaml ├── test_filter_srt_bingham_012_2.yaml ├── test_filter_srt_bingham_012_3.yaml ├── test_filter_srt_bingham_012_4.yaml ├── test_hb_implicit_0_1_0.yaml ├── test_hb_implicit_luo_2--5.yaml ├── test_hb_mrt_0.5_2.not-ready ├── test_hb_srt_0.5_2.yaml ├── test_highre_1.yaml ├── test_highre_2.yaml ├── test_modcol_mrt_LBGK.yaml ├── test_modcol_mrt_luo.yaml ├── test_modcol_srt_guo_1.yaml ├── test_modcol_srt_guo_2.yaml ├── test_modcol_srt_korner_1.yaml ├── test_modcol_srt_korner_2.yaml ├── test_modcol_srt_korner_3.yaml ├── test_modcol_srt_korner_4.yaml ├── test_modcol_srt_sukop_1.yaml ├── test_modcol_srt_sukop_2.yaml ├── test_modcol_srt_sukop_3.yaml ├── test_mrt_bingham_explicit_fallah_0_1.yaml ├── test_mrt_bingham_explicit_fallah_1e-6--1e-5_1.yaml ├── test_mrt_bingham_explicit_fallah_1e-6--1e-5_1_with-plot.yaml ├── test_mrt_bingham_explicit_luo_0_1.yaml ├── test_mrt_bingham_explicit_luo_1e-6--1e-5_1.yaml ├── test_mrt_bingham_implicit_fallah_0_1.yaml ├── test_mrt_bingham_implicit_fallah_1e-6--1e-5_1.yaml ├── test_mrt_bingham_implicit_luo_0_1.yaml ├── test_mrt_bingham_implicit_luo_1e-6--1e-5_1.yaml ├── test_mrt_hb_1_0.yaml ├── test_mrt_hb_explicit_fallah_1e-6--1e-5_1_with-plot.yaml ├── test_mrt_hb_explicit_luo_0_1.yaml ├── test_mrt_hb_explicit_luo_1e-6--1e-5_1.yaml ├── test_mrt_hb_implicit_luo_1e-6--1e-5_1.yaml ├── test_obstacle_stability.yaml ├── test_pmodcol_srt_korner_2.not-ready ├── test_power_law_implicit_luo_2--5.yaml ├── test_power_law_srt_0.5_1.yaml ├── test_power_law_srt_0.5_2.yaml ├── vtest_collide.jl ├── vtest_lattice.jl ├── vtest_step.jl └── vtest_stream.jl ├── run_tests_parallel.jl ├── run_tests_serial.jl ├── test_bing_bgk_1.yaml ├── test_bing_bgk_2.yaml ├── test_bing_bgk_3.yaml ├── test_bing_bgk_4.yaml ├── test_bing_mrt_1.yaml ├── test_bing_mrt_2.yaml ├── test_bing_mrt_3.yaml ├── test_bing_mrt_4.yaml ├── test_bing_mrt_5.yaml ├── test_constitutive.jl ├── test_dam_basic_stability_01.yaml ├── test_dam_basic_stability_02.yaml ├── test_dam_basic_stability_03.yaml ├── test_dam_basic_stability_04.yaml ├── test_filter_srt_1.yaml ├── test_filter_srt_2.yaml ├── test_filter_srt_3.yaml ├── test_filter_srt_4.yaml ├── test_filter_srt_5.yaml ├── test_filter_srt_6.yaml ├── test_hb_bgk_1.yaml ├── test_hb_bgk_2.yaml ├── test_hb_mrt_1.yaml ├── test_hb_mrt_2.yaml ├── test_hb_mrt_3.yaml ├── test_multiscale.jl ├── test_newt_bgk_1.yaml ├── test_newt_bgk_2.yaml ├── test_newt_bgk_3.yaml ├── test_newt_bgk_4.yaml ├── test_newt_bgk_5.yaml ├── test_newt_bgk_6.yaml ├── test_newt_bgk_7.yaml ├── test_newt_mrt_1.yaml ├── test_newt_mrt_2.yaml ├── test_newt_mrt_3.yaml ├── test_newt_mrt_4.yaml ├── test_newt_mrt_5.yaml ├── test_pl_bgk_1.yaml ├── test_pl_bgk_2.yaml ├── test_pl_bgk_3.yaml ├── test_pl_mrt_1.yaml ├── test_pl_mrt_2.yaml └── test_tracking.jl /.gitignore: -------------------------------------------------------------------------------- 1 | # ignore data files and plot images 2 | data/ 3 | data/* 4 | *.png 5 | 6 | # ignore swap files from vim 7 | *.swp 8 | 9 | # ignore documentation output files 10 | doc/*.aux 11 | doc/*.log 12 | doc/*.out 13 | doc/*.nav 14 | doc/*.snm 15 | doc/*.toc 16 | doc/*.dvi 17 | doc/*.pdf 18 | -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.1.0 2 | message: "If you use this software, please cite it as below." 3 | authors: 4 | - family-names: Matthew 5 | given-names: Grasinger 6 | orcid: https://orcid.org/0000-0001-7188-0736 7 | title: grasingerm/lbxflow: 1.0.0 8 | version: v1.0.0 9 | date-released: 2023-09-04 10 | -------------------------------------------------------------------------------- /banner.txt: -------------------------------------------------------------------------------- 1 | LBXFLOW 2 | ------------------------------------------- 3 | Complex flow using lattice Boltzmann method 4 | 5 | author: 6 | name: Matthew Grasinger 7 | email: grasingerm at gmail dot com 8 | -------------------------------------------------------------------------------- /doc/tutorial/figs/d2q9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grasingerm/lbxflow/9d865c82ec9685cf2504a553b61cbd45327f9688/doc/tutorial/figs/d2q9.jpg -------------------------------------------------------------------------------- /doc/tutorial/src/julia-setup.tex: -------------------------------------------------------------------------------- 1 | \usepackage{beramono} 2 | \usepackage{listings} 3 | \usepackage{xcolor} 4 | 5 | %% 6 | %% Julia definition (c) 2014 Jubobs 7 | %% 8 | \lstdefinelanguage{Julia}% 9 | {morekeywords={abstract,break,case,catch,const,continue,do,else,elseif,% 10 | end,export,false,for,function,immutable,import,importall,if,in,% 11 | macro,module,otherwise,quote,return,switch,true,try,type,typealias,% 12 | using,while,begin},% 13 | sensitive=true,% 14 | alsoother={$},% 15 | morecomment=[l]\#,% 16 | morecomment=[n]{\#=}{=\#},% 17 | morestring=[s]{"}{"},% 18 | morestring=[m]{'}{'},% 19 | }[keywords,comments,strings]% 20 | 21 | \lstset{% 22 | language = Julia, 23 | basicstyle = \ttfamily, 24 | keywordstyle = \bfseries\color{blue}, 25 | stringstyle = \color{magenta}, 26 | commentstyle = \color{green}, 27 | showstringspaces = false, 28 | } 29 | -------------------------------------------------------------------------------- /doc/tutorial/src/notation.tex: -------------------------------------------------------------------------------- 1 | \newcommand{\pos}{\mathbf{x}} % position vector 2 | \newcommand{\pvel}{\boldsymbol{\xi}} % particle velocity 3 | \newcommand{\mvel}{\mathbf{u}} % macroscopic velocity 4 | \newcommand{\colop}{\Omega} % collision operator 5 | \newcommand{\grad}{\boldsymbol{\nabla}} % gradient operator 6 | \newcommand{\mmom}{\mathbf{j}} % macroscopic fluid momentum 7 | \newcommand{\transM}{\mathbf{M}} % transformation matrix 8 | \newcommand{\relaxM}{\mathbf{S}} % relaxation matrix 9 | 10 | \newcommand{\expnumber}[2]{{#1}\mathrm{e}{#2}} 11 | 12 | \newcommand{\pgrad}{\frac{\partial p}{\partial x}} % pressure gradient 13 | \newcommand{\unorm}{\mathbf{\hat{n}}} % unit normal 14 | \newcommand{\opidx}{{\bar{\i}}} % opposite lattice direction 15 | \newcommand{\fset}{\mathcal{F}} % set of fluid cells 16 | \newcommand{\iset}{\mathcal{I}} % set of interface cells 17 | \newcommand{\gset}{\mathcal{G}} % set of gas cells 18 | \newcommand{\domain}{\mathcal{X}} % domain 19 | 20 | \newcommand{\tconst}{\delta_{trans}} % computational constant 21 | \newcommand{\srtensor}{D_{\alpha\beta}} % strain-rate tensor 22 | -------------------------------------------------------------------------------- /doc/tutorial/tutorial.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grasingerm/lbxflow/9d865c82ec9685cf2504a553b61cbd45327f9688/doc/tutorial/tutorial.pdf -------------------------------------------------------------------------------- /example_sims/couette/couette_velocity-profile.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | @init_plot_env(); 6 | const u = 0.01; 7 | const mu = 0.3; 8 | const constit_rel_f = init_constit_srt_const(mu); 9 | const datadir = "data/couette"; 10 | const ni = 32; 11 | const nj = 32; 12 | 13 | # data 14 | datadir: { value: datadir, expr: true } 15 | 16 | # material properties 17 | rho_0: { value: 1.0, expr: false } 18 | nu: { value: mu, expr: true } 19 | 20 | # lattice parameters 21 | dx: { value: 1.0, expr: false } 22 | dt: { value: 1.0, expr: false } 23 | ni: { value: ni, expr: true } 24 | nj: { value: nj, expr: true } 25 | 26 | # simulation parameters 27 | nsteps: { value: 10000, expr: false } 28 | col_f: BGK(constit_rel_f); 29 | 30 | # boundary conditions 31 | bcs: 32 | - (sim) -> lid_driven!(sim.lat, u) 33 | - south_bounce_back! 34 | - periodic_east_to_west! 35 | 36 | # callback functions 37 | callbacks: 38 | - pyplot_callback(25, vel_prof_acsr(1, convert(Int, ni/2), 1:nj); showfig=true, grid=true) 39 | - print_step_callback(50, "couette-example") 40 | -------------------------------------------------------------------------------- /example_sims/free-surface/dam/dam.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | 3 | preamble: > 4 | @init_plot_env(); 5 | const datadir = joinpath("data", "dam"); 6 | const nuv = 0.2; 7 | const constit_rel_f = init_constit_srt_const(nuv); 8 | const F = [0.0; -5.0e-6]; 9 | const forcing_kf = init_sukop_gravity_Fk(F); 10 | const ni = 60; 11 | const nj = 50; 12 | const nsteps = 500000; 13 | 14 | # data directory 15 | datadir: { value: datadir, expr: true } 16 | 17 | # material properties 18 | rho_0: { value: 1.0, expr: false } 19 | nu: { value: nuv, expr: true } 20 | 21 | # lattice parameters 22 | dx: { value: 1.0, expr: false } 23 | dt: { value: 1.0, expr: false } 24 | ni: { value: ni, expr: true } 25 | nj: { value: nj, expr: true } 26 | 27 | # simulation parameters 28 | simtype: free_surface 29 | masstransfer_f: masstransfer_rmart! 30 | col_f: FltrStdCol(BGK_F(constit_rel_f, forcing_kf); fltr_thrsh_warn=0.2); 31 | nsteps: { value: nsteps, expr: true } 32 | 33 | # boundaries 34 | sbounds: 35 | value: "[1 ni 1 nj;]'" 36 | expr: true 37 | 38 | cbounds: 39 | value: "[1 ni 1 nj;]'" 40 | expr: true 41 | 42 | # boundary conditions 43 | bcs: 44 | - west_bounce_back! 45 | - east_bounce_back! 46 | - south_bounce_back! 47 | - north_bounce_back! 48 | 49 | # free surface conditions 50 | rho_g: 1.0 51 | 52 | fill_x: { value: 1/3, expr: true } 53 | fill_y: { value: 0.9, expr: false } 54 | 55 | # callback functions 56 | callbacks: 57 | - print_step_callback(100, "dam-break") 58 | - pycontour_callback(200, mass_acsr; fname=joinpath(datadir, "mass")) 59 | - write_jld_file_callback(datadir, 5000) 60 | 61 | # clean-up, backup, write out 62 | finally: 63 | - pycontour_callback(1, mass_acsr; fname=joinpath(datadir, "mass")) 64 | - write_jld_file_callback(datadir) 65 | -------------------------------------------------------------------------------- /example_sims/poiseuille/poiseuille_pressure-contours.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | @init_plot_env(); 6 | using DelimitedFiles; 7 | const pgrad = -1e-3; 8 | const F = [-pgrad; 0.0]; 9 | const constit_rel_f = init_constit_srt_const(1/6); 10 | const forcing_kf = init_sukop_Fk(F); 11 | const datadir = "data/sukop"; 12 | const ni = 20; 13 | const nj = 12; 14 | 15 | # data 16 | datadir: { value: datadir, expr: true } 17 | 18 | # material properties 19 | # TODO: specify constitutive model type (general Newtonian, Newtonian, etc.) 20 | rho_0: { value: 1.0, expr: false } 21 | nu: { value: 1/6, expr: true } 22 | 23 | # lattice parameters 24 | dx: { value: 1.0, expr: false } 25 | dt: { value: 1.0, expr: false } 26 | ni: { value: ni, expr: true } 27 | nj: { value: nj, expr: true } 28 | 29 | # simulation parameters 30 | nsteps: { value: 10000, expr: false } 31 | col_f: BGK_F(constit_rel_f, forcing_kf); 32 | 33 | # boundaries 34 | sbounds: 35 | value: "transpose([1 ni 1 nj;])" 36 | expr: true 37 | 38 | cbounds: 39 | value: "transpose([1 ni 1 nj;])" 40 | expr: true 41 | 42 | # boundary conditions 43 | bcs: 44 | - north_bounce_back! 45 | - south_bounce_back! 46 | - periodic_east_to_west! 47 | 48 | # callback functions 49 | callbacks: 50 | - pycontour_callback(25, pressure_acsr; showfig=true, filled=true) 51 | - print_step_callback(25, "ex1") 52 | - write_jld_file_callback(datadir, 500) 53 | 54 | # clean-up, backup, write out 55 | finally: 56 | - > 57 | (sim::Sim, k::Real) -> begin 58 | writedlm(joinpath(datadir, "ux_profile.dsv"), 59 | hcat(vel_prof_acsr(1, convert(Int64, round(ni/2)), 1:nj)(sim)...), 60 | ","); 61 | end 62 | - write_jld_file_callback(datadir) 63 | 64 | # test for conditions to end simulation 65 | test_for_term: is_steadystate_x 66 | -------------------------------------------------------------------------------- /example_sims/poiseuille/poiseuille_velocity-profile.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | @init_plot_env(); 6 | const pgrad = -1e-3; 7 | const F = [-pgrad; 0.0]; 8 | const constit_rel_f = init_constit_srt_const(1/6); 9 | const forcing_kf = init_sukop_Fk(F); 10 | const datadir = "data/sukop"; 11 | const ni = 20; 12 | const nj = 12; 13 | 14 | # data 15 | datadir: { value: datadir, expr: true } 16 | 17 | # material properties 18 | rho_0: { value: 1.0, expr: false } 19 | nu: { value: 1/6, expr: true } 20 | 21 | # lattice parameters 22 | dx: { value: 1.0, expr: false } 23 | dt: { value: 1.0, expr: false } 24 | ni: { value: ni, expr: true } 25 | nj: { value: nj, expr: true } 26 | 27 | # simulation parameters 28 | nsteps: { value: 10000, expr: false } 29 | col_f: BGK_F(constit_rel_f, forcing_kf); 30 | 31 | # boundary conditions 32 | bcs: 33 | - north_bounce_back! 34 | - south_bounce_back! 35 | - periodic_east_to_west! 36 | 37 | # callback functions 38 | callbacks: 39 | - pyplot_callback(25, vel_prof_acsr(1, convert(Int, ni/2), 1:nj); showfig=true, grid=true) 40 | - print_step_callback(50, "ex1") 41 | -------------------------------------------------------------------------------- /inc/bcs/vprofs.jl: -------------------------------------------------------------------------------- 1 | # This Source Code Form is subject to the terms of the Mozilla Public 2 | # License, v. 2.0. If a copy of the MPL was not distributed with this 3 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 | 5 | #! Prescribe velocity profile at inlet 6 | function north_vprof!(sim::AbstractSim, i_range::UnitRange{Int}, j::Int, 7 | args...; 8 | analytical_soln::LBXFunction=analytical_poise_newton) 9 | north_velocity!(sim.lat, analytical_soln(args..., length(i_range)), 10 | i_range, j); 11 | end 12 | 13 | #! Prescribe velocity profile at inlet 14 | function south_vprof!(sim::AbstractSim, i_range::UnitRange{Int}, j::Int, 15 | args...; 16 | analytical_soln::LBXFunction=analytical_poise_newton) 17 | south_velocity!(sim.lat, analytical_soln(args..., length(i_range)), 18 | i_range, j); 19 | end 20 | 21 | #! Prescribe velocity profile at inlet 22 | function east_vprof!(sim::AbstractSim, i::Int, j_range::UnitRange{Int}, 23 | args...; 24 | analytical_soln::LBXFunction=analytical_poise_newton) 25 | east_velocity!(sim.lat, analytical_soln(args..., length(j_range)), 26 | i, j_range); 27 | end 28 | 29 | #! Prescribe velocity profile at inlet 30 | function west_vprof!(sim::AbstractSim, i::Int, j_range::UnitRange{Int}, 31 | args...; 32 | analytical_soln::LBXFunction=analytical_poise_newton) 33 | west_velocity!(sim.lat, analytical_soln(args..., length(j_range)), 34 | i, j_range); 35 | end 36 | -------------------------------------------------------------------------------- /inc/col/collision.jl: -------------------------------------------------------------------------------- 1 | # This Source Code Form is subject to the terms of the Mozilla Public 2 | # License, v. 2.0. If a copy of the MPL was not distributed with this 3 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 | 5 | macro _scale_omega(omega, st) 6 | return :(1.0 / ($st * (1/$omega - 0.5) + 0.5)); 7 | end 8 | 9 | macro _scale_f(f, st) 10 | return :($st*$st * $f); 11 | end 12 | 13 | macro _scale_mu(mu, st) 14 | return :($st * $mu); 15 | end 16 | 17 | include("forcing.jl"); 18 | include("equilibrium.jl"); 19 | include("constitutive.jl"); 20 | include("mrt_matrices.jl"); 21 | include("freecol.jl"); # free surface collisions 22 | include("modcol.jl"); # "modular" collisions 23 | include("pmodcol.jl"); # parallel mod collisions 24 | include("bgk.jl"); 25 | include("mrt.jl"); 26 | include("entropic.jl"); 27 | include("filtering.jl"); 28 | include("m2phase.jl"); 29 | -------------------------------------------------------------------------------- /inc/col/forcing0.jl: -------------------------------------------------------------------------------- 1 | # This Source Code Form is subject to the terms of the Mozilla Public 2 | # License, v. 2.0. If a copy of the MPL was not distributed with this 3 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 | 5 | typealias Force Tuple{LBXFunction, LBXFunction}; 6 | 7 | #! Initialize a sukop forcing function 8 | #! 9 | #! \param F Body force vector 10 | #! \return (momentum_function, forcing_function) 11 | function init_sukop_Fk(F::Vector{Float64}) 12 | return ( 13 | (lat::Lattice, u::Vector{Float64}) -> begin 14 | return u; 15 | end, 16 | (lat::Lattice, omega::AbstractFloat, u::Vector{Float64}, k::Int) -> begin 17 | return lat.w[k] * lat.dt / lat.cssq * dot(F, lat.c[:,k]); 18 | end 19 | ); 20 | end 21 | 22 | #! Initialize a guo forcing function 23 | #! 24 | #! \param F Body force vector 25 | #! \return (momentum_function, forcing_function) 26 | function init_guo_Fk(F::Vector{Float64}) 27 | return ( 28 | (lat::Lattice, u::Vector{Float64}) -> begin 29 | return u + lat.dt / 2.0 * F; 30 | end, 31 | (lat::Lattice, omega::AbstractFloat, u::Vector{Float64}, k::Int) -> begin 32 | return ((1 - 0.5 * omega) * lat.w[k] * dot(((lat.c[:,k] - u) / lat.cssq + 33 | dot(lat.c[:,k], u) / (lat.cssq * lat.cssq) * lat.c[:,k]), F)); 34 | end 35 | ); 36 | end 37 | 38 | #! Initialize a korner forcing function 39 | #! 40 | #! \param F Body force vector 41 | #! \return (momentum_function, forcing_function) 42 | function init_korner_Fk(F::Vector{Float64}) 43 | return ( 44 | (lat::Lattice, u::Vector{Float64}) -> begin 45 | return u; 46 | end, 47 | (lat::Lattice, omega::AbstractFloat, u::Vector{Float64}, k::Int) -> begin 48 | return lat.w[k] * lat.dt / lat.cssq * dot(lat.c[:,k], F); 49 | end 50 | ); 51 | end 52 | -------------------------------------------------------------------------------- /inc/debug.jl: -------------------------------------------------------------------------------- 1 | # This Source Code Form is subject to the terms of the Mozilla Public 2 | # License, v. 2.0. If a copy of the MPL was not distributed with this 3 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 | 5 | _NDEBUG = false; 6 | _NDEBUG_MASS = true; 7 | 8 | function turn_off_debugging(); global _NDEBUG; _NDEBUG = true; end 9 | function turn_off_mass_cons_debugging() 10 | global _NDEBUG_MASS; 11 | _NDEBUG_MASS = true; 12 | end 13 | 14 | macro mdebug(message) 15 | if _NDEBUG 16 | return; 17 | else 18 | return :(warn($message)); 19 | end 20 | end 21 | 22 | macro checkdebug(condition, message) 23 | if _NDEBUG 24 | return; 25 | else 26 | return quote 27 | if !$condition 28 | @warn($message); 29 | end 30 | end; 31 | end 32 | end 33 | 34 | # Debugging macros 35 | macro _mdebug_mass_cons(opname, M, block) 36 | if _NDEBUG_MASS 37 | return block; 38 | else 39 | return quote 40 | _init_mass = sum($M); 41 | $block; 42 | @mdebug($opname * ": ΔM = $(sum($M) - _init_mass)"); 43 | end 44 | end 45 | end 46 | 47 | # Debugging macros 48 | macro _checkdebug_mass_cons(opname, M, block, eps) 49 | if _NDEBUG_MASS 50 | return block; 51 | else 52 | return quote 53 | _init_mass = sum($M); 54 | $block; 55 | @checkdebug(abs(sum($M) - _init_mass) < $eps, 56 | $opname * ": ΔM = $(sum($M) - _init_mass)"); 57 | end 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /inc/lbxio.jl: -------------------------------------------------------------------------------- 1 | # This Source Code Form is subject to the terms of the Mozilla Public 2 | # License, v. 2.0. If a copy of the MPL was not distributed with this 3 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 | 5 | import HDF5, JLD 6 | 7 | function __create_anon_counter() 8 | name = parse("__" * join(rand('a':'z', 100)) * "__"); 9 | eval(quote 10 | global $name = 0.0; 11 | return (x::Real) -> begin; global $name += x; end; 12 | end); 13 | end 14 | 15 | include(joinpath("io", "readwrite.jl")); 16 | include(joinpath("io", "animate.jl")); 17 | -------------------------------------------------------------------------------- /inc/numerics.jl: -------------------------------------------------------------------------------- 1 | # This Source Code Form is subject to the terms of the Mozilla Public 2 | # License, v. 2.0. If a copy of the MPL was not distributed with this 3 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 | 5 | #! Compute the double dot product of two matrices 6 | function ddot(A::Array{Float64,2}, B::Array{Float64,2}) 7 | sum = 0; 8 | for (a,b) in zip(A,B) 9 | sum += a*b; 10 | end 11 | return sum; 12 | end 13 | -------------------------------------------------------------------------------- /inc/profile.jl: -------------------------------------------------------------------------------- 1 | # This Source Code Form is subject to the terms of the Mozilla Public 2 | # License, v. 2.0. If a copy of the MPL was not distributed with this 3 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 | 5 | using Profile; 6 | 7 | macro profif(condition, statement) 8 | quote 9 | if $condition 10 | @profile $statement 11 | else 12 | $statement 13 | end 14 | end 15 | end 16 | 17 | @inline profif(condition, lambda) = begin 18 | if condition 19 | @profile lambda(); 20 | else 21 | lambda(); 22 | end 23 | end 24 | -------------------------------------------------------------------------------- /inc/sim/lazy.jl: -------------------------------------------------------------------------------- 1 | # This Source Code Form is subject to the terms of the Mozilla Public 2 | # License, v. 2.0. If a copy of the MPL was not distributed with this 3 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 | 5 | using LazyViews; 6 | 7 | type LazyMultiscaleMap <: AbstractMultiscaleMap 8 | 9 | end 10 | -------------------------------------------------------------------------------- /inc/stability.jl: -------------------------------------------------------------------------------- 1 | # This Source Code Form is subject to the terms of the Mozilla Public 2 | # License, v. 2.0. If a copy of the MPL was not distributed with this 3 | # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 | 5 | #! Calculate the p norm distance from equilibrium 6 | macro dist_from_eq_norm(f_neq::Vector{Float64}, p::Int) 7 | return :(norm(f_neq, p)); 8 | end 9 | 10 | #! Stabilize mass 11 | function stabilize_mass_callback!(sim::FreeSurfSim, k::Real) 12 | ni, nj = size(sim.msm.rho); 13 | for j=1:nj, i=1:ni 14 | if sim.tracker.state[i, j] == FLUID # if a fluid cell, reset to rho 15 | sim.tracker.M[i, j] = sim.msm.rho[i, j]; 16 | elseif sim.tracker.state[i, j] == GAS # if gas, reset to zero 17 | sim.tracker.M[i, j] = 0.0; 18 | else 19 | if (isnan(sim.tracker.M[i, j]) || 20 | isinf(sim.tracker.M[i, j])) # if interface, check for nonsense 21 | mass_sum = 0; 22 | counter::UInt = 0; 23 | for k=1:sim.lat.n-1 24 | i_nbr = i + sim.lat.c[1, k]; 25 | j_nbr = j + sim.lat.c[2, k]; 26 | if (inbounds(i_nbr, j_nbr, [1; ni; 1; nj;]) && 27 | !isnan(sim.tracker.M[i_nbr, j_nbr]) && 28 | !isinf(sim.tracker.M[i_nbr, j_nbr])) 29 | counter += 1; 30 | mass_sum += sim.tracker.M[i_nbr, j_nbr]; 31 | end 32 | end 33 | sim.tracker.M[i, j] = if counter != 0 34 | mass_sum / counter; 35 | else 36 | sim.msm.rho / 2.0; 37 | end; 38 | end 39 | end 40 | end 41 | end 42 | -------------------------------------------------------------------------------- /publication_sims/archive/power_law/050.yaml: -------------------------------------------------------------------------------- 1 | version: 0.2.4 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | const pgrad = -5.0e-5; 6 | const F = [-pgrad; 0.0]; 7 | const datadir = joinpath("data","power_law","0.50"); 8 | const nsteps = 12000; 9 | const ni = 25; 10 | const nj = 80; 11 | const mu = 2/11; 12 | const n = 0.5; 13 | const constit_rel_f = init_constit_mrt_power_law_implicit(mu, n, 1e-9, 100, 1e-9); 14 | const forcing_kf = init_korner_Fk(F); 15 | 16 | # data 17 | datadir: { value: datadir, expr: true } 18 | 19 | # material properties 20 | rho_0: { value: 1.0, expr: false } 21 | nu: { value: mu, expr: true } 22 | 23 | # lattice parameters 24 | dx: { value: 1.0, expr: false } 25 | dt: { value: 1.0, expr: false } 26 | ni: { value: ni, expr: true } 27 | nj: { value: nj, expr: true } 28 | 29 | # simulation parameters 30 | nsteps: { value: 10000, expr: false } 31 | col_f: init_col_mrt(constit_rel_f, forcing_kf, S_luo); 32 | 33 | # boundaries 34 | sbounds: 35 | value: "[1 ni 1 nj;]'" 36 | expr: true 37 | 38 | cbounds: 39 | value: "[1 ni 1 nj;]'" 40 | expr: true 41 | 42 | # boundary conditions 43 | bcs: 44 | - north_bounce_back! 45 | - south_bounce_back! 46 | - periodic_east_to_west! 47 | 48 | callbacks: 49 | - print_step_callback(50) 50 | - write_jld_file_callback(datadir, convert(Int64, round(nsteps/20))) 51 | 52 | # clean-up, backup, write out 53 | finally: 54 | - write_jld_file_callback(datadir) 55 | - > 56 | (sim::Sim, k::Int) -> begin 57 | writedlm(joinpath(datadir, "ux_profile.dsv"), 58 | extract_ux_prof_callback(convert(Int64, round(ni/2)))(sim), 59 | ","); 60 | end 61 | - > 62 | (sim::Sim, k::Int) -> begin 63 | writedlm(joinpath(datadir, "ubar_profile.dsv"), 64 | extract_ubar_prof_callback(convert(Int64, round(ni/2)))(sim), 65 | ","); 66 | end 67 | 68 | # test for conditions to end simulation 69 | test_for_term: is_steadystate_x 70 | -------------------------------------------------------------------------------- /publication_sims/archive/power_law/075.yaml: -------------------------------------------------------------------------------- 1 | version: 0.2.4 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | const pgrad = -5.0e-5; 6 | const F = [-pgrad; 0.0]; 7 | const datadir = joinpath("data","power_law","0.75"); 8 | const nsteps = 12000; 9 | const ni = 25; 10 | const nj = 80; 11 | const mu = 2/11; 12 | const n = 0.75; 13 | const constit_rel_f = init_constit_mrt_power_law_implicit(mu, n, 1e-9, 100, 1e-9); 14 | const forcing_kf = init_korner_Fk(F); 15 | 16 | # data 17 | datadir: { value: datadir, expr: true } 18 | 19 | # material properties 20 | rho_0: { value: 1.0, expr: false } 21 | nu: { value: mu, expr: true } 22 | 23 | # lattice parameters 24 | dx: { value: 1.0, expr: false } 25 | dt: { value: 1.0, expr: false } 26 | ni: { value: ni, expr: true } 27 | nj: { value: nj, expr: true } 28 | 29 | # simulation parameters 30 | nsteps: { value: 10000, expr: false } 31 | col_f: init_col_mrt(constit_rel_f, forcing_kf, S_luo); 32 | 33 | # boundaries 34 | sbounds: 35 | value: "[1 ni 1 nj;]'" 36 | expr: true 37 | 38 | cbounds: 39 | value: "[1 ni 1 nj;]'" 40 | expr: true 41 | 42 | # boundary conditions 43 | bcs: 44 | - north_bounce_back! 45 | - south_bounce_back! 46 | - periodic_east_to_west! 47 | 48 | callbacks: 49 | - print_step_callback(50) 50 | - write_jld_file_callback(datadir, convert(Int64, round(nsteps/20))) 51 | 52 | # clean-up, backup, write out 53 | finally: 54 | - write_jld_file_callback(datadir) 55 | - > 56 | (sim::Sim, k::Int) -> begin 57 | writedlm(joinpath(datadir, "ux_profile.dsv"), 58 | extract_ux_prof_callback(convert(Int64, round(ni/2)))(sim), 59 | ","); 60 | end 61 | - > 62 | (sim::Sim, k::Int) -> begin 63 | writedlm(joinpath(datadir, "ubar_profile.dsv"), 64 | extract_ubar_prof_callback(convert(Int64, round(ni/2)))(sim), 65 | ","); 66 | end 67 | 68 | # test for conditions to end simulation 69 | test_for_term: is_steadystate_x 70 | -------------------------------------------------------------------------------- /publication_sims/archive/power_law/100.yaml: -------------------------------------------------------------------------------- 1 | version: 0.2.4 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | const pgrad = -5.0e-5; 6 | const F = [-pgrad; 0.0]; 7 | const datadir = joinpath("data","power_law","1.00"); 8 | const nsteps = 12000; 9 | const ni = 25; 10 | const nj = 80; 11 | const mu = 2/11; 12 | const n = 1.0; 13 | const constit_rel_f = init_constit_mrt_power_law_implicit(mu, n, 1e-9, 100, 1e-9); 14 | const forcing_kf = init_korner_Fk(F); 15 | 16 | # data 17 | datadir: { value: datadir, expr: true } 18 | 19 | # material properties 20 | rho_0: { value: 1.0, expr: false } 21 | nu: { value: mu, expr: true } 22 | 23 | # lattice parameters 24 | dx: { value: 1.0, expr: false } 25 | dt: { value: 1.0, expr: false } 26 | ni: { value: ni, expr: true } 27 | nj: { value: nj, expr: true } 28 | 29 | # simulation parameters 30 | nsteps: { value: 10000, expr: false } 31 | col_f: init_col_mrt(constit_rel_f, forcing_kf, S_luo); 32 | 33 | # boundaries 34 | sbounds: 35 | value: "[1 ni 1 nj;]'" 36 | expr: true 37 | 38 | cbounds: 39 | value: "[1 ni 1 nj;]'" 40 | expr: true 41 | 42 | # boundary conditions 43 | bcs: 44 | - north_bounce_back! 45 | - south_bounce_back! 46 | - periodic_east_to_west! 47 | 48 | callbacks: 49 | - print_step_callback(50) 50 | - write_jld_file_callback(datadir, convert(Int64, round(nsteps/20))) 51 | 52 | # clean-up, backup, write out 53 | finally: 54 | - write_jld_file_callback(datadir) 55 | - > 56 | (sim::Sim, k::Int) -> begin 57 | writedlm(joinpath(datadir, "ux_profile.dsv"), 58 | extract_ux_prof_callback(convert(Int64, round(ni/2)))(sim), 59 | ","); 60 | end 61 | - > 62 | (sim::Sim, k::Int) -> begin 63 | writedlm(joinpath(datadir, "ubar_profile.dsv"), 64 | extract_ubar_prof_callback(convert(Int64, round(ni/2)))(sim), 65 | ","); 66 | end 67 | 68 | # test for conditions to end simulation 69 | test_for_term: is_steadystate_x 70 | -------------------------------------------------------------------------------- /publication_sims/archive/power_law/125.yaml: -------------------------------------------------------------------------------- 1 | version: 0.2.4 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | const pgrad = -5.0e-5; 6 | const F = [-pgrad; 0.0]; 7 | const datadir = joinpath("data","power_law","1.25"); 8 | const nsteps = 12000; 9 | const ni = 25; 10 | const nj = 80; 11 | const mu = 2/11; 12 | const n = 1.25; 13 | const constit_rel_f = init_constit_mrt_power_law_implicit(mu, n, 1e-9, 100, 1e-9); 14 | const forcing_kf = init_korner_Fk(F); 15 | 16 | # data 17 | datadir: { value: datadir, expr: true } 18 | 19 | # material properties 20 | rho_0: { value: 1.0, expr: false } 21 | nu: { value: mu, expr: true } 22 | 23 | # lattice parameters 24 | dx: { value: 1.0, expr: false } 25 | dt: { value: 1.0, expr: false } 26 | ni: { value: ni, expr: true } 27 | nj: { value: nj, expr: true } 28 | 29 | # simulation parameters 30 | nsteps: { value: 10000, expr: false } 31 | col_f: init_col_mrt(constit_rel_f, forcing_kf, S_luo); 32 | 33 | # boundaries 34 | sbounds: 35 | value: "[1 ni 1 nj;]'" 36 | expr: true 37 | 38 | cbounds: 39 | value: "[1 ni 1 nj;]'" 40 | expr: true 41 | 42 | # boundary conditions 43 | bcs: 44 | - north_bounce_back! 45 | - south_bounce_back! 46 | - periodic_east_to_west! 47 | 48 | callbacks: 49 | - print_step_callback(50) 50 | - write_jld_file_callback(datadir, convert(Int64, round(nsteps/20))) 51 | 52 | # clean-up, backup, write out 53 | finally: 54 | - write_jld_file_callback(datadir) 55 | - > 56 | (sim::Sim, k::Int) -> begin 57 | writedlm(joinpath(datadir, "ux_profile.dsv"), 58 | extract_ux_prof_callback(convert(Int64, round(ni/2)))(sim), 59 | ","); 60 | end 61 | - > 62 | (sim::Sim, k::Int) -> begin 63 | writedlm(joinpath(datadir, "ubar_profile.dsv"), 64 | extract_ubar_prof_callback(convert(Int64, round(ni/2)))(sim), 65 | ","); 66 | end 67 | 68 | # test for conditions to end simulation 69 | test_for_term: is_steadystate_x 70 | -------------------------------------------------------------------------------- /publication_sims/archive/power_law/150.yaml: -------------------------------------------------------------------------------- 1 | version: 0.2.4 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | const pgrad = -5.0e-5; 6 | const F = [-pgrad; 0.0]; 7 | const datadir = joinpath("data","power_law","1.50"); 8 | const nsteps = 12000; 9 | const ni = 25; 10 | const nj = 80; 11 | const mu = 2/11; 12 | const n = 1.50; 13 | const constit_rel_f = init_constit_mrt_power_law_implicit(mu, n, 1e-9, 100, 1e-9); 14 | const forcing_kf = init_korner_Fk(F); 15 | 16 | # data 17 | datadir: { value: datadir, expr: true } 18 | 19 | # material properties 20 | rho_0: { value: 1.0, expr: false } 21 | nu: { value: mu, expr: true } 22 | 23 | # lattice parameters 24 | dx: { value: 1.0, expr: false } 25 | dt: { value: 1.0, expr: false } 26 | ni: { value: ni, expr: true } 27 | nj: { value: nj, expr: true } 28 | 29 | # simulation parameters 30 | nsteps: { value: 10000, expr: false } 31 | col_f: init_col_mrt(constit_rel_f, forcing_kf, S_luo); 32 | 33 | # boundaries 34 | sbounds: 35 | value: "[1 ni 1 nj;]'" 36 | expr: true 37 | 38 | cbounds: 39 | value: "[1 ni 1 nj;]'" 40 | expr: true 41 | 42 | # boundary conditions 43 | bcs: 44 | - north_bounce_back! 45 | - south_bounce_back! 46 | - periodic_east_to_west! 47 | 48 | callbacks: 49 | - print_step_callback(50) 50 | - write_jld_file_callback(datadir, convert(Int64, round(nsteps/20))) 51 | 52 | # clean-up, backup, write out 53 | finally: 54 | - write_jld_file_callback(datadir) 55 | - > 56 | (sim::Sim, k::Int) -> begin 57 | writedlm(joinpath(datadir, "ux_profile.dsv"), 58 | extract_ux_prof_callback(convert(Int64, round(ni/2)))(sim), 59 | ","); 60 | end 61 | - > 62 | (sim::Sim, k::Int) -> begin 63 | writedlm(joinpath(datadir, "ubar_profile.dsv"), 64 | extract_ubar_prof_callback(convert(Int64, round(ni/2)))(sim), 65 | ","); 66 | end 67 | 68 | # test for conditions to end simulation 69 | test_for_term: is_steadystate_x 70 | -------------------------------------------------------------------------------- /publication_sims/archive/power_law/175.yaml: -------------------------------------------------------------------------------- 1 | version: 0.2.4 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | const pgrad = -5.0e-5; 6 | const F = [-pgrad; 0.0]; 7 | const datadir = joinpath("data","power_law","1.75"); 8 | const nsteps = 12000; 9 | const ni = 25; 10 | const nj = 80; 11 | const mu = 2/11; 12 | const n = 1.75; 13 | const constit_rel_f = init_constit_mrt_power_law_implicit(mu, n, 1e-9, 100, 1e-9); 14 | const forcing_kf = init_korner_Fk(F); 15 | 16 | # data 17 | datadir: { value: datadir, expr: true } 18 | 19 | # material properties 20 | rho_0: { value: 1.0, expr: false } 21 | nu: { value: mu, expr: true } 22 | 23 | # lattice parameters 24 | dx: { value: 1.0, expr: false } 25 | dt: { value: 1.0, expr: false } 26 | ni: { value: ni, expr: true } 27 | nj: { value: nj, expr: true } 28 | 29 | # simulation parameters 30 | nsteps: { value: 10000, expr: false } 31 | col_f: init_col_mrt(constit_rel_f, forcing_kf, S_luo); 32 | 33 | # boundaries 34 | sbounds: 35 | value: "[1 ni 1 nj;]'" 36 | expr: true 37 | 38 | cbounds: 39 | value: "[1 ni 1 nj;]'" 40 | expr: true 41 | 42 | # boundary conditions 43 | bcs: 44 | - north_bounce_back! 45 | - south_bounce_back! 46 | - periodic_east_to_west! 47 | 48 | callbacks: 49 | - print_step_callback(50) 50 | - write_jld_file_callback(datadir, convert(Int64, round(nsteps/20))) 51 | 52 | # clean-up, backup, write out 53 | finally: 54 | - write_jld_file_callback(datadir) 55 | - > 56 | (sim::Sim, k::Int) -> begin 57 | writedlm(joinpath(datadir, "ux_profile.dsv"), 58 | extract_ux_prof_callback(convert(Int64, round(ni/2)))(sim), 59 | ","); 60 | end 61 | - > 62 | (sim::Sim, k::Int) -> begin 63 | writedlm(joinpath(datadir, "ubar_profile.dsv"), 64 | extract_ubar_prof_callback(convert(Int64, round(ni/2)))(sim), 65 | ","); 66 | end 67 | 68 | # test for conditions to end simulation 69 | test_for_term: is_steadystate_x 70 | -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/for-opt_median_bgk-12.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "median", "bgk-12", "opt"); 4 | const nj = 64; 5 | const ni = 32; 6 | const nsteps = 15000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 12e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | 13 | col_f: > 14 | FltrStdCol(BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf); 15 | metric=qx_neq_abs, 16 | scale=(args...) -> scale_root_median(args...) / 19.620654296874996, 17 | diss=(args...)->contract_qx!(args...; weight_a=0.35283203125), 18 | stds=3.610400390625, 19 | ds_threshold=0.020082373046875 20 | ) 21 | 22 | datadir: { value: datadir, expr: true } 23 | 24 | rho_0: { value: 1.0, expr: false } 25 | nu: { value: mu, expr: true } 26 | 27 | dx: { value: 1.0, expr: false } 28 | dt: { value: 1.0, expr: false } 29 | ni: { value: ni, expr: true } 30 | nj: { value: nj, expr: true } 31 | 32 | simtype: default 33 | nsteps: { value: nsteps, expr: true } 34 | 35 | bcs: 36 | - north_bounce_back! 37 | - south_bounce_back! 38 | - periodic_east_to_west! 39 | 40 | callbacks: 41 | - write_jld_file_callback(datadir, 2000) 42 | - write_jld_file_callback(datadir, 5000, true) 43 | 44 | finally: 45 | - write_jld_file_callback(datadir) 46 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 16, datadir; plot_errors=false) 47 | -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/median_bgk-8.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "median", "bgk-8", "opt"); 4 | const nj = 64; 5 | const ni = 32; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 16e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | 13 | col_f: FltrFixedDSCol(BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf); ds_threshold=1.9999971856632068) 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: mu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: default 25 | nsteps: { value: nsteps, expr: true } 26 | 27 | bcs: 28 | - north_bounce_back! 29 | - south_bounce_back! 30 | - periodic_east_to_west! 31 | 32 | callbacks: 33 | - print_step_callback(250) 34 | - write_jld_file_callback(datadir, 2000) 35 | - write_jld_file_callback(datadir, 5000, true) 36 | 37 | finally: 38 | - write_jld_file_callback(datadir) 39 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 16, datadir; plot_errors=false) 40 | - > 41 | (sim, k) -> begin 42 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 43 | info("Re = $(reynolds(umax, nj, mu))"); 44 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 45 | end 46 | - > 47 | (sim, k) -> begin 48 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 49 | writedlm(joinpath(datadir, "ux_profile.dsv"), 50 | begin 51 | x, y = vpa(sim); 52 | hcat(x, y); 53 | end, 54 | ","); 55 | end 56 | -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/median_bgk-8_delta-1e-5.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "median", "bgk-8", "delta-1e-5"); 4 | const nj = 64; 5 | const ni = 32; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 16e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: FltrFixedDSCol(BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf); ds_threshold=1e-5) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 16, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end 55 | -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-04_bgk-5.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-04", "bgk-5"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 4e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e5, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-04_bgk-8.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-04", "bgk-8"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 4e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-04_bgk-fltr.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-04", "bgk-fltr"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 4e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: FltrStdCol(BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf; feq_f=feq_incomp_max_entropy)) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-04_mrt.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-04", "mrt"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 4e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: MRT_F(init_constit_mrt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-04_svec.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-04", "svec"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 4e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 0.501, 8.0, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-08_bgk-5.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-08", "bgk-5"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 8e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e5, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-08_bgk-8.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-08", "bgk-8"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 8e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-08_bgk-fltr.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-08", "bgk-fltr"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 8e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: FltrStdCol(BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf; feq_f=feq_incomp_max_entropy)) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-08_mrt.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-08", "mrt"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 15000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 8e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: MRT_F(init_constit_mrt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | test_for_term: is_steadystate_x 37 | 38 | finally: 39 | - write_jld_file_callback(datadir) 40 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 41 | - > 42 | (sim, k) -> begin 43 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 44 | info("Re = $(reynolds(umax, nj, mu))"); 45 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 46 | end 47 | - > 48 | (sim, k) -> begin 49 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 50 | writedlm(joinpath(datadir, "ux_profile.dsv"), 51 | begin 52 | x, y = vpa(sim); 53 | hcat(x, y); 54 | end, 55 | ","); 56 | end 57 | -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-08_svec.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-08", "svec"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 8e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 0.501, 8.0, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-12_bgk-5.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-12", "bgk-5"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 12e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e5, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-12_bgk-8.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-12", "bgk-8"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 12e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-12_bgk-fltr.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-12", "bgk-fltr"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 12e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: FltrStdCol(BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf; feq_f=feq_incomp_max_entropy)) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-12_mrt.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-12", "mrt"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 12e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: MRT_F(init_constit_mrt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-12_svec.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-12", "svec"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 12e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 0.501, 8.0, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-16_bgk-5.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-16", "bgk-5"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 16e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e5, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-16_bgk-8.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-16", "bgk-8"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 16e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-16_mrt.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-16", "mrt"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 16e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: MRT_F(init_constit_mrt_bingham_implicit(mu, tauy, 1e8, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/for_paper/poise/draft/tau-16_svec.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | const datadir = joinpath("data", "for_paper", "tau-16", "svec"); 4 | const nj = 64; 5 | const ni = 128; 6 | const nsteps = 25000; 7 | const pgrad = -1e-5; 8 | const F = [-pgrad, 0.0]; 9 | const mu = 0.2; 10 | const tauy = 16e-5; 11 | const forcing_kf = init_korner_Fk(F); 12 | col_f: BGK_F(init_constit_srt_bingham_implicit(mu, tauy, 1e8, 0.501, 8.0, 1e-12, 15, 1e-6), forcing_kf) 13 | datadir: { value: datadir, expr: true } 14 | 15 | rho_0: { value: 1.0, expr: false } 16 | nu: { value: mu, expr: true } 17 | 18 | dx: { value: 1.0, expr: false } 19 | dt: { value: 1.0, expr: false } 20 | ni: { value: ni, expr: true } 21 | nj: { value: nj, expr: true } 22 | 23 | simtype: default 24 | nsteps: { value: nsteps, expr: true } 25 | 26 | bcs: 27 | - north_bounce_back! 28 | - south_bounce_back! 29 | - periodic_east_to_west! 30 | 31 | callbacks: 32 | - print_step_callback(250) 33 | - write_jld_file_callback(datadir, 2000) 34 | - write_jld_file_callback(datadir, 5000, true) 35 | 36 | finally: 37 | - write_jld_file_callback(datadir) 38 | - report_lbm_error(n -> analytical_poise_bingham(mu, tauy, pgrad, n), 1, 64, datadir; plot_errors=false) 39 | - > 40 | (sim, k) -> begin 41 | umax = maximum(analytical_poise_bingham(mu, tauy, pgrad, nj)); 42 | info("Re = $(reynolds(umax, nj, mu))"); 43 | info("Bn = $(bingham_number(umax, nj, mu, tauy))"); 44 | end 45 | - > 46 | (sim, k) -> begin 47 | vpa = vel_prof_acsr(1, convert(Int, round(ni/2)), 1:nj); 48 | writedlm(joinpath(datadir, "ux_profile.dsv"), 49 | begin 50 | x, y = vpa(sim); 51 | hcat(x, y); 52 | end, 53 | ","); 54 | end -------------------------------------------------------------------------------- /publication_sims/wbs/wb0/verify/dam.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | 3 | preamble: > 4 | @init_plot_env(); 5 | const datadir = joinpath("data", "dam"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_const(nu); 8 | const F = [0.0; -5.0e-6]; 9 | const forcing_kf = init_sukop_gravity_Fk(F); 10 | const ni = 60; 11 | const nj = 50; 12 | const nsteps = 500000; 13 | 14 | # data directory 15 | datadir: { value: datadir, expr: true } 16 | 17 | # material properties 18 | rho_0: { value: 1.0, expr: false } 19 | nu: { value: nu, expr: true } 20 | 21 | # lattice parameters 22 | dx: { value: 1.0, expr: false } 23 | dt: { value: 1.0, expr: false } 24 | ni: { value: ni, expr: true } 25 | nj: { value: nj, expr: true } 26 | 27 | # simulation parameters 28 | simtype: free_surface 29 | col_f: BGK_F(constit_rel_f, forcing_kf); 30 | nsteps: { value: nsteps, expr: true } 31 | 32 | # boundaries 33 | sbounds: 34 | value: "[1 ni 1 nj;]'" 35 | expr: true 36 | 37 | cbounds: 38 | value: "[1 ni 1 nj;]'" 39 | expr: true 40 | 41 | # boundary conditions 42 | bcs: 43 | - west_bounce_back! 44 | - east_bounce_back! 45 | - south_bounce_back! 46 | - north_bounce_back! 47 | 48 | # free surface conditions 49 | rho_g: 1.0 50 | 51 | fill_x: { value: 1/3, expr: true } 52 | fill_y: { value: 0.9, expr: false } 53 | 54 | # callback functions 55 | callbacks: 56 | - print_step_callback(100, "dam-break") 57 | - plot_mass_contours_callback(200, joinpath(datadir, "mass")) 58 | - write_jld_file_callback(datadir, 5000) 59 | 60 | # clean-up, backup, write out 61 | finally: 62 | - plot_mass_contours_callback(1, joinpath(datadir, "mass")) 63 | - write_jld_file_callback(datadir) 64 | -------------------------------------------------------------------------------- /publication_sims/wbs/wb0/verify/dam2.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | 3 | preamble: > 4 | @init_plot_env(); 5 | const datadir = joinpath("data", "dam2"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_const(nu); 8 | const F = [0.0; -5.0e-7]; 9 | const forcing_kf = init_sukop_gravity_Fk(F); 10 | const ni = 60; 11 | const nj = 50; 12 | const nsteps = 500000; 13 | 14 | # data directory 15 | datadir: { value: datadir, expr: true } 16 | 17 | # material properties 18 | rho_0: { value: 1.0, expr: false } 19 | nu: { value: nu, expr: true } 20 | 21 | # lattice parameters 22 | dx: { value: 1.0, expr: false } 23 | dt: { value: 1.0, expr: false } 24 | ni: { value: ni, expr: true } 25 | nj: { value: nj, expr: true } 26 | 27 | # simulation parameters 28 | simtype: free_surface 29 | col_f: BGK_F(constit_rel_f, forcing_kf); 30 | nsteps: { value: nsteps, expr: true } 31 | 32 | # boundaries 33 | sbounds: 34 | value: "[1 ni 1 nj;]'" 35 | expr: true 36 | 37 | cbounds: 38 | value: "[1 ni 1 nj;]'" 39 | expr: true 40 | 41 | # boundary conditions 42 | bcs: 43 | - west_bounce_back! 44 | - east_bounce_back! 45 | - south_bounce_back! 46 | - north_bounce_back! 47 | 48 | # free surface conditions 49 | rho_g: 1.0 50 | 51 | fill_x: { value: 1/3, expr: true } 52 | fill_y: { value: 0.9, expr: false } 53 | 54 | # callback functions 55 | callbacks: 56 | - print_step_callback(100, "dam-break") 57 | - plot_mass_contours_callback(200, joinpath(datadir, "mass")) 58 | - write_jld_file_callback(datadir, 5000) 59 | 60 | # clean-up, backup, write out 61 | finally: 62 | - plot_mass_contours_callback(1, joinpath(datadir, "mass")) 63 | - write_jld_file_callback(datadir) 64 | -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g1_cav-15x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g1", "cav-15x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 15 15 30; 1 15 45 2398]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(15, 30, 0/ni, 15/ni), (45, 2398, 0/ni, 15/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g1_cav-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g1", "cav-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 15 30; 1 30 60 2398]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(15, 30, 0/ni, 30/ni), (60, 2398, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g1_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g1", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g1_obs-30x2.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g1", "obs-30x2"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120; 1 30 150 180]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni),(150, 180, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g1_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g1", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g1_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g1", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g1_obs-40x2.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g1", "obs-40x2"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120; 1 40 150 180]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni), (150, 180, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g1_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g1", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g2_cav-15x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g2", "cav-15x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 15 15 30; 1 15 45 2398]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(15, 30, 0/ni, 15/ni), (45, 2398, 0/ni, 15/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g2_cav-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g2", "cav-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 15 30; 1 30 60 2398]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(15, 30, 0/ni, 30/ni), (60, 2398, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g2_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g2", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g2_obs-30x2.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g2", "obs-30x2"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120; 1 30 150 180]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni),(150, 180, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g2_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g2", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g2_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g2", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g2_obs-40x2.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g2", "obs-40x2"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120; 1 40 150 180]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni), (150, 180, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0000_g2_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0000", "g2", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 0.0, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0005_g1_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0005", "g1", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 2.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0005_g1_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0005", "g1", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 2.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0005_g1_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0005", "g1", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 2.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0005_g1_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0005", "g1", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 2.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0005_g2_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0005", "g2", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 2.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0005_g2_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0005", "g2", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 2.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0005_g2_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0005", "g2", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 2.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0005_g2_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0005", "g2", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 2.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0010_g1_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0010", "g1", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0010_g1_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0010", "g1", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, mass_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) 51 | -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0010_g1_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0010", "g1", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0010_g1_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0010", "g1", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0010_g2_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0010", "g2", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0010_g2_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0010", "g2", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0010_g2_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0010", "g2", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0010_g2_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0010", "g2", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0025_g1_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0025", "g1", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 1.e-3, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0025_g1_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0025", "g1", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 1.e-3, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0025_g1_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0025", "g1", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 1.e-3, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0025_g1_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0025", "g1", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 1.e-3, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0025_g2_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0025", "g2", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 1.e-3, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0025_g2_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0025", "g2", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 1.e-3, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0025_g2_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0025", "g2", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 1.e-3, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0003_bn-0025_g2_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0003", "bn-0025", "g2", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 1.e-3, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.01; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0005_bn-0005_g1_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0005", "bn-0005", "g1", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.02; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0005_bn-0005_g1_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0005", "bn-0005", "g1", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.02; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0005_bn-0005_g1_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0005", "bn-0005", "g1", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.02; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0005_bn-0005_g1_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0005", "bn-0005", "g1", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.02; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0005_bn-0005_g2_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0005", "bn-0005", "g2", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.02; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0005_bn-0005_g2_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0005", "bn-0005", "g2", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.02; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0005_bn-0005_g2_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0005", "bn-0005", "g2", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.02; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0005_bn-0005_g2_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0005", "bn-0005", "g2", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.02; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0013_bn-0002_g1_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0013", "bn-0002", "g1", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.05; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0013_bn-0002_g1_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0013", "bn-0002", "g1", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.05; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0013_bn-0002_g1_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0013", "bn-0002", "g1", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.05; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0013_bn-0002_g1_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0013", "bn-0002", "g1", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.05; 12 | const F = [0.0; -5.0e-7]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0013_bn-0002_g2_obs-30x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0013", "bn-0002", "g2", "obs-30x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.05; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0013_bn-0002_g2_obs-30xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0013", "bn-0002", "g2", "obs-30xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.05; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 30 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 30/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0013_bn-0002_g2_obs-40x1.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0013", "bn-0002", "g2", "obs-40x1"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.05; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 120;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 120, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /publication_sims/wbs/wb1/re-0013_bn-0002_g2_obs-40xL.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | preamble: > 3 | @init_plot_env(); 4 | @change_default_figsize(4, 14); 5 | const datadir = joinpath("data", "re-0013", "bn-0002", "g2", "obs-40xL"); 6 | const nu = 0.2; 7 | const constit_rel_f = init_constit_srt_bingham_implicit(nu, 4.e-4, 1e6, 1e-9, 15, 1e-6); 8 | const nj = 2400; 9 | const ni = 50; 10 | const nsteps = 250000; 11 | const u0 = 0.05; 12 | const F = [0.0; -1.0e-6]; 13 | const forcing_kf = init_sukop_gravity_Fk(F); 14 | datadir: { value: datadir, expr: true } 15 | 16 | rho_0: { value: 1.0, expr: false } 17 | nu: { value: nu, expr: true } 18 | 19 | dx: { value: 1.0, expr: false } 20 | dt: { value: 1.0, expr: false } 21 | ni: { value: ni, expr: true } 22 | nj: { value: nj, expr: true } 23 | 24 | simtype: "free_surface" 25 | col_f: BGK_F(constit_rel_f, forcing_kf); 26 | 27 | nsteps: { value: nsteps, expr: true } 28 | 29 | bcs: 30 | - west_bounce_back! 31 | - east_bounce_back! 32 | - FastAnonymous.@anon (sim) -> south_mass_inlet!(sim, 1.0) 33 | - FastAnonymous.@anon (sim) -> south_velocity!(sim.lat, u0) 34 | - north_mass_outlet! 35 | 36 | rho_g: 1.0 37 | 38 | fill_x: { value: 1.0, expr: false } 39 | fill_y: { value: 0.02, expr: false } 40 | obstacles: 41 | - type: bounce_back 42 | coords: "[1 40 60 600;]'" 43 | 44 | callbacks: 45 | - print_step_callback(250, "free-surf") 46 | - pycontour_callback(250, ff_acsr; showfig=false, filled=true, colorbar=true, levels=collect(linspace(0.0, 1.0, 11)), fname=joinpath(datadir, "mass"), rects=[(60, 600, 0/ni, 40/ni)]) 47 | - write_jld_file_callback(datadir, 2000) 48 | - take_snapshot_callback("ff.csv", 250, (sim) -> sim.tracker.eps; dir=datadir) 49 | finally: 50 | - write_jld_file_callback(datadir) -------------------------------------------------------------------------------- /scripts/calc_fill.jl: -------------------------------------------------------------------------------- 1 | fltr_bad_val(val::Number) = if (val < 0) 2 | 0.0 3 | elseif (val > 1.0) 4 | 1.0 5 | else 6 | val 7 | end; 8 | fltr_bad_val(val::AbstractString) = 0; 9 | 10 | d = readdlm(ARGS[1], ','); 11 | map!(fltr_bad_val, d); 12 | 13 | println(norm(d, Inf)); 14 | -------------------------------------------------------------------------------- /scripts/dump_bak.jl: -------------------------------------------------------------------------------- 1 | const __dump_bak_root__ = dirname(@__FILE__); 2 | require(abspath(joinpath(__dump_bak_root__, "..", "inc", "lattice.jl"))); 3 | require(abspath(joinpath(__dump_bak_root__, "..", "inc", "multiscale.jl"))); 4 | require(abspath(joinpath(__dump_bak_root__, "..", "inc", "sim", "simtypes.jl"))); 5 | 6 | using HDF5, JLD; 7 | 8 | if length(ARGS) != 1 9 | info("Usage: dump_bak.jl path_to_bak.jld"); 10 | exit(1); 11 | end 12 | 13 | fname = ARGS[1]; 14 | data = jldopen(fname,"r") do file 15 | read(file); 16 | end 17 | println(data); 18 | -------------------------------------------------------------------------------- /scripts/install-dependencies.jl: -------------------------------------------------------------------------------- 1 | import Pkg; 2 | Pkg.update(); 3 | 4 | for pkgname in ( 5 | "ArgParse", 6 | "PythonCall", 7 | "PythonPlot", 8 | "YAML", 9 | "HDF5", 10 | "JLD", 11 | "ProfileView", 12 | "Roots" 13 | ) 14 | 15 | println("Checking for package $pkgname"); 16 | Pkg.add(pkgname); 17 | end 18 | -------------------------------------------------------------------------------- /scripts/opt_contract_qx.jl: -------------------------------------------------------------------------------- 1 | using Optim 2 | 3 | const input_fpath = "publication_sims/for_paper/poise/for-opt_median_bgk-12.yaml" 4 | const indent = " "; 5 | 6 | function f(x) 7 | r = open(input_fpath); 8 | lines = readlines(r); 9 | close(r); 10 | w = open(input_fpath, "w"); 11 | for line in lines 12 | if startswith(line, indent * "scale=") 13 | write(w, indent * "scale=(args...) -> scale_root_median(args...) / $(x[1]),\n"); 14 | elseif startswith(line, indent * "stds=") 15 | write(w, indent * "stds=$(x[2]),\n"); 16 | elseif startswith(line, indent * "ds_threshold=") 17 | write(w, indent * "ds_threshold=$(x[3])\n"); 18 | elseif startswith(line, indent * "diss=") 19 | write(w, indent * "diss=(args...)->contract_qx!(args...; weight_a=$(x[4])),\n"); 20 | else 21 | write(w, line); 22 | end 23 | end 24 | close(w); 25 | run(`julia lbxflow.jl -f $input_fpath`); 26 | e = open("data/for_paper/median/bgk-12/opt/rerrors.txt"); 27 | l = readline(e); 28 | c = parse(strip(split(l, '=')[2])); 29 | close(e); 30 | return c; 31 | end 32 | 33 | result = optimize(f, [16.0; 2.7; 1e-5; 0.5], Optim.NelderMead(), 34 | OptimizationOptions(x_tol=1e-12, f_tol=1e-12, 35 | iterations=1000, store_trace=true, 36 | show_trace=true, extended_trace=true, show_every=10) 37 | ); 38 | -------------------------------------------------------------------------------- /scripts/opt_delta.jl: -------------------------------------------------------------------------------- 1 | using Optim 2 | 3 | function f(δ) 4 | r = open("example_sims/for_paper/poise/median_bgk-8.yaml"); 5 | s = readall(r); 6 | close(r); 7 | w = open("example_sims/for_paper/poise/median_bgk-8.yaml", "w"); 8 | write(w, replace(s, r"ds_threshold.*\)", "ds_threshold=$(δ))")); 9 | close(w); 10 | run(`julia lbxflow.jl -f example_sims/for_paper/poise/median_bgk-8.yaml`); 11 | e = open("data/for_paper/median/bgk-8/opt/rerrors.txt"); 12 | l = readline(e); 13 | c = parse(strip(split(l, '=')[2])); 14 | close(e); 15 | return c; 16 | end 17 | 18 | result = optimize(f, 1e-9, 2.0, Optim.Brent()); 19 | println("Minimizer: $(Optim.minimizer(result))"); 20 | println("Minimum: $(Optim.minimum(result))"); 21 | -------------------------------------------------------------------------------- /scripts/opt_delta2.jl: -------------------------------------------------------------------------------- 1 | using Optim 2 | 3 | function f(δ) 4 | r = open("example_sims/for_paper/poise/ehren_bgk-8.yaml"); 5 | s = readall(r); 6 | close(r); 7 | w = open("example_sims/for_paper/poise/ehren_bgk-8.yaml", "w"); 8 | write(w, replace(s, r"ds_threshold.*\)", "ds_threshold=$(δ))")); 9 | close(w); 10 | run(`julia lbxflow.jl -f example_sims/for_paper/poise/ehren_bgk-8.yaml`); 11 | e = open("data/for_paper/ehren/bgk-8/opt/rerrors.txt"); 12 | l = readline(e); 13 | c = parse(strip(split(l, '=')[2])); 14 | close(e); 15 | return c; 16 | end 17 | 18 | result = optimize(f, 1e-9, 2.0, Optim.Brent()); 19 | println("Minimizer: $(Optim.minimizer(result))"); 20 | println("Minimum: $(Optim.minimum(result))"); 21 | -------------------------------------------------------------------------------- /scripts/paper_params.jl: -------------------------------------------------------------------------------- 1 | include("../inc/LBXFlow.jl"); 2 | using LBXFlow; 3 | using Roots; 4 | 5 | h = 64; 6 | H = 2 * h; 7 | 8 | for (re, bn) in zip([6.05; 4.42; 3.04; 1.92], [0.68; 1.85; 4.04; 8.52]) 9 | u0 = 0.2 * re / H; 10 | tau_y = bn * 0.2 * u0 / H; 11 | #pgrad = fzero(pgrad -> 1 / (2 * 0.2) * -pgrad * (h^2 - (tau_y / pgrad)^2) - tau_y / 0.2 * (h - (tau_y / pgrad)) - u0, -2.0, 0.0); 12 | pgrad = fzero(pgrad -> (maximum(LBXFlow.analytical_poise_bingham(0.2, tau_y, pgrad, H)) - u0), -1e-5; order=8); 13 | println("re = $re, bn = $bn, u = $u0 => pgrad = $pgrad, tau_y = $tau_y"); 14 | umax = maximum(LBXFlow.analytical_poise_bingham(0.2, tau_y, pgrad, H)); 15 | println(" Re => $(LBXFlow.reynolds(umax, H, 0.2))"); 16 | println(" Bn => $(LBXFlow.bingham_number(umax, H, 0.2, tau_y))"); 17 | end 18 | 19 | for (n, re) in zip([0.5; 0.75; 1.25; 1.5], [0.0007; 0.9125; 423.2; 2213]) 20 | u0 = (re * 0.2 / H^n)^(1 / (2 - n)); 21 | #pgrad = fzero(pgrad -> n / (n + 1) * (-1 / 0.2 * pgrad)^(1/n) * h^( (n+1)/n ) - u0, -5.0, 0.0); 22 | pgrad = try 23 | fzero(pgrad -> maximum(LBXFlow.analytical_poise_power_law(0.2, n, pgrad, H)) - u0, -1e-5; order=8); 24 | catch 25 | fzero(pgrad -> maximum(LBXFlow.analytical_poise_power_law(0.2, n, pgrad, H)) - u0, -1.0, 0.0); 26 | end 27 | umax = maximum(LBXFlow.analytical_poise_power_law(0.2, n, pgrad, H)); 28 | println("re = $re, u = $u0 => pgrad = $pgrad"); 29 | println(" Re => $(umax^(2.0 - n) * H^n / 0.2)"); 30 | end 31 | -------------------------------------------------------------------------------- /scripts/pvd.jl: -------------------------------------------------------------------------------- 1 | using HDF5, JLD, ProfileView 2 | 3 | if length(ARGS) != 1 4 | println("Usage: pvd.jl path/to/profile.jld"); 5 | exit(1); 6 | end 7 | 8 | const profpath = ARGS[1]; 9 | 10 | if isfile(profpath) 11 | d = jldopen(profpath) do file 12 | read(file); 13 | end 14 | ProfileView.view(d["bt"], lidict=d["lidict"]); 15 | println("Press enter to continue..."); 16 | readline(STDIN); 17 | else 18 | error(profpath, " not found!"); 19 | end 20 | -------------------------------------------------------------------------------- /scripts/renum_figs.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import os 3 | 4 | parser = argparse.ArgumentParser(description='Rename files to ffmpeg') 5 | parser.add_argument('dir', help='directory where files to be renamed are stored') 6 | parser.add_argument('--exe', '-x', default='.png', 7 | help='file extension of images') 8 | parser.add_argument('--numdigits', '-n', default=9, 9 | help='number of digits to format number to') 10 | parser.add_argument('--verbose', '-v', default=False, action='store_true', 11 | help='print diagnostic information') 12 | args = parser.parse_args() 13 | 14 | _format_str = "{0:0" + str(args.numdigits) + "d}" 15 | 16 | for (i, fname) in enumerate(os.listdir(args.dir)): 17 | if args.verbose: 18 | print('Checking ' + fname + ' to see if it needs renamed') 19 | if fname.endswith(args.exe): 20 | pieces = fname.split("_") 21 | pieces[-1] = _format_str.format(i) + args.exe 22 | new_fname = "_".join(pieces) 23 | os.rename(os.path.join(args.dir, fname), os.path.join(args.dir, new_fname)) 24 | if args.verbose: 25 | print('\t' + fname + ' -> ' + new_fname) 26 | -------------------------------------------------------------------------------- /scripts/rf.jl: -------------------------------------------------------------------------------- 1 | top_d = ARGS[1]; 2 | 3 | fltr_bad_val(val::Number) = if (val < 0) 4 | 0.0 5 | elseif (val > 1.0) 6 | 1.0 7 | else 8 | val 9 | end; 10 | fltr_bad_val(val::AbstractString) = 0; 11 | 12 | function _r(args...) 13 | paths = readdir(joinpath(args...)); 14 | for path in paths 15 | if isdir(path) 16 | _r(args..., path); 17 | elseif path == "ff.csv" 18 | report(args..., path); 19 | end 20 | end 21 | end 22 | 23 | function report(args...) 24 | ffdata = readdlm(joinpath(args...), ','); 25 | map!(fltr_bad_val, ffdata); 26 | 27 | ni, nj = size(ffdata); 28 | fill_max = 0; 29 | ma_max = 0; 30 | for j=1:nj 31 | ts = sub(ffdata, j, :); 32 | fill_sum = sum(ts); 33 | if fill_sum > fill_max 34 | fill_max = fill_sum; 35 | end 36 | end 37 | println(join(args), " fill_max: ", fill_max); 38 | end 39 | 40 | _r(top_d); 41 | -------------------------------------------------------------------------------- /scripts/stream_func_from_file.m: -------------------------------------------------------------------------------- 1 | function [phi, psi] = stream_func_from_file(u_file, v_file) 2 | u = csvread(u_file); 3 | v = csvread(v_file); 4 | 5 | [phi, psi] = flowfun(u, v); 6 | end 7 | -------------------------------------------------------------------------------- /test/archive/test_coltype_bgk_newt_03.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | using Base.Test; 6 | const pgrad = -1.102e-4; 7 | const F = [-pgrad; 0.0]; 8 | const datadir = "data"; 9 | const ni = 128; 10 | const nj = 64; 11 | const mu = 3/6; 12 | const constit_rel_f = init_constit_srt_const(mu); 13 | const forcing_kf = init_sukop_Fk(F); 14 | 15 | # data 16 | datadir: { value: datadir, expr: true } 17 | 18 | # material properties 19 | # TODO: specify constitutive model type (general Newtonian, Newtonian, etc.) 20 | rho_0: { value: 1.0, expr: false } 21 | nu: { value: mu, expr: true } 22 | 23 | # lattice parameters 24 | dx: { value: 1.0, expr: false } 25 | dt: { value: 1.0, expr: false } 26 | ni: { value: ni, expr: true } 27 | nj: { value: nj, expr: true } 28 | 29 | # simulation parameters 30 | nsteps: { value: 10000, expr: false } 31 | col_f: BGK_F(constit_rel_f, forcing_kf); 32 | 33 | # boundaries 34 | sbounds: 35 | value: "[1 ni 1 nj;]'" 36 | expr: true 37 | 38 | cbounds: 39 | value: "[1 ni 1 nj;]'" 40 | expr: true 41 | 42 | # boundary conditions 43 | bcs: 44 | - north_bounce_back! 45 | - south_bounce_back! 46 | - periodic_east_to_west! 47 | 48 | callbacks: 49 | - print_step_callback(25) 50 | 51 | # clean-up, backup, write out 52 | finally: 53 | - > 54 | (sim::Sim, k::Int) -> begin 55 | us = analytical_poise_newton(mu, pgrad, nj); 56 | i = convert(Int, round(ni/2)); 57 | for j = 1:nj 58 | println("analyt == lbm ? $(us[j]) == $(sim.msm.u[1,i,j])"); 59 | @test_approx_eq_eps us[j] sim.msm.u[1,i,j] 5e-3 60 | end 61 | println("TEST PASSED"); 62 | end 63 | 64 | # test for conditions to end simulation 65 | test_for_term: is_steadystate_x 66 | -------------------------------------------------------------------------------- /test/archive/test_modcol_srt_sukop_3.yaml: -------------------------------------------------------------------------------- 1 | version: 0.2.1 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | using Base.Test; 6 | const pgrad = -1.102e-4; 7 | const F = [-pgrad; 0.0]; 8 | const datadir = "data"; 9 | const ni = 128; 10 | const nj = 64; 11 | const mu = 3/6; 12 | const constit_rel_f = init_constit_srt_const(mu); 13 | const forcing_kf = init_sukop_Fk(F); 14 | 15 | # data 16 | datadir: { value: datadir, expr: true } 17 | 18 | # material properties 19 | # TODO: specify constitutive model type (general Newtonian, Newtonian, etc.) 20 | rho_0: { value: 1.0, expr: false } 21 | nu: { value: mu, expr: true } 22 | 23 | # lattice parameters 24 | dx: { value: 1.0, expr: false } 25 | dt: { value: 1.0, expr: false } 26 | ni: { value: ni, expr: true } 27 | nj: { value: nj, expr: true } 28 | 29 | # simulation parameters 30 | nsteps: { value: 10000, expr: false } 31 | col_f: init_col_srt(constit_rel_f, forcing_kf); 32 | 33 | # boundaries 34 | sbounds: 35 | value: "[1 ni 1 nj;]'" 36 | expr: true 37 | 38 | cbounds: 39 | value: "[1 ni 1 nj;]'" 40 | expr: true 41 | 42 | # boundary conditions 43 | bcs: 44 | - north_bounce_back! 45 | - south_bounce_back! 46 | - periodic_east_to_west! 47 | 48 | callbacks: 49 | - print_step_callback(25) 50 | 51 | # clean-up, backup, write out 52 | finally: 53 | - > 54 | (sim::Sim, k::Int) -> begin 55 | us = analytical_poise_newton(mu, pgrad, nj); 56 | i = convert(Int, round(ni/2)); 57 | for j = 1:nj 58 | println("analyt == lbm ? $(us[j]) == $(sim.msm.u[1,i,j])"); 59 | @test_approx_eq_eps us[j] sim.msm.u[1,i,j] 5e-3 60 | end 61 | println("TEST PASSED"); 62 | end 63 | 64 | # test for conditions to end simulation 65 | test_for_term: is_steadystate_x 66 | -------------------------------------------------------------------------------- /test/archive/test_obstacle_stability.yaml: -------------------------------------------------------------------------------- 1 | version: 1.0.0 2 | 3 | # code to execute before parsing 4 | preamble: > 5 | @init_plot_env(); 6 | using Base.Test; 7 | const pgrad = -1.102e-3; 8 | const F = [-pgrad; 0.0]; 9 | const nsteps = 20000; 10 | const datadir = "data"; 11 | const ni = 256; 12 | const nj = 64; 13 | const mu = 1/6; 14 | const constit_rel_f = init_constit_srt_const(mu); 15 | const forcing_kf = init_sukop_Fk(F); 16 | 17 | # data 18 | datadir: { value: datadir, expr: true } 19 | 20 | # material properties 21 | # TODO: specify constitutive model type (general Newtonian, Newtonian, etc.) 22 | rho_0: { value: 1.0, expr: false } 23 | nu: { value: mu, expr: true } 24 | 25 | # lattice parameters 26 | dx: { value: 1.0, expr: false } 27 | dt: { value: 1.0, expr: false } 28 | ni: { value: ni, expr: true } 29 | nj: { value: nj, expr: true } 30 | 31 | # simulation parameters 32 | nsteps: { value: nsteps, expr: true } 33 | col_f: BGK_F(constit_rel_f, forcing_kf); 34 | 35 | # obstacles 36 | obstacles: 37 | - type: bounce_back 38 | coords: "[24; 32; 28; 36]" 39 | 40 | # boundary conditions 41 | bcs: 42 | - "@anon lat -> east_velocity!(lat, 0.05)" 43 | - "@anon lat -> west_velocity!(lat, 0.05)" 44 | - north_open! 45 | - south_open! 46 | 47 | callbacks: 48 | - print_step_callback(100) 49 | - plot_streamlines_callback(100, [(28, 36, 24/ni, 32/ni)]) 50 | 51 | # clean-up, backup, write out 52 | # clean-up, backup, write out 53 | finally: 54 | - > 55 | (sim::AbstractSim, k::Int) -> begin 56 | @assert(k == nsteps, "There was an error that ended the simulation early"); 57 | for u in sim.msm.u 58 | @assert(-100 < u < 100, "Velocity was numerically unstable"); 59 | end 60 | for ρ in sim.msm.rho 61 | @assert(-100 < ρ < 100, "ρ was numerically unstable"); 62 | end 63 | for f in sim.lat.f 64 | @assert(-100 < f < 100, "f was numerically unstable"); 65 | end 66 | print_with_color(:green, "TEST PASSED\n"); 67 | end 68 | -------------------------------------------------------------------------------- /test/archive/vtest_collide.jl: -------------------------------------------------------------------------------- 1 | println("Testing srt_col_f..."); 2 | 3 | require("collision.jl"); 4 | require("defaults.jl"); 5 | require("lattice.jl"); 6 | require("multiscale.jl"); 7 | require("simulate.jl"); 8 | 9 | lat = Lattice(1.0, 1.0, 10, 10, 9.0); 10 | msm = MultiscaleMap(0.1, lat); 11 | 12 | # initialize lattice 13 | for k=1:length(lat.w) 14 | lat.f[5,5,k] = 10.0 * lat.w[k]; 15 | end 16 | map_to_macro!(lat, msm); 17 | 18 | println("initial conditions"); 19 | println("rho=") 20 | println(msm.rho); 21 | println("u="); 22 | println(msm.u[:,:,1]); 23 | println("v="); 24 | println(msm.u[:,:,2]); 25 | 26 | temp_f = zeros(lat.f); 27 | 28 | for i=1:4 29 | stream!(lat, temp_f); 30 | srt_col_f!(lat, msm); 31 | map_to_macro!(lat, msm); 32 | println("step i=", i); 33 | println("rho=") 34 | println(msm.rho); 35 | println("u="); 36 | println(msm.u[:,:,1]); 37 | println("v="); 38 | println(msm.u[:,:,2]); 39 | end 40 | -------------------------------------------------------------------------------- /test/archive/vtest_lattice.jl: -------------------------------------------------------------------------------- 1 | const __vtl_root__ = dirname(@__FILE__); 2 | require(abspath(joinpath(__vtl_root__, "..", "inc", "lattice.jl"))); 3 | 4 | println(Lattice.c); 5 | println(Lattice.w); 6 | -------------------------------------------------------------------------------- /test/archive/vtest_step.jl: -------------------------------------------------------------------------------- 1 | require("boundary.jl"); 2 | require("collision.jl"); 3 | require("defaults.jl") 4 | require("lattice.jl"); 5 | require("lbxio.jl"); 6 | require("multiscale.jl"); 7 | require("simulate.jl"); 8 | 9 | # get default values from defaults.jl 10 | def = lbx_defaults(); 11 | 12 | lat = Lattice(1.0, 1.0, 20, 20); 13 | msm = MultiscaleMap(0.02, lat, 5.0); 14 | 15 | #! Zero y-component of velocity at outlet 16 | zero_v_at_outlet!(msm::MultiscaleMap, k::Int) = begin 17 | ni, nj = size(msm.u) 18 | for j=1:nj 19 | msm.u[ni,j,2] = 0.0; 20 | end 21 | end 22 | 23 | temp_f = copy(lat.f); 24 | 25 | for i=1:3 26 | srt_col_f!(lat, msm); 27 | println("f\n", lat.f); 28 | 29 | stream!(lat, temp_f); 30 | println(lat.f); 31 | 32 | for bc! in def["bcs"] 33 | bc!(lat); 34 | end 35 | println("f\n", lat.f); 36 | 37 | map_to_macro!(lat, msm); 38 | println("f\n", lat.f); 39 | println("rho\n", msm.rho); 40 | println("u\n", msm.u); 41 | end 42 | 43 | println("tau, ", msm.tau); 44 | omega = 1.0/(3.0*def["nu"]+0.5); 45 | println("omega, ", omega); 46 | println("1/omega, ", 1/omega); 47 | -------------------------------------------------------------------------------- /test/archive/vtest_stream.jl: -------------------------------------------------------------------------------- 1 | println("Testing streaming..."); 2 | 3 | require("collision.jl"); 4 | require("defaults.jl"); 5 | require("lattice.jl"); 6 | require("multiscale.jl"); 7 | require("simulate.jl"); 8 | 9 | lat = Lattice(1.0, 1.0, 10, 10); 10 | msm = MultiscaleMap(0.02, lat); 11 | 12 | for k=1:length(lat.w) 13 | lat.f[5,5,k] = 1.0; 14 | end 15 | 16 | map_to_macro!(lat, msm); 17 | println("initial conditions\n", msm.rho, "\n"); 18 | 19 | temp_f = zeros(lat.f); 20 | 21 | for i=1:3 22 | stream!(lat, temp_f); 23 | map_to_macro!(lat, msm); 24 | println("step i=", i); 25 | println(msm.rho, "\n"); 26 | end 27 | -------------------------------------------------------------------------------- /test/run_tests_parallel.jl: -------------------------------------------------------------------------------- 1 | @everywhere const main = begin; 2 | if isfile("lbxflow.jl") 3 | abspath("lbxflow.jl"); 4 | elseif isfile(joinpath("..", "lbxflow.jl")) 5 | abspath(joinpath("..", "lbxflow.jl")); 6 | else 7 | error("Cannot find lbxflow.jl. Please run script from test directory"); 8 | end 9 | end 10 | 11 | @everywhere const __run_tests_root__ = dirname(@__FILE__); 12 | 13 | const test_input_files = filter(s -> endswith(s, ".yaml"), readdir(__run_tests_root__)); 14 | 15 | function did_pass(file::AbstractString) 16 | full_path_to_input_file = joinpath(__run_tests_root__, test_input_file); 17 | println("Parsing and running input file: ", full_path_to_input_file); 18 | passed = true; 19 | try 20 | run(`julia --color=yes $main -vf $full_path_to_input_file`); 21 | catch e 22 | passed = false; 23 | end 24 | return passed; 25 | end 26 | 27 | println(test_input_files); 28 | 29 | test_results = pmap(did_pass, test_input_files); 30 | println("Test results"); 31 | println("============"); 32 | for (test, result) in zip(test_input_files, test_results) 33 | @printf("%60s: ", test); 34 | if result 35 | print_with_color(:green, "Passed."); 36 | else 37 | print_with_color(:red, "FAILED."); 38 | end 39 | print("\n"); 40 | end 41 | -------------------------------------------------------------------------------- /test/run_tests_serial.jl: -------------------------------------------------------------------------------- 1 | if isfile("lbxflow.jl") 2 | const main = abspath("lbxflow.jl"); 3 | elseif isfile(joinpath("..", "lbxflow.jl")) 4 | const main = abspath(joinpath("..", "lbxflow.jl")); 5 | else 6 | error("Cannot find lbxflow.jl. Please run script from test directory"); 7 | end 8 | 9 | const __run_tests_root__ = dirname(@__FILE__); 10 | 11 | const test_input_files = filter(s -> endswith(s, ".yaml"), readdir(__run_tests_root__)); 12 | test_results = fill(true, length(test_input_files)); 13 | for (i, test_input_file) in enumerate(test_input_files) 14 | full_path_to_input_file = joinpath(__run_tests_root__, test_input_file); 15 | try 16 | run(`julia --color=yes $main -vf $full_path_to_input_file`); 17 | catch e 18 | test_results[i] = false; 19 | end 20 | end 21 | 22 | println("Test results"); 23 | println("============"); 24 | for (test, result) in zip(test_input_files, test_results) 25 | @printf("%60s: ", test); 26 | if result 27 | print_with_color(:green, "Passed."); 28 | else 29 | print_with_color(:red, "FAILED."); 30 | end 31 | print("\n"); 32 | end 33 | -------------------------------------------------------------------------------- /test/test_multiscale.jl: -------------------------------------------------------------------------------- 1 | using Base.Test 2 | include(joinpath("..", "inc","multiscale.jl")); 3 | 4 | println("Testing @nu and @omega macros..."); 5 | for i=1:100000 6 | lat1 = LatticeD2Q9(1.0, 1.0, 10, 10); 7 | lat2 = LatticeD2Q4(1.0, 1.0, 10, 10); 8 | rand_cssq = rand(0.1:0.1:0.8); 9 | rand_dt = rand(0.1:0.1:2.0); 10 | 11 | omega = rand(1.0e-3:1.0e-3:2.0); 12 | 13 | nu = @nu(omega, lat1.cssq, lat1.dt); 14 | @test_approx_eq omega @omega(nu, lat1.cssq, lat1.dt) 15 | 16 | nu = @nu(omega, lat2.cssq, lat2.dt); 17 | @test_approx_eq omega @omega(nu, lat2.cssq, lat2.dt) 18 | 19 | nu = @nu(omega, rand_cssq, rand_dt); 20 | @test_approx_eq omega @omega(nu, rand_cssq, rand_dt) 21 | 22 | nu = rand(1.0e-3:1.0e-3:10.0); 23 | 24 | omega = @omega(nu, lat1.cssq, lat1.dt); 25 | @test_approx_eq nu @nu(omega, lat1.cssq, lat1.dt) 26 | 27 | omega = @omega(nu, lat2.cssq, lat2.dt); 28 | @test_approx_eq nu @nu(omega, lat2.cssq, lat2.dt) 29 | 30 | omega = @omega(nu, rand_cssq, rand_dt); 31 | @test_approx_eq nu @nu(omega, rand_cssq, rand_dt) 32 | 33 | for j=1:rand(1:1000) 34 | nu = @nu(omega, rand_cssq, rand_dt); 35 | omega = @omega(nu, rand_cssq, rand_dt); 36 | end 37 | @test_approx_eq nu @nu(omega, rand_cssq, rand_dt) 38 | @test_approx_eq omega @omega(nu, rand_cssq, rand_dt) 39 | end 40 | println("Tests passed."); 41 | -------------------------------------------------------------------------------- /test/test_tracking.jl: -------------------------------------------------------------------------------- 1 | using Base.Test 2 | include(joinpath("..", "inc", "sim", "tracking.jl")); 3 | include(joinpath("..", "inc", "sim", "simtypes.jl")); 4 | 5 | const abounds = [1 1 1 1;]' 6 | const bbounds = [1 10 2 10; 7 | 2 10 3 10]'; 8 | const cbounds = [-12 3 5 55; 9 | -10 4 11 34; 10 | -4 9 9 36;]' 11 | 12 | println("Testing `inbounds`"); 13 | 14 | @test inbounds(1, 1, abounds) == true 15 | @test inbounds(1, 2, abounds) == false 16 | @test inbounds(2, 1, abounds) == false 17 | @test inbounds(-1, 1, abounds) == false 18 | @test inbounds(1, -1, abounds) == false 19 | @test inbounds(3, 4, bbounds) == true 20 | @test inbounds(2, 10, bbounds) == true 21 | @test inbounds(5, 8, bbounds) == true 22 | @test inbounds(8, 5, bbounds) == true 23 | @test inbounds(2, 3, bbounds) == true 24 | @test inbounds(10, 10, bbounds) == true 25 | @test inbounds(11, 10, bbounds) == false 26 | @test inbounds(10, 11, bbounds) == false 27 | @test inbounds(21, 10, bbounds) == false 28 | @test inbounds(-1, 10, bbounds) == false 29 | @test inbounds(1, -10, bbounds) == false 30 | @test inbounds(-3, 11, cbounds) == true 31 | @test inbounds(-4, 34, cbounds) == true 32 | @test inbounds(-10, 12, cbounds) == false 33 | @test inbounds(-1, 12, cbounds) == true 34 | @test inbounds(3, 15, cbounds) == true 35 | @test inbounds(-2, 5, cbounds) == false 36 | @test inbounds(-100, 400, cbounds) == false 37 | @test inbounds(0, 12, cbounds) == true 38 | @test inbounds(0, 0, cbounds) == false 39 | 40 | println("Tests passed."); 41 | 42 | #= 43 | println("Testing `masstransfer!`"); 44 | lat = D2Q9Lattice( 45 | =# 46 | --------------------------------------------------------------------------------