├── .gitignore ├── CMakeLists.txt ├── Docs ├── Notes.io_implementation ├── Readme.backtrace ├── Readme.io ├── Readme.profiling ├── Readme.sidecars └── UsersGuide │ ├── C_AdvancedTopics │ └── C_AdvancedTopics.tex │ ├── F_AdvancedTopics │ ├── F_AdvancedTopics.tex │ ├── bc_example1.eps │ ├── bc_example1.fig │ ├── bc_example2.eps │ ├── bc_example2.fig │ ├── bc_example3.eps │ ├── bc_example3.fig │ └── subcycling_algorithm.eps │ ├── GNUmakefile │ ├── GettingStarted │ ├── GettingStarted.tex │ ├── VisIt_2D.eps │ ├── VisIt_3D.eps │ ├── edison.run │ └── edison_omp.run │ ├── Introduction │ ├── AMR.eps │ ├── Introduction.tex │ ├── boxlib_directory_bw2.eps │ ├── castro_scaling.eps │ ├── data_loc.odg │ ├── data_loc2.eps │ ├── index_grid.odg │ ├── index_grid2.eps │ ├── lmc_scaling.eps │ ├── maestro_scaling.eps │ ├── varden1.eps │ ├── varden2.eps │ ├── varden3.eps │ └── varden4.eps │ ├── LinearSolvers │ └── LinearSolvers.tex │ ├── Preface │ └── Preface.tex │ ├── README │ ├── Regression │ ├── test_suite.tex │ └── testsuite.eps │ └── UsersGuide.tex ├── MiniApps ├── AMR_Adv_Diff_F90 │ ├── GNUmakefile │ ├── GPackage.mak │ ├── advance.f90 │ ├── compute_flux.f90 │ ├── init_phi.f90 │ ├── inputs_2d │ ├── inputs_3d │ ├── main.f90 │ ├── prob.f90 │ ├── update_phi.f90 │ └── write_plotfile.f90 ├── FillBoundary │ ├── GNUmakefile │ ├── MultiFabFillBoundaryTest.cpp │ ├── README │ └── qsub.ipm.bat ├── MultiGrid_C │ ├── COEF_3D.F │ ├── COEF_F.H │ ├── GNUmakefile │ ├── Make.package │ ├── README │ ├── RHS_3D.F │ ├── RHS_F.H │ ├── main.cpp │ └── qsub.ipm.bat ├── PGAS_SMC │ ├── GNUmakefile │ ├── LiDryer.c │ ├── Make.package │ ├── SMC.H │ ├── SMC.cpp │ ├── SMC_F.H │ ├── SMC_advance.cpp │ ├── SMC_init.cpp │ ├── SMC_io.cpp │ ├── chemistry_module.f90 │ ├── derivative_stencil.f90 │ ├── init_data.f90 │ ├── kernels.f90 │ ├── main.cpp │ ├── make_plot.f90 │ ├── transport_properties.f90 │ └── variables.f90 └── SMC │ ├── GNUmakefile │ ├── GPackage.mak │ ├── LiDryer.c │ ├── _parameters │ ├── advance.f90 │ ├── chemistry_module.f90 │ ├── derivative_stencil.f90 │ ├── init_data.f90 │ ├── initialize.f90 │ ├── inputs_SMC │ ├── kernels.f90 │ ├── main.f90 │ ├── make_plotfile.f90 │ ├── probin.template │ ├── smc.f90 │ ├── smcdata.f90 │ ├── time.f90 │ ├── transport_properties.f90 │ └── variables.f90 ├── README.txt ├── ReleaseNotes ├── release-notes-16.04 ├── release-notes-16.05 ├── release-notes-16.06 ├── release-notes-16.07 ├── release-notes-16.08 ├── release-notes-16.09 ├── release-notes-16.10 ├── release-notes-16.11 ├── release-notes-16.12 └── release-notes-16.12.1 ├── Src ├── CMakeLists.txt ├── C_AMRLib │ ├── ARRAYLIM_1D.F │ ├── ARRAYLIM_2D.F │ ├── ARRAYLIM_3D.F │ ├── Amr.H │ ├── Amr.cpp │ ├── AmrLevel.H │ ├── AmrLevel.cpp │ ├── AuxBoundaryData.H │ ├── AuxBoundaryData.cpp │ ├── CMakeLists.txt │ ├── Derive.H │ ├── Derive.cpp │ ├── Extrapolater.H │ ├── Extrapolater.cpp │ ├── FLUSH_F.H │ ├── LevelBld.H │ ├── MAKESLICE_3D.F │ ├── MAKESLICE_F.H │ ├── MLSDCAmr.H │ ├── MLSDCAmr.cpp │ ├── MLSDCAmrEncap.cpp │ ├── Make.package │ ├── PROB_AMR_F.H │ ├── SLABSTAT_1D.F │ ├── SLABSTAT_2D.F │ ├── SLABSTAT_3D.F │ ├── SLABSTAT_F.H │ ├── SlabStat.H │ ├── SlabStat.cpp │ ├── StateData.H │ ├── StateData.cpp │ ├── StateDescriptor.H │ ├── StateDescriptor.cpp │ ├── StationData.H │ ├── StationData.cpp │ ├── extrapolater_1d.f90 │ ├── extrapolater_2d.f90 │ └── extrapolater_3d.f90 ├── C_AmrCoreLib │ ├── AmrCore.H │ ├── AmrCore.cpp │ ├── AmrParGDB.H │ ├── AmrParticles.H │ ├── CMakeLists.txt │ ├── Cluster.H │ ├── Cluster.cpp │ ├── ErrorList.H │ ├── ErrorList.cpp │ ├── FLUXREG_1D.F │ ├── FLUXREG_2D.F │ ├── FLUXREG_3D.F │ ├── FLUXREG_F.H │ ├── FillPatchUtil.H │ ├── FillPatchUtil.cpp │ ├── FluxRegister.H │ ├── FluxRegister.cpp │ ├── INTERP_1D.F │ ├── INTERP_2D.F │ ├── INTERP_3D.F │ ├── INTERP_F.H │ ├── Interpolater.H │ ├── Interpolater.cpp │ ├── Make.package │ ├── TagBox.H │ └── TagBox.cpp ├── C_BaseLib │ ├── Arena.H │ ├── Arena.cpp │ ├── Array.H │ ├── ArrayLim.H │ ├── BArena.H │ ├── BArena.cpp │ ├── BCRec.H │ ├── BCRec.cpp │ ├── BC_TYPES.H │ ├── BLBackTrace.H │ ├── BLBackTrace.cpp │ ├── BLBoxLib_F.f │ ├── BLFort.H │ ├── BLParmParse_F.f │ ├── BLPgas.H │ ├── BLPgas.cpp │ ├── BLProfiler.H │ ├── BLProfiler.cpp │ ├── BLProfiler_F.f │ ├── BLassert.H │ ├── BLutil_F.f │ ├── BaseFab.H │ ├── BaseFab.cpp │ ├── BaseFab_f.H │ ├── BaseFab_nd.f90 │ ├── Box.H │ ├── Box.cpp │ ├── BoxArray.H │ ├── BoxArray.cpp │ ├── BoxDomain.H │ ├── BoxDomain.cpp │ ├── BoxLib.H │ ├── BoxLib.cpp │ ├── BoxList.H │ ├── BoxList.cpp │ ├── CArena.H │ ├── CArena.cpp │ ├── CMakeLists.txt │ ├── CONSTANTS.H │ ├── COORDSYS_1D.F │ ├── COORDSYS_2D.F │ ├── COORDSYS_3D.F │ ├── COORDSYS_F.H │ ├── CoordSys.H │ ├── CoordSys.cpp │ ├── DistributionMapping.H │ ├── DistributionMapping.cpp │ ├── FArrayBox.H │ ├── FArrayBox.cpp │ ├── FILCC_1D.F │ ├── FILCC_2D.F │ ├── FILCC_3D.F │ ├── FPC.H │ ├── FPC.cpp │ ├── FabArray.H │ ├── FabArray.cpp │ ├── FabConv.H │ ├── FabConv.cpp │ ├── GNUmakefile │ ├── GPackage.mak │ ├── Geometry.H │ ├── Geometry.cpp │ ├── IArrayBox.H │ ├── IArrayBox.cpp │ ├── IndexType.H │ ├── IndexType.cpp │ ├── IntVect.H │ ├── IntVect.cpp │ ├── Lazy.H │ ├── Lazy.cpp │ ├── Looping.H │ ├── Make.package │ ├── MemPool.H │ ├── MemPool.cpp │ ├── MemProfiler.H │ ├── MemProfiler.cpp │ ├── MultiFab.H │ ├── MultiFab.cpp │ ├── MultiFabUtil.H │ ├── MultiFabUtil.cpp │ ├── MultiFabUtil_1d.f90 │ ├── MultiFabUtil_2d.f90 │ ├── MultiFabUtil_3d.f90 │ ├── MultiFabUtil_F.H │ ├── NFiles.H │ ├── NFiles.cpp │ ├── OpenSource.txt │ ├── Orientation.H │ ├── Orientation.cpp │ ├── PArray.H │ ├── PList.H │ ├── ParallelDescriptor.H │ ├── ParallelDescriptor.cpp │ ├── ParmParse.H │ ├── ParmParse.cpp │ ├── Periodicity.H │ ├── Periodicity.cpp │ ├── PhysBCFunct.H │ ├── PhysBCFunct.cpp │ ├── PlotFileUtil.H │ ├── PlotFileUtil.cpp │ ├── Pointers.H │ ├── REAL.H │ ├── RealBox.H │ ├── RealBox.cpp │ ├── SPACE.H │ ├── SPACE_F.H │ ├── TinyProfiler.H │ ├── TinyProfiler.cpp │ ├── Tuple.H │ ├── UseCount.H │ ├── UseCount.cpp │ ├── Utility.H │ ├── Utility.cpp │ ├── VisMF.H │ ├── VisMF.cpp │ ├── bc_types.fi │ ├── bl_flush.f │ ├── bl_fort_module.F90 │ ├── ccse-mpi.H │ ├── iMultiFab.H │ ├── iMultiFab.cpp │ ├── mempool_f.f90 │ ├── threadbox.f90 │ └── winstd.H ├── C_BoundaryLib │ ├── BndryData.H │ ├── BndryData.cpp │ ├── BndryRegister.H │ ├── BndryRegister.cpp │ ├── BoundCond.H │ ├── CMakeLists.txt │ ├── FabSet.H │ ├── FabSet.cpp │ ├── INTERPBNDRYDATA_1D.F │ ├── INTERPBNDRYDATA_2D.F │ ├── INTERPBNDRYDATA_3D.F │ ├── INTERPBNDRYDATA_F.H │ ├── InterpBndryData.H │ ├── InterpBndryData.cpp │ ├── LO_BCTYPES.H │ ├── LO_UTIL.F │ ├── MacBndry.H │ ├── MacBndry.cpp │ ├── Make.package │ ├── Mask.H │ ├── Mask.cpp │ ├── MultiMask.H │ ├── MultiMask.cpp │ └── OpenSource.txt ├── C_ParticleLib │ ├── CMakeLists.txt │ ├── Make.package │ ├── ParGDB.H │ ├── ParticleInit.H │ ├── Particles.H │ ├── Particles.cpp │ ├── Particles_1D.F │ ├── Particles_2D.F │ ├── Particles_3D.F │ ├── Particles_F.H │ ├── TracerParticles.H │ └── TracerParticles.cpp ├── Extern │ ├── amrdata │ │ ├── AmrData.H │ │ ├── AmrData.cpp │ │ ├── AmrvisConstants.H │ │ ├── CMakeLists.txt │ │ ├── DataServices.H │ │ ├── DataServices.cpp │ │ ├── FABUTIL_1D.F │ │ ├── FABUTIL_2D.F │ │ ├── FABUTIL_3D.F │ │ └── Make.package │ ├── gslib │ │ ├── CMakeLists.txt │ │ ├── acorni.f │ │ ├── backtr.f │ │ ├── beyond.f │ │ ├── blue.f │ │ ├── chknam.f │ │ ├── chktitle.f │ │ ├── cova3.f │ │ ├── dlocate.f │ │ ├── dpowint.f │ │ ├── dsortem.f │ │ ├── gauinv.f │ │ ├── gcum.f │ │ ├── getindx.f │ │ ├── getz.f │ │ ├── green.f │ │ ├── hexa.f │ │ ├── ksol.f │ │ ├── ktsol.f │ │ ├── locate.f │ │ ├── nscore.f │ │ ├── numtext.f │ │ ├── ordrel.f │ │ ├── picksupr.f │ │ ├── powint.f │ │ ├── psfill.f │ │ ├── psline.f │ │ ├── pstext.f │ │ ├── rand.f │ │ ├── red.f │ │ ├── resc.f │ │ ├── scal.f │ │ ├── setrot.f │ │ ├── setsupr.f │ │ ├── sortem.f │ │ ├── sqdist.f │ │ ├── srchsupr.f │ │ └── strlen.f │ └── hpgmg │ │ ├── BL_HPGMG.H │ │ ├── BL_HPGMG.cpp │ │ └── Make.package ├── F_BaseLib │ ├── BLProfiler_f90.f90 │ ├── CMakeLists.txt │ ├── FParallelMG.mak │ ├── GPackage.mak │ ├── MemProfiler_f.H │ ├── MemProfiler_f.cpp │ ├── MultiFab_C_F.H │ ├── MultiFab_C_F.cpp │ ├── backtrace_c.cpp │ ├── backtrace_f.f90 │ ├── bc.f90 │ ├── bc_functions.f90 │ ├── bl_IO.f90 │ ├── bl_constants.f90 │ ├── bl_error.f90 │ ├── bl_mem_stat.f90 │ ├── bl_parmparse.f90 │ ├── bl_prof.f90 │ ├── bl_prof_stubs.f90 │ ├── bl_random_c.H │ ├── bl_random_c.cpp │ ├── bl_random_f.f90 │ ├── bl_space.f90 │ ├── bl_stream.f90 │ ├── bl_string.f90 │ ├── bl_system.f90 │ ├── bl_timer.f90 │ ├── bl_types.f90 │ ├── bndry_reg.f90 │ ├── box_f.f90 │ ├── box_util.f90 │ ├── boxarray_f.f90 │ ├── boxlib_f.f90 │ ├── cc_restriction.f90 │ ├── cluster_f.f90 │ ├── create_umac_grown.f90 │ ├── cutcells.f90 │ ├── define_bc_tower.f90 │ ├── f2kcli.f90 │ ├── f2kcli_crayx1.f90 │ ├── f2kcli_nag.f90 │ ├── f2kcli_win32.f90 │ ├── f2kgetcl.c │ ├── fab.f90 │ ├── fabio.f90 │ ├── fabio_c.c │ ├── filler.f90 │ ├── fillpatch.f90 │ ├── fourth_order_interp_coeffs.f90 │ ├── interp.f90 │ ├── knapsack.f90 │ ├── layout.f90 │ ├── list_box.f90 │ ├── make_new_grids.f90 │ ├── memprof.f90 │ ├── ml_boxarray.f90 │ ├── ml_cc_restriction.f90 │ ├── ml_layout.f90 │ ├── ml_multifab.f90 │ ├── ml_nd_restriction.f90 │ ├── ml_restrict_fill.f90 │ ├── mt19937ar.f90 │ ├── multifab_c.f90 │ ├── multifab_f.f90 │ ├── multifab_fill_ghost_cells.f90 │ ├── multifab_physbc.f90 │ ├── multifab_physbc_edgevel.f90 │ ├── nodal_neumann_bcs.f90 │ ├── nodal_restriction.f90 │ ├── nodal_stencil_bc.f90 │ ├── omp.f90 │ ├── omp_stubs.f90 │ ├── parallel.f90 │ ├── parallel_stubs.f90 │ ├── particles_f.f90 │ ├── pingpong.f90 │ ├── plotfile.f90 │ ├── ppm_util.f90 │ ├── ppm_util_c.c │ ├── regrid.f90 │ ├── sort_box.f90 │ ├── sort_d.f90 │ ├── sort_i.f90 │ ├── system_util_c.c │ ├── tag_boxes.f90 │ ├── timer_c.c │ ├── unittests │ │ ├── GNUmakefile │ │ ├── gr0_3d.1level │ │ └── tests.f90 │ └── vector_i.f90 ├── F_Interfaces │ └── BaseLib │ │ ├── Make.package │ │ ├── bl_space_mod.F90 │ │ ├── box_mod.f90 │ │ ├── boxarray_fi.cpp │ │ ├── boxarray_mod.f90 │ │ ├── boxlib_mod.f90 │ │ ├── geometry_fi.cpp │ │ ├── geometry_mod.f90 │ │ ├── main.cpp │ │ ├── multifab_fi.cpp │ │ ├── multifab_mod.f90 │ │ ├── omp_mod.F90 │ │ ├── parallel_fi.cpp │ │ ├── parallel_mod.F90 │ │ ├── parmparse_fi.cpp │ │ ├── parmparse_mod.f90 │ │ └── string_mod.f90 ├── LinearSolvers │ ├── C_CellMG │ │ ├── ABecLaplacian.H │ │ ├── ABecLaplacian.cpp │ │ ├── ABec_1D.F │ │ ├── ABec_2D.F │ │ ├── ABec_3D.F │ │ ├── ABec_F.H │ │ ├── ABec_UTIL.F │ │ ├── CGSolver.H │ │ ├── CGSolver.cpp │ │ ├── CMakeLists.txt │ │ ├── LO_1D.F │ │ ├── LO_2D.F │ │ ├── LO_3D.F │ │ ├── LO_F.H │ │ ├── LP_1D.F │ │ ├── LP_2D.F │ │ ├── LP_3D.F │ │ ├── LP_F.H │ │ ├── Laplacian.H │ │ ├── Laplacian.cpp │ │ ├── LinOp.H │ │ ├── LinOp.cpp │ │ ├── MG_1D.F │ │ ├── MG_2D.F │ │ ├── MG_3D.F │ │ ├── MG_F.H │ │ ├── Make.package │ │ ├── MultiGrid.H │ │ ├── MultiGrid.cpp │ │ ├── OpenSource.txt │ │ └── lo_bctypes.fi │ ├── C_CellMG4 │ │ ├── ABec2.H │ │ ├── ABec2.cpp │ │ ├── ABec2_2D.F │ │ ├── ABec2_3D.F │ │ ├── ABec2_F.H │ │ ├── ABec4.H │ │ ├── ABec4.cpp │ │ ├── ABec4_2D.F │ │ ├── ABec4_3D.F │ │ ├── ABec4_F.H │ │ ├── CMakeLists.txt │ │ ├── Make.package │ │ └── OpenSource.txt │ ├── C_TensorMG │ │ ├── CMakeLists.txt │ │ ├── DV_2D.F │ │ ├── DV_2D.mF │ │ ├── DV_3D1.F │ │ ├── DV_3D1.mF │ │ ├── DV_3D2.F │ │ ├── DV_3D2.mF │ │ ├── DV_3D3.F │ │ ├── DV_3D3.mF │ │ ├── DV_3D4.mF │ │ ├── DivVis.H │ │ ├── DivVis.cpp │ │ ├── DivVis_F.H │ │ ├── Format.m │ │ ├── MCCGSolver.H │ │ ├── MCCGSolver.cpp │ │ ├── MCINTERPBNDRYDATA_2D.F │ │ ├── MCINTERPBNDRYDATA_3D.F │ │ ├── MCINTERPBNDRYDATA_F.H │ │ ├── MCInterpBndryData.H │ │ ├── MCInterpBndryData.cpp │ │ ├── MCLO_2D.F │ │ ├── MCLO_3D.F │ │ ├── MCLO_F.H │ │ ├── MCLinOp.H │ │ ├── MCLinOp.cpp │ │ ├── MCMultiGrid.H │ │ ├── MCMultiGrid.cpp │ │ ├── Make.package │ │ ├── OpenSource.txt │ │ ├── Optimize.m │ │ ├── visc2d.m │ │ ├── visc2d.ma │ │ ├── visc2d.nb │ │ ├── visc3d.m │ │ ├── visc3d.ma │ │ └── visc3d.nb │ ├── C_to_F_MG │ │ ├── CMakeLists.txt │ │ ├── FMultiGrid.H │ │ ├── FMultiGrid.cpp │ │ ├── MGT_Solver.H │ │ ├── MGT_Solver.cpp │ │ ├── Make.package │ │ └── stencil_types.H │ └── F_MG │ │ ├── CMakeLists.txt │ │ ├── FParallelMG.mak │ │ ├── GPackage.mak │ │ ├── cc_applyop.f90 │ │ ├── cc_interface_stencil.f90 │ │ ├── cc_mg_cpp.f90 │ │ ├── cc_mg_tower_smoother.f90 │ │ ├── cc_ml_resid.f90 │ │ ├── cc_smoothers.f90 │ │ ├── cc_stencil.f90 │ │ ├── cc_stencil_apply.f90 │ │ ├── cc_stencil_fill.f90 │ │ ├── coarsen_coeffs.f90 │ │ ├── compute_defect.f90 │ │ ├── itsol.f90 │ │ ├── mg.f90 │ │ ├── mg_cpp_f.h │ │ ├── mg_prolongation.f90 │ │ ├── mg_tower.f90 │ │ ├── ml_cc.f90 │ │ ├── ml_nd.f90 │ │ ├── ml_norm.f90 │ │ ├── ml_prolongation.f90 │ │ ├── ml_solve.f90 │ │ ├── nodal_applyop.f90 │ │ ├── nodal_divu.f90 │ │ ├── nodal_enforce_dirichlet_rhs.f90 │ │ ├── nodal_interface_stencil.f90 │ │ ├── nodal_mask.f90 │ │ ├── nodal_mg_cpp.f90 │ │ ├── nodal_mg_tower_smoother.f90 │ │ ├── nodal_newu.f90 │ │ ├── nodal_smoothers.f90 │ │ ├── nodal_stencil.f90 │ │ ├── nodal_stencil_apply.f90 │ │ ├── nodal_stencil_fill.f90 │ │ ├── nodal_sum.f90 │ │ ├── nodal_sync_resid.f90 │ │ ├── sparse_solve.f90 │ │ ├── stencil_types.f90 │ │ ├── stencil_util.f90 │ │ └── tridiag.f90 └── Python │ ├── .gitignore │ ├── F90 │ ├── Makefile │ ├── README │ ├── fboxlib │ │ ├── __init__.py │ │ ├── boxarray.py │ │ ├── fab.py │ │ ├── layout.py │ │ ├── multifab.py │ │ └── regrid.py │ ├── setup.py │ ├── src │ │ ├── blobjects.f90 │ │ ├── blobjects.py │ │ ├── boxlib_numpy_c.c │ │ ├── boxlib_numpy_f.f90 │ │ ├── fboxlib.f90 │ │ ├── fboxlib_c.c │ │ ├── make_new_grids.f90 │ │ ├── regrid.f90 │ │ └── tag_boxes.f90 │ └── tests │ │ └── regrid.py │ ├── GMakerules.mak │ ├── GNUmakefile │ ├── GNUmakefile_CXX.mak │ ├── GPackage.mak │ ├── README │ ├── boxlib │ ├── __init__.py │ ├── bl1.py │ ├── bl2.py │ └── bl3.py │ ├── contrib │ ├── chemSupport.H │ ├── chemSupport.cpp │ ├── support.H │ └── support.cpp │ ├── setup.py │ ├── src │ ├── boxlib_wrap_1.cpp │ ├── boxlib_wrap_2.cpp │ └── boxlib_wrap_3.cpp │ ├── swig │ ├── boxlib.i │ └── numpy.i │ └── tests │ └── test-multifab.py ├── Tests ├── BBIOBenchmark │ ├── BBIOTest.cpp │ ├── BBIOTestDriver.cpp │ ├── GNUmakefile │ └── README ├── C_BaseLib │ ├── AMRPROFTEST_F.H │ ├── AMRProfTestBL.cpp │ ├── BcastClasses │ │ ├── BcastClasses.cpp │ │ └── GNUmakefile │ ├── GNUmakefile │ ├── TPROFILER.F │ ├── TPROFILER_F.H │ ├── ba.15456 │ ├── ba.15784 │ ├── ba.213 │ ├── ba.23925 │ ├── ba.25600 │ ├── ba.3865 │ ├── ba.5034 │ ├── ba.60 │ ├── ba.95860 │ ├── ba.mac.294 │ ├── fillfab.f │ ├── mt19937int.out │ ├── t8BIT.cpp │ ├── tBA.cpp │ ├── tCArena.cpp │ ├── tDM.cpp │ ├── tDir.cpp │ ├── tFAC.cpp │ ├── tFB.cpp │ ├── tFillFab.cpp │ ├── tMF.cpp │ ├── tMFcopy.cpp │ ├── tParmParse.cpp │ ├── tProfiler.cpp │ ├── tRABcast.cpp │ ├── tRan.cpp │ ├── tVisMF.cpp │ ├── tVisMF2.cpp │ └── tread.cpp ├── F_BaseLib │ ├── GNUmakefile │ ├── ball_def.14656 │ ├── conn_defs │ ├── def_knapsack.out │ ├── fornberg_weights.f90 │ ├── inputs.domain │ ├── main.f90 │ ├── makefile │ ├── mt19937ar.f90 │ ├── t_bl_prof.f90 │ ├── t_bx.f90 │ ├── t_bxasc.f90 │ ├── t_cls.f90 │ ├── t_knapsack.f90 │ ├── t_main.f90 │ └── t_particles.f90 ├── FillBoundaryComparison │ ├── GNUmakefile │ ├── Make.package │ ├── ba.max │ └── main.cpp ├── IOBenchmark │ ├── GNUmakefile │ ├── IOTest.cpp │ ├── IOTestDriver.cpp │ ├── README │ ├── inputs │ ├── inputs.dss │ ├── inputs.dssmf │ └── inputs.nft ├── LinearSolvers │ ├── C_CellMG │ │ ├── COEF_2D.F │ │ ├── COEF_3D.F │ │ ├── COEF_F.H │ │ ├── GNUmakefile │ │ ├── GNUmakefile.dumpi │ │ ├── MACOPERATOR_2D.F │ │ ├── MACOPERATOR_3D.F │ │ ├── MACOPERATOR_F.H │ │ ├── MACPROJ_2D.F │ │ ├── MACPROJ_3D.F │ │ ├── MacOpMacDrivers.H │ │ ├── MacOperator.H │ │ ├── MacOperator.cpp │ │ ├── Make.package │ │ ├── Palette │ │ ├── amrvis.defaults │ │ ├── dumpi │ │ │ ├── NOTE │ │ │ ├── inputs.3d.4096core │ │ │ ├── inputs.3d.512core │ │ │ ├── inputs.3d.64core │ │ │ └── inputs.3d.8core │ │ ├── grids │ │ │ ├── gr.2_19boxes │ │ │ ├── gr.2_256squared │ │ │ ├── gr.2_2x2_a │ │ │ ├── gr.2_2x2_b │ │ │ ├── gr.2_2x2_c │ │ │ ├── gr.2_3boxes_a │ │ │ ├── gr.2_3boxes_b │ │ │ ├── gr.2_3boxes_c │ │ │ ├── gr.2_3x2 │ │ │ ├── gr.2_big │ │ │ ├── gr.2_disjoint_a │ │ │ ├── gr.2_disjoint_b │ │ │ ├── gr.2_disjoint_c │ │ │ ├── gr.2_disjoint_d │ │ │ ├── gr.2_disjoint_e │ │ │ ├── gr.2_small_a │ │ │ ├── gr.2_small_b │ │ │ ├── gr.2_stack_a │ │ │ ├── gr.2_stack_b │ │ │ ├── gr.2_stack_c │ │ │ ├── gr.2_stack_d │ │ │ ├── gr.3_128cubed │ │ │ ├── gr.3_256cubed │ │ │ ├── gr.3_2boxes_a │ │ │ ├── gr.3_2x3x4 │ │ │ ├── gr.3_512cubed │ │ │ ├── gr.3_big │ │ │ ├── gr.3_disjoint_a │ │ │ ├── gr.3_disjoint_b │ │ │ ├── gr.3_disjoint_c │ │ │ ├── gr.3_mac_tst │ │ │ ├── gr.3_shiftedUp │ │ │ ├── gr.3_small_a │ │ │ ├── gr.3_stack_a │ │ │ ├── grids.15456 │ │ │ ├── grids.213 │ │ │ ├── grids.25600 │ │ │ ├── grids.5034 │ │ │ ├── in.2_19boxes │ │ │ ├── in.2_256squared │ │ │ ├── in.2_2x2_a │ │ │ ├── in.2_2x2_b │ │ │ ├── in.2_2x2_c │ │ │ ├── in.2_3boxes_a │ │ │ ├── in.2_3boxes_b │ │ │ ├── in.2_3boxes_c │ │ │ ├── in.2_3x2 │ │ │ ├── in.2_big │ │ │ ├── in.2_disjoint_a │ │ │ ├── in.2_disjoint_b │ │ │ ├── in.2_disjoint_c │ │ │ ├── in.2_disjoint_d │ │ │ ├── in.2_disjoint_e │ │ │ ├── in.2_small_a │ │ │ ├── in.2_small_b │ │ │ ├── in.2_stack_a │ │ │ ├── in.2_stack_b │ │ │ ├── in.2_stack_c │ │ │ ├── in.2_stack_d │ │ │ ├── in.2per_2x2_c │ │ │ ├── in.3_128cubed │ │ │ ├── in.3_256cubed │ │ │ ├── in.3_2boxes_a │ │ │ ├── in.3_2x3x4 │ │ │ ├── in.3_512cubed │ │ │ ├── in.3_big │ │ │ ├── in.3_disjoint_a │ │ │ ├── in.3_disjoint_b │ │ │ ├── in.3_disjoint_c │ │ │ ├── in.3_mac_tst │ │ │ ├── in.3_shiftedUp │ │ │ ├── in.3_small_a │ │ │ ├── in.3_stack_a │ │ │ ├── in.3per_2x3x4 │ │ │ ├── in.grids.15456 │ │ │ ├── in.grids.213 │ │ │ ├── in.grids.25600 │ │ │ └── in.grids.5034 │ │ ├── inputs.2d │ │ ├── inputs.3d │ │ ├── macprojTest.cpp │ │ ├── main.cpp │ │ └── vpramps.dat │ ├── C_TensorMG │ │ ├── GNUmakefile │ │ ├── Make.package │ │ ├── Palette │ │ ├── TestMCViscBndry.H │ │ ├── TestMCViscBndry.cpp │ │ ├── amrvis.defaults │ │ ├── grids │ │ │ ├── gr.3_2x3x4 │ │ │ ├── gr16.dog │ │ │ ├── gr16x8.dog │ │ │ ├── gr2D │ │ │ ├── gr32.dog │ │ │ ├── gr32x8.dog │ │ │ ├── gr64.dog │ │ │ └── gr8.dog │ │ ├── inputs │ │ ├── inputs2D │ │ ├── inputs3D │ │ ├── inputs8 │ │ ├── main_2D.F │ │ ├── main_3D.F │ │ ├── main_F.H │ │ ├── probin │ │ ├── testVI.cpp │ │ └── vpramps.dat │ ├── ComparisonTest │ │ ├── COEF_1D.F │ │ ├── COEF_3D.F │ │ ├── COEF_F.H │ │ ├── COMP_NORM_1d.f90 │ │ ├── COMP_NORM_3d.f90 │ │ ├── COMP_NORM_F.H │ │ ├── GNUmakefile │ │ ├── HypreABecLap │ │ │ ├── HypreABecLap.H │ │ │ ├── HypreABecLap.cpp │ │ │ ├── HypreABec_3D.F │ │ │ ├── HypreABec_F.H │ │ │ └── Make.package │ │ ├── Make.package │ │ ├── compute_norm.cpp │ │ ├── inputs-rt-Dir-ord2 │ │ ├── inputs-rt-Dir-ord3 │ │ ├── inputs-rt-Neu │ │ ├── inputs.3d │ │ ├── main.cpp │ │ ├── solve_with_F90.cpp │ │ ├── solve_with_hypre.cpp │ │ ├── writePlotFile.H │ │ └── writePlotFile.cpp │ ├── F_MG │ │ ├── GNUmakefile │ │ ├── bc_interp.f90 │ │ ├── cc_edge_coeffs.f90 │ │ ├── cc_multi.f90 │ │ ├── cc_rhs.f90 │ │ ├── grids_2d_1lev │ │ ├── grids_2d_2lev │ │ ├── grids_3d_1lev │ │ ├── grids_3d_2lev │ │ ├── init_cell_coeffs.f90 │ │ ├── inputs.2d.fcycle │ │ ├── inputs.2d.fcycle.dir │ │ ├── inputs.2d.nodal.cross │ │ ├── inputs.2d.nodal.dense │ │ ├── inputs.2d.vcycle │ │ ├── inputs.2d.vcycle.dir │ │ ├── inputs.3d.fcycle │ │ ├── inputs.3d.fcycle.dir │ │ ├── inputs.3d.nodal.cross │ │ ├── inputs.3d.nodal.dense │ │ ├── inputs.3d.vcycle │ │ ├── inputs.3d.vcycle.dir │ │ ├── main.f90 │ │ ├── makefile │ │ ├── nodal_multi.f90 │ │ ├── nodal_rhs.f90 │ │ ├── regression │ │ ├── t_smoother.f90 │ │ ├── t_stencil.f90 │ │ └── wrapper.f90 │ └── F_MG_Old_Nodal_Stencil │ │ ├── GNUmakefile │ │ ├── bc_interp.f90 │ │ ├── cc_edge_coeffs.f90 │ │ ├── cc_multi.f90 │ │ ├── cc_rhs.f90 │ │ ├── compute_defect.f90 │ │ ├── grids_2d_1lev │ │ ├── grids_2d_2lev │ │ ├── grids_3d_1lev │ │ ├── grids_3d_2lev │ │ ├── init_cell_coeffs.f90 │ │ ├── inputs.2d.nodal.cross │ │ ├── inputs.2d.nodal.dense │ │ ├── inputs.3d.nodal.cross │ │ ├── inputs.3d.nodal.dense │ │ ├── itsol.f90 │ │ ├── main.f90 │ │ ├── makefile │ │ ├── mg.f90 │ │ ├── ml_nd.f90 │ │ ├── ml_solve.f90 │ │ ├── nodal_interface_stencil.f90 │ │ ├── nodal_mg_cpp.f90 │ │ ├── nodal_mg_tower_smoother.f90 │ │ ├── nodal_multi.f90 │ │ ├── nodal_rhs.f90 │ │ ├── nodal_smoothers.f90 │ │ ├── nodal_stencil.f90 │ │ ├── nodal_stencil_apply.f90 │ │ ├── nodal_stencil_fill.f90 │ │ ├── nodal_sync_resid.f90 │ │ ├── regression │ │ ├── t_smoother.f90 │ │ ├── t_stencil.f90 │ │ └── wrapper.f90 ├── MKDir │ ├── GNUmakefile │ └── MKDir.cpp └── StencilOrder │ ├── README │ └── program.f90 ├── Tools ├── CMake │ ├── BoxLib_Version.cmake │ ├── CCSEConfig-install.cmake.in │ ├── CCSEConfigReport.cmake │ ├── CCSEConfigVersion-install.cmake.in │ ├── CCSELinkLine.cmake │ ├── CCSEOptions.cmake │ ├── CMakeParseArguments.cmake │ ├── ExampleBoxLibConfig.cmake │ ├── ExampleCMakeLists.txt_CCSEApp │ ├── FindCCSE.cmake │ ├── InstallManager.cmake │ ├── MakefileConfig.export.in │ ├── ParseLibraryList.cmake │ ├── PreprocessBoxLibFortran.cmake │ ├── PreprocessBoxLibFortran90.cmake │ ├── TestManager.cmake │ └── TransformVersion.cmake ├── C_mk │ ├── Make.defs │ ├── Make.local.template │ ├── Make.machines │ ├── Make.rules │ ├── Make.upcxx │ ├── README.md │ ├── comps │ │ ├── cray.mak │ │ ├── gnu.mak │ │ ├── intel.mak │ │ └── pgi.mak │ ├── packages │ │ └── Make.hpgmg │ ├── sites │ │ ├── Make.ccse │ │ ├── Make.nersc │ │ ├── Make.olcf │ │ └── Make.unknown │ └── tools │ │ └── Make.vtune ├── C_scripts │ ├── boxlib-build.sh │ ├── buildInfo.H │ ├── compressor │ ├── gen_release_tarball │ ├── make_build_info_cpp │ ├── makebuildinfo_C.py │ ├── mkdep │ └── strip72 ├── C_util │ ├── AmrDeriveTecplot │ │ ├── AmrDeriveTecplot.cpp │ │ └── GNUmakefile │ ├── Convergence │ │ ├── AVGDOWN_2D.F │ │ ├── AVGDOWN_3D.F │ │ ├── AVGDOWN_F.H │ │ ├── Add.cpp │ │ ├── ComputeAmrDataNorms.H │ │ ├── ComputeAmrDataNorms.cpp │ │ ├── DiffFab.cpp │ │ ├── DiffSameDomainRefined.cpp │ │ ├── DiffSameDomainRefinedFD.cpp │ │ ├── DiffSameDomainRefinedStag.cpp │ │ ├── DiffSameGrid.cpp │ │ ├── DiffSameGrid2.cpp │ │ ├── DiffSameGridRefined.cpp │ │ ├── DiffUniform.cpp │ │ ├── GNUmakefile │ │ ├── GNUmakefile.temp │ │ ├── Make.package │ │ ├── Make.package.SAVE │ │ ├── Make.package.temp │ │ ├── PltFileNorm.cpp │ │ ├── PltFileNormB.cpp │ │ └── PltFileScalConvRate.cpp │ ├── Make.package │ ├── README │ ├── Statistics │ │ ├── AVGDOWN_2D.F │ │ ├── AVGDOWN_3D.F │ │ ├── AVGDOWN_F.H │ │ ├── ComputeAmrDataStat.H │ │ ├── ComputeAmrDataStat.cpp │ │ ├── GNUmakefile │ │ ├── Make.package │ │ ├── PltFileFluxAve.H │ │ ├── PltFileFluxAve.cpp │ │ ├── PltFileList.cpp │ │ ├── PltFileStat.cpp │ │ ├── PltFileXAve.H │ │ └── PltFileXAve.cpp │ ├── TV_TempWrite.H │ ├── ViewMF │ │ ├── GNUmakefile │ │ ├── MFNorm.H │ │ ├── MFNorm.cpp │ │ ├── Make.package │ │ ├── checkMFghostcells.cpp │ │ ├── main.cpp │ │ ├── mfMinMax.cpp │ │ ├── viewMF.cpp │ │ ├── viewMFcol.cpp │ │ ├── viewMFdiff.cpp │ │ └── viewMFdiffHardWire.cpp │ ├── WritePlotFile.H │ ├── WritePlotFile.cpp │ └── dbgTools │ │ ├── GNUmakefile │ │ ├── Make.package │ │ ├── crsGrids.cpp │ │ └── intersectGrids.cpp ├── F_mk │ ├── GMakeMPI.mak │ ├── GMakedefs.mak │ ├── GMakerules.mak │ ├── Readme │ └── comps │ │ ├── Darwin_ibm.mak │ │ ├── Darwin_intel.mak │ │ ├── Linux_cray.mak │ │ ├── Linux_intel.mak │ │ ├── Linux_lahey.mak │ │ ├── Linux_nag.mak │ │ ├── Linux_pathscale.mak │ │ ├── Linux_pgi.mak │ │ ├── Linux_sunstudio.mak │ │ ├── aix.mak │ │ ├── bgq.mak │ │ ├── g95.mak │ │ ├── gfortran.mak │ │ └── xlf.mak ├── F_scripts │ ├── README.md │ ├── dep.py │ ├── extract.parallel │ ├── f90doc │ │ ├── README │ │ ├── expr_parse.pl │ │ ├── expr_parse.y │ │ ├── f90doc │ │ ├── htmling.pl │ │ ├── stmts.pl │ │ ├── typing.pl │ │ └── utils.pl │ ├── fcheck.py │ ├── find_files_vpath.py │ ├── findparams.py │ ├── makebuildinfo.py │ ├── mkdep.pl │ └── write_probin.py ├── Postprocessing │ └── F_Src │ │ ├── CASTRO_radiation │ │ ├── GNUmakefile │ │ ├── fgaussianpulse.f90 │ │ ├── flgt_frnt1d.f90 │ │ ├── fradshock.f90 │ │ ├── fradsource.f90 │ │ ├── fradsphere.f90 │ │ └── frhdshocktube.f90 │ │ ├── GNUmakefile │ │ ├── MAESTRO_sub_chandra │ │ ├── GNUmakefile │ │ ├── fsubchandra.f90 │ │ └── fsubchandra_mod.f90 │ │ ├── MAESTRO_tests │ │ ├── GNUmakefile │ │ ├── fgaussianpulse.f90 │ │ ├── fmlcompare.f90 │ │ ├── fmlconverge.f90 │ │ └── fnorm.f90 │ │ ├── MAESTRO_wdconvect │ │ ├── GNUmakefile │ │ ├── feint.f90 │ │ ├── fthermo.f90 │ │ ├── fthermo_driver.py │ │ └── fwdconvect.f90 │ │ ├── MAESTRO_xrb │ │ ├── GNUmakefile │ │ ├── fad_excess.f90 │ │ ├── fbuoyancy.f90 │ │ ├── fconv_slopes.f90 │ │ ├── frates.f90 │ │ ├── fspec_total_mass.f90 │ │ └── fspeciesmass.f90 │ │ ├── Palette │ │ ├── TODO_GHOST │ │ ├── faverage.f90 │ │ ├── fboxinfo.f90 │ │ ├── fcoarsen.f90 │ │ ├── fcompare.f90 │ │ ├── fdump.f90 │ │ ├── fdumpdata2d.f90 │ │ ├── fextract.f90 │ │ ├── fextrema.f90 │ │ ├── ffdcompare.f90 │ │ ├── fintgvar2d.f90 │ │ ├── fnan.f90 │ │ ├── fsnapshot2d.f90 │ │ ├── fsnapshot3d.f90 │ │ ├── ftime.f90 │ │ ├── fvarnames.f90 │ │ ├── fwritecontents2d.f90 │ │ ├── old_flame │ │ ├── GNUmakefile │ │ ├── fbubble_position.f90 │ │ ├── fbubble_position_3d.f90 │ │ ├── fcusp.f90 │ │ ├── fcylflame.f90 │ │ ├── fflamelength.f90 │ │ ├── finteg.f90 │ │ ├── fturbkin.f90 │ │ └── fwidth.f90 │ │ ├── python │ │ ├── README │ │ ├── column_depth.py │ │ ├── conv_slopes.py │ │ ├── dumpparthistory.py │ │ ├── eos_data.txt │ │ ├── helmeos.py │ │ ├── parseparticles.py │ │ ├── test_helmeos.py │ │ ├── test_parseparticles.py │ │ ├── timestamp_00 │ │ └── timestamp_02 │ │ └── tutorial │ │ ├── GNUmakefile │ │ ├── fspeciesmass2d.f90 │ │ └── fwrite2d.f90 ├── Py_util │ ├── GNUmakefile │ ├── README │ ├── fsnapshot.f90 │ └── plotsinglevar.py ├── RegressionTesting │ ├── BoxLib-tests.ini │ ├── Castro-tests.ini │ ├── README │ ├── VARDEN-tests.ini │ ├── example-tests.ini │ ├── gen_compile_test.sh │ ├── params.py │ ├── radiation-tests.ini │ ├── reg_test_gc.py │ ├── regtest.py │ ├── repo.py │ ├── suite.py │ ├── test_report.py │ └── test_util.py └── Release │ ├── cleanWords.txt │ ├── ppCleanup.py │ ├── ppCleanupDir.py │ └── release.py ├── Tutorials ├── .gitignore ├── AMR_Adv_C │ ├── Exec │ │ ├── Make.Adv │ │ ├── SingleVortex │ │ │ ├── GNUmakefile │ │ │ ├── Make.package │ │ │ ├── Prob.f90 │ │ │ ├── face_velocity_2d.f90 │ │ │ ├── face_velocity_3d.f90 │ │ │ ├── inputs │ │ │ └── probin │ │ └── UniformVelocity │ │ │ ├── GNUmakefile │ │ │ ├── Make.package │ │ │ ├── Prob.f90 │ │ │ ├── face_velocity_2d.f90 │ │ │ ├── inputs │ │ │ ├── probdata.f90 │ │ │ └── probin │ ├── README │ └── Source │ │ ├── Adv.H │ │ ├── Adv.cpp │ │ ├── AdvBld.cpp │ │ ├── Adv_F.H │ │ ├── Adv_advance.cpp │ │ ├── Adv_dt.cpp │ │ ├── Adv_io.cpp │ │ ├── Adv_setup.cpp │ │ ├── Make.package │ │ ├── Src_2d │ │ ├── Adv_2d.f90 │ │ ├── Make.package │ │ ├── compute_flux_2d.f90 │ │ └── slope_2d.f90 │ │ ├── Src_3d │ │ ├── Adv_3d.f90 │ │ ├── Make.package │ │ ├── compute_flux_3d.f90 │ │ └── slope_3d.f90 │ │ ├── Src_nd │ │ ├── Adv_nd.f90 │ │ ├── Make.package │ │ ├── Tagging_nd.f90 │ │ └── tagging_params.f90 │ │ └── main.cpp ├── AMR_Adv_CF │ ├── Exec │ │ ├── Make.Adv │ │ └── SingleVortex │ │ │ ├── GNUmakefile │ │ │ ├── Make.package │ │ │ └── Prob.f90 │ ├── README │ └── Source │ │ ├── Make.package │ │ └── fmain.f90 ├── AMR_Adv_C_v2 │ ├── Exec │ │ ├── Make.Adv │ │ └── SingleVortex │ │ │ ├── GNUmakefile │ │ │ ├── Make.package │ │ │ ├── Prob.f90 │ │ │ ├── face_velocity_2d.f90 │ │ │ ├── face_velocity_3d.f90 │ │ │ └── inputs │ ├── README │ └── Source │ │ ├── AmrAdv.H │ │ ├── AmrAdv.cpp │ │ ├── AmrAdvBC.H │ │ ├── AmrAdvError.cpp │ │ ├── AmrAdvEvolve.cpp │ │ ├── AmrAdvIO.cpp │ │ ├── AmrAdvInit.cpp │ │ ├── AmrAdv_F.H │ │ ├── Make.package │ │ ├── Src_2d │ │ ├── Adv_2d.f90 │ │ ├── Make.package │ │ ├── compute_flux_2d.f90 │ │ └── slope_2d.f90 │ │ ├── Src_3d │ │ ├── Adv_3d.f90 │ │ ├── Make.package │ │ ├── compute_flux_3d.f90 │ │ └── slope_3d.f90 │ │ ├── Src_nd │ │ ├── Make.package │ │ └── Tagging_nd.f90 │ │ └── main.cpp ├── AMR_Adv_F │ ├── Exec │ │ ├── SingleVortex │ │ │ ├── GNUmakefile │ │ │ ├── GPackage.mak │ │ │ ├── init_phi.f90 │ │ │ ├── inputs_2d │ │ │ ├── inputs_3d │ │ │ └── set_velocity.f90 │ │ └── UniformVelocity │ │ │ ├── GNUmakefile │ │ │ ├── GPackage.mak │ │ │ ├── init_phi.f90 │ │ │ ├── inputs_2d │ │ │ ├── inputs_3d │ │ │ └── set_velocity.f90 │ └── Source │ │ ├── GPackage.mak │ │ ├── advance.f90 │ │ ├── compute_flux.f90 │ │ ├── main.f90 │ │ ├── slope.f90 │ │ ├── tag_boxes.f90 │ │ ├── update_phi.f90 │ │ └── write_plotfile.f90 ├── AMR_Trilinos_C │ ├── GNUmakefile │ ├── Make.package │ ├── README │ ├── Solver.H │ ├── Solver.cpp │ ├── SolverBoundary.cpp │ ├── driver.cpp │ ├── inputs │ ├── writePlotFile.H │ └── writePlotFile.cpp ├── Chemotaxis_F │ ├── GNUmakefile │ ├── GPackage.mak │ ├── README │ ├── advance.f90 │ ├── chemotaxis.f90 │ ├── dtypes.f90 │ ├── inputs.mwe │ ├── kernels.f90 │ ├── main.f90 │ ├── sdcquad.f90 │ └── write_plotfile.f90 ├── DataServicesTest0 │ ├── DataServicesTest0.cpp │ └── GNUmakefile ├── Exp_CNS_NoSpec_F │ ├── CNSEquations.tex │ ├── GNUmakefile │ ├── GPackage.mak │ ├── HyptermKernels │ │ ├── HyptermKernel_c_c │ │ │ ├── FakeWriteMultifab.c │ │ │ ├── FakeWriteMultifab.h │ │ │ ├── GNUmakefile │ │ │ ├── bench.c │ │ │ ├── timer.h │ │ │ └── timer.x86.c │ │ ├── HyptermKernel_cpp_F │ │ │ ├── GNUmakefile │ │ │ ├── HyptermOnly.cpp │ │ │ ├── HyptermOnly_F.F │ │ │ ├── HyptermOnly_F.H │ │ │ ├── Make.package │ │ │ └── timer_c.c │ │ ├── HyptermKernel_cpp_c │ │ │ ├── GNUmakefile │ │ │ ├── HyptermOnly.cpp │ │ │ └── Make.package │ │ ├── HyptermKernel_f90_f90 │ │ │ ├── GNUmakefile │ │ │ ├── README │ │ │ ├── advance.f90 │ │ │ └── main.f90 │ │ └── README │ ├── README │ ├── advance.f90 │ ├── init_data.f90 │ ├── inputs.jbb │ ├── inputs_3d │ ├── main.f90 │ └── write_plotfile.f90 ├── GettingStarted_C │ ├── GNUmakefile │ ├── Make.package │ ├── main.cpp │ ├── work_on_data_2d.f90 │ └── work_on_data_3d.f90 ├── GettingStarted_F │ ├── GNUmakefile │ ├── GPackage.mak │ ├── main.f90 │ └── work_on_data.f90 ├── HeatEquation_EX1_C │ ├── GNUmakefile │ ├── Make.package │ ├── advance_2d.f90 │ ├── advance_3d.f90 │ ├── init_phi_2d.f90 │ ├── init_phi_3d.f90 │ ├── inputs_2d │ ├── inputs_3d │ ├── main.cpp │ ├── myfunc_F.H │ ├── writePlotFile.H │ └── writePlotFile.cpp ├── HeatEquation_EX1_CF │ ├── GNUmakefile │ ├── Make.package │ ├── advance.f90 │ ├── fmain.f90 │ ├── init_phi.f90 │ └── inputs ├── HeatEquation_EX1_F │ ├── GNUmakefile │ ├── GPackage.mak │ ├── advance.f90 │ ├── init_phi.f90 │ ├── inputs_2d │ ├── inputs_3d │ ├── main.f90 │ └── write_plotfile.f90 ├── HeatEquation_EX2_C │ ├── FILCC_2D.F │ ├── FILCC_3D.F │ ├── GNUmakefile │ ├── Make.package │ ├── advance_2d.f90 │ ├── advance_3d.f90 │ ├── bc_fill_nd.F90 │ ├── init_phi_2d.f90 │ ├── init_phi_3d.f90 │ ├── inputs_2d │ ├── inputs_3d │ ├── main.cpp │ ├── myfunc_F.H │ ├── writePlotFile.H │ └── writePlotFile.cpp ├── HeatEquation_EX2_F │ ├── GNUmakefile │ ├── GPackage.mak │ ├── advance.f90 │ ├── define_bc_tower.f90 │ ├── init_phi.f90 │ ├── inputs_2d │ ├── inputs_3d │ ├── main.f90 │ ├── multifab_physbc.f90 │ └── write_plotfile.f90 ├── HeatEquation_EX3_F │ ├── GNUmakefile │ ├── GPackage.mak │ ├── advance.f90 │ ├── define_bc_tower.f90 │ ├── init_phi.f90 │ ├── inputs_2d │ ├── inputs_3d │ ├── main.f90 │ ├── multifab_physbc.f90 │ └── write_plotfile.f90 ├── HeatEquation_EX4_F │ ├── GNUmakefile │ ├── GPackage.mak │ ├── advance.f90 │ ├── define_bc_tower.f90 │ ├── init_phi.f90 │ ├── inputs_2d │ ├── inputs_3d │ ├── main.f90 │ ├── multifab_physbc.f90 │ └── write_plotfile.f90 ├── HeatEquation_EX5_F │ ├── GNUmakefile │ ├── GPackage.mak │ ├── advance.f90 │ ├── define_bc_tower.f90 │ ├── init_phi.f90 │ ├── inputs-rt │ ├── inputs-rt-expl │ ├── inputs-rt-impl │ ├── inputs_2d │ ├── inputs_3d │ ├── main.f90 │ ├── multifab_physbc.f90 │ └── write_plotfile.f90 ├── HelloWorld_C │ ├── GNUmakefile │ ├── Make.package │ ├── main.cpp │ └── work.f90 ├── HelloWorld_CF │ ├── GNUmakefile │ ├── Make.package │ └── fmain.f90 ├── MultiColor_C │ ├── GNUmakefile │ ├── Make.package │ ├── ff.f90 │ ├── inputs │ └── main.cpp ├── MultiFabTests_C │ ├── GNUmakefile │ ├── GridMoveTest.cpp │ ├── Make.package │ ├── MultiFabFillBoundary.cpp │ └── MultiFabReadWrite.cpp ├── MultiFab_C_F │ ├── GNUmakefile │ ├── Make.package │ ├── ff.f90 │ └── main.cpp ├── MultiGrid_C │ ├── CMakeLists.txt │ ├── COEF_2D.F90 │ ├── COEF_3D.F90 │ ├── COEF_F.H │ ├── GNUmakefile │ ├── HypreABecLap │ │ ├── HypreABecLap.H │ │ ├── HypreABecLap.cpp │ │ ├── HypreABec_3D.F │ │ ├── HypreABec_F.H │ │ └── Make.package │ ├── Make.package │ ├── README │ ├── RHS_2D.F90 │ ├── RHS_3D.F90 │ ├── RHS_F.H │ ├── inputs │ ├── inputs-rt-c-neu │ ├── inputs-rt-c-ord2 │ ├── inputs-rt-c-ord3 │ ├── inputs-rt-f-neu │ ├── inputs-rt-f-ord2 │ ├── inputs-rt-f-ord3 │ ├── main.cpp │ ├── writePlotFile.H │ └── writePlotFile.cpp ├── MultiGrid_F │ ├── GNUmakefile │ ├── README │ ├── constants.f90 │ ├── cycle_tower.f90 │ ├── fmg_cycle.f90 │ ├── init_coeffs.f90 │ ├── init_rhs.f90 │ ├── inputs_fmg_lin_2d │ ├── inputs_fmg_lin_3d │ ├── inputs_fmg_pc_2d │ ├── inputs_fmg_pc_3d │ ├── inputs_v_lin_2d │ ├── inputs_v_lin_3d │ ├── inputs_v_pc_2d │ ├── inputs_v_pc_3d │ ├── main.f90 │ ├── solve.f90 │ ├── traverse.f90 │ └── v_cycle.f90 ├── PGAS_HEAT │ ├── GNUmakefile │ ├── Make.package │ ├── advance_3d.f90 │ ├── init_phi_3d.f90 │ ├── inputs_3d │ ├── main.cpp │ ├── test-mpi3 │ │ └── main.cpp │ ├── writePlotFile.H │ └── writePlotFile.cpp ├── PIC_C │ ├── GNUmakefile │ ├── Make.package │ ├── README │ ├── inputs │ ├── main.cpp │ ├── single_level.cpp │ ├── solve_for_accel.cpp │ ├── solve_with_f90.cpp │ ├── solve_with_hpgmg.cpp │ └── two_level.cpp ├── README_C ├── README_F ├── Random_F │ ├── GNUmakefile │ ├── GPackage.mak │ └── main.f90 ├── Sidecar_EX1 │ ├── DestMFTest.cpp │ ├── GNUmakefile │ ├── GridMoveTest.cpp │ ├── InTransitAnalysis.H │ ├── InTransitAnalysis.cpp │ ├── Make.package │ ├── NSidecarsTest.cpp │ ├── SidecarResizeTest.cpp │ ├── TestRankSets.cpp │ ├── inputs_3d │ ├── inputs_sc │ └── run.sh ├── Tiling_C │ ├── GNUmakefile │ ├── Make.package │ ├── main.cpp │ └── work.f90 ├── Tiling_Heat_C │ ├── GNUmakefile │ ├── Make.package │ ├── advance_3d.f90 │ ├── init_phi_3d.f90 │ ├── inputs_3d │ ├── main.cpp │ ├── results │ │ ├── results.org │ │ ├── run-babbage.sh │ │ └── run-edison.sh │ ├── writePlotFile.H │ └── writePlotFile.cpp ├── Tiling_Heat_F │ ├── GNUmakefile │ ├── GPackage.mak │ ├── advance.f90 │ ├── init_phi.f90 │ ├── inputs_3d │ ├── main.f90 │ ├── results.txt │ ├── results │ │ ├── babbage_omp.run │ │ ├── results.txt │ │ ├── t1a.txt │ │ ├── t1b.txt │ │ ├── t2a.txt │ │ ├── t2b.txt │ │ ├── t3a.txt │ │ ├── t3b.txt │ │ ├── t4a.txt │ │ ├── t4b.txt │ │ ├── t5a.txt │ │ ├── t5b.txt │ │ ├── t6a.txt │ │ ├── t6b.txt │ │ ├── t7a.txt │ │ └── t7b.txt │ └── write_plotfile.f90 ├── TwoGrid_PIC_C │ ├── GNUmakefile │ ├── Make.package │ ├── main.cpp │ ├── solve_for_accel.cpp │ ├── solve_with_f90.cpp │ └── split_boxes.cpp ├── WaveEquation_C │ ├── GNUmakefile │ ├── Make.package │ ├── advance_2d.f90 │ ├── advance_3d.f90 │ ├── init_data_2d.f90 │ ├── init_data_3d.f90 │ ├── inputs_2d │ ├── inputs_3d │ ├── main.cpp │ ├── writePlotFile.H │ └── writePlotFile.cpp └── WaveEquation_F │ ├── GNUmakefile │ ├── GPackage.mak │ ├── advance.f90 │ ├── init_data.f90 │ ├── inputs_2d │ ├── inputs_3d │ ├── main.f90 │ └── write_plotfile.f90 └── license.txt /.gitignore: -------------------------------------------------------------------------------- 1 | nohup.out 2 | *.[oa] 3 | *.ex 4 | *~ 5 | d/ 6 | f/ 7 | o/ 8 | t/ 9 | TAGS 10 | 11 | # latex 12 | *.aux 13 | *.log 14 | *.bbl 15 | *.toc 16 | *.dvi 17 | *-eps-converted-to.pdf 18 | 19 | # python 20 | *.pyc 21 | 22 | -------------------------------------------------------------------------------- /Docs/UsersGuide/GettingStarted/edison.run: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | #SBATCH -p debug 3 | #SBATCH -N 3 4 | #SBATCH -t 00:05:00 5 | #SBATCH -J my_job 6 | #SBATCH -o my_job.o%j 7 | 8 | srun -n 72 ./main.Linux.Intel.mpi.exe 9 | -------------------------------------------------------------------------------- /Docs/UsersGuide/GettingStarted/edison_omp.run: -------------------------------------------------------------------------------- 1 | #!/bin/tcsh 2 | #SBATCH -p debug 3 | #SBATCH -N 3 4 | #SBATCH -t 00:05:00 5 | #SBATCH -J my_job 6 | #SBATCH -o my_job.o%j 7 | 8 | setenv OMP_NUM_THREADS 12 9 | 10 | srun -n 6 -c 12 ./main.Linux.Intel.mpi.omp.exe 11 | -------------------------------------------------------------------------------- /Docs/UsersGuide/Introduction/data_loc.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoxLib-Codes/BoxLib/330b14363148ebb0b85d1ffd59d07874ddc79e6d/Docs/UsersGuide/Introduction/data_loc.odg -------------------------------------------------------------------------------- /Docs/UsersGuide/Introduction/index_grid.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoxLib-Codes/BoxLib/330b14363148ebb0b85d1ffd59d07874ddc79e6d/Docs/UsersGuide/Introduction/index_grid.odg -------------------------------------------------------------------------------- /Docs/UsersGuide/README: -------------------------------------------------------------------------------- 1 | To build a postscript and pdf version of the User's Guide, simply type "make". -------------------------------------------------------------------------------- /MiniApps/AMR_Adv_Diff_F90/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | VPATH_LOCATIONS += . 16 | 17 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 18 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 19 | 20 | main.$(suf).exe: $(objects) 21 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 22 | @echo SUCCESS 23 | 24 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 25 | -------------------------------------------------------------------------------- /MiniApps/AMR_Adv_Diff_F90/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += advance.f90 2 | f90sources += compute_flux.f90 3 | f90sources += init_phi.f90 4 | f90sources += main.f90 5 | f90sources += prob.f90 6 | f90sources += update_phi.f90 7 | f90sources += write_plotfile.f90 8 | -------------------------------------------------------------------------------- /MiniApps/AMR_Adv_Diff_F90/inputs_2d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 3 4 | dim = 2 5 | plot_int = 1 6 | n_cell = 64 7 | max_grid_size = 16 8 | 9 | nsteps = 10 10 | 11 | do_subcycling = T 12 | 13 | ! allowable options for this example are 14 | ! -1 = PERIODIC 15 | ! 12 = OUTLET (dphi/dn=0 at boundary) 16 | ! 15 = NO_SLIP_WALL (wall with fixed phi=1) 17 | bc_x_lo = -1 18 | bc_x_hi = -1 19 | bc_y_lo = -1 20 | bc_y_hi = -1 21 | 22 | amr_buf_width = 2 23 | cluster_blocking_factor = 2 24 | regrid_int = 1 25 | / 26 | -------------------------------------------------------------------------------- /MiniApps/AMR_Adv_Diff_F90/inputs_3d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 3 4 | dim = 3 5 | plot_int = 1 6 | n_cell = 64 7 | max_grid_size = 16 8 | 9 | nsteps = 1 10 | nsteps = 10 11 | 12 | do_subcycling = T 13 | 14 | ! allowable options for this example are 15 | ! -1 = PERIODIC 16 | ! 12 = OUTLET (dphi/dn=0 at boundary) 17 | ! 15 = NO_SLIP_WALL (wall with fixed phi=1) 18 | bc_x_lo = -1 19 | bc_x_hi = -1 20 | bc_y_lo = -1 21 | bc_y_hi = -1 22 | bc_z_lo = -1 23 | bc_z_hi = -1 24 | 25 | amr_buf_width = 2 26 | cluster_blocking_factor = 2 27 | regrid_int = 1 28 | / 29 | -------------------------------------------------------------------------------- /MiniApps/AMR_Adv_Diff_F90/prob.f90: -------------------------------------------------------------------------------- 1 | module prob_module 2 | 3 | use bl_types 4 | 5 | ! Here we hold the specific problem parameters 6 | real(dp_t), parameter :: uadv = 1.d0 7 | real(dp_t), parameter :: vadv = 0.d0 8 | real(dp_t), parameter :: wadv = 0.d0 9 | real(dp_t), parameter :: mu = 2.d-2 10 | 11 | end module prob_module 12 | -------------------------------------------------------------------------------- /MiniApps/FillBoundary/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME = ../../../BoxLib 2 | 3 | DEBUG = FALSE 4 | USE_MPI = TRUE 5 | USE_OMP = FALSE 6 | USE_IPM = FALSE 7 | PROFILE = TRUE 8 | COMM_PROFILE = TRUE 9 | USE_DUMPI = FALSE 10 | COMP = g++ 11 | FCOMP = gfortran 12 | #COMP = Intel 13 | #FCOMP = Intel 14 | DIM = 3 15 | PRECISION = DOUBLE 16 | EBASE = fbtest 17 | 18 | CEXE_sources += MultiFabFillBoundaryTest.cpp 19 | 20 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 21 | include $(BOXLIB_HOME)/Src/C_BoundaryLib/Make.package 22 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 23 | 24 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 25 | -------------------------------------------------------------------------------- /MiniApps/FillBoundary/qsub.ipm.bat: -------------------------------------------------------------------------------- 1 | #PBS -q debug 2 | #PBS -l walltime=00:30:00 3 | #PBS -A accountnumber 4 | #PBS -j eo 5 | 6 | ### total cores 7 | #PBS -l mppwidth=125 8 | 9 | ###PBS -l mppwidth=1000 10 | ###PBS -l mppwidth=10648 11 | ###PBS -l mppwidth=110592 12 | 13 | cd $PBS_O_WORKDIR 14 | 15 | module load ipm 16 | setenv IPM_LOGDIR $PBS_O_WORKDIR 17 | setenv IPM_REPORT full 18 | setenv IPM_LOG full 19 | setenv IPM_HPM PAPI_L1_DCM,PAPI_TOT_INS,PAPI_L1_DCA,PAPI_FP_OPS 20 | 21 | aprun -n 125 ./fbtest3d.Linux.g++.gfortran.MPI.IPM.ex 22 | #aprun -n 1000 ./fbtest3d.Linux.g++.gfortran.MPI.IPM.ex 23 | #aprun -n 10648 ./fbtest3d.Linux.g++.gfortran.MPI.IPM.ex 24 | #aprun -n 110592 ./fbtest3d.Linux.g++.gfortran.MPI.IPM.ex 25 | 26 | -------------------------------------------------------------------------------- /MiniApps/MultiGrid_C/Make.package: -------------------------------------------------------------------------------- 1 | FEXE_headers += RHS_F.H COEF_F.H 2 | FEXE_sources += RHS_$(DIM)D.F COEF_$(DIM)D.F 3 | 4 | CEXE_sources += main.cpp 5 | -------------------------------------------------------------------------------- /MiniApps/MultiGrid_C/RHS_F.H: -------------------------------------------------------------------------------- 1 | #ifndef _RHS_H_ 2 | #define _RHS_H_ 3 | 4 | #include 5 | 6 | #if defined(BL_LANG_FORT) 7 | #define FORT_SET_RHS set_rhs 8 | #else 9 | 10 | #if defined(BL_FORT_USE_UPPERCASE) 11 | #define FORT_SET_RHS SET_RHS 12 | #elif defined(BL_FORT_USE_LOWERCASE) 13 | #define FORT_SET_RHS set_rhs 14 | #elif defined(BL_FORT_USE_UNDERSCORE) 15 | #define FORT_SET_RHS set_rhs_ 16 | #endif 17 | 18 | #include 19 | 20 | extern "C" 21 | { 22 | void FORT_SET_RHS ( 23 | Real* rhs , ARLIM_P(rhs_lo), ARLIM_P(rhs_hi), 24 | const int* lo, const int* hi, const Real* dx, 25 | const Real& a, const Real& b, const Real& sigma, const Real& w, 26 | const int& ibnd); 27 | } 28 | #endif 29 | 30 | #endif /*_RHS_F_H_*/ 31 | -------------------------------------------------------------------------------- /MiniApps/MultiGrid_C/qsub.ipm.bat: -------------------------------------------------------------------------------- 1 | #PBS -q debug 2 | #PBS -l walltime=00:30:00 3 | #PBS -A accountnumber 4 | #PBS -j eo 5 | 6 | ### total cores 7 | #PBS -l mppwidth=64 8 | 9 | ###PBS -l mppwidth=1728 10 | ###PBS -l mppwidth=13824 11 | ###PBS -l mppwidth=110592 12 | 13 | cd $PBS_O_WORKDIR 14 | 15 | module load ipm 16 | setenv IPM_LOGDIR $PBS_O_WORKDIR 17 | setenv IPM_REPORT full 18 | setenv IPM_LOG full 19 | setenv IPM_HPM PAPI_L1_DCM,PAPI_TOT_INS,PAPI_L1_DCA,PAPI_FP_OPS 20 | 21 | aprun -n 64 ./main3d.Linux.gcc.gfortran.MPI.IPM.ex 22 | #aprun -n 1728 ./main3d.Linux.gcc.gfortran.MPI.IPM.ex 23 | #aprun -n 13824 ./main3d.Linux.gcc.gfortran.MPI.IPM.ex 24 | #aprun -n 110592 ./main3d.Linux.gcc.gfortran.MPI.IPM.ex 25 | 26 | -------------------------------------------------------------------------------- /MiniApps/PGAS_SMC/GNUmakefile: -------------------------------------------------------------------------------- 1 | 2 | BOXLIB_HOME ?= ../.. 3 | 4 | # compilation options 5 | COMP = g++ 6 | FCOMP = gfortran 7 | 8 | USE_MPI = TRUE 9 | USE_UPCXX = TRUE 10 | 11 | USE_OMP = FALSE 12 | 13 | PROFILE = FALSE 14 | 15 | PRECISION = DOUBLE 16 | 17 | DEBUG = FALSE 18 | 19 | DIM = 3 20 | 21 | Bpack := ./Make.package 22 | 23 | EBASE = SMC 24 | 25 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 26 | 27 | all: $(executable) 28 | @echo SUCCESS 29 | 30 | include ./Make.package 31 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 32 | 33 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 34 | 35 | 36 | #----------------------------------------------------------------------------- 37 | # for debugging. To see the value of a Makefile variable, 38 | # e.g. Fmlocs, simply do "make print-Fmlocs". This will 39 | # print out the value. 40 | print-%: ; @echo $* is $($*) 41 | 42 | -------------------------------------------------------------------------------- /MiniApps/PGAS_SMC/Make.package: -------------------------------------------------------------------------------- 1 | 2 | CEXE_sources += main.cpp 3 | CEXE_sources += SMC.cpp 4 | CEXE_sources += SMC_init.cpp 5 | CEXE_sources += SMC_io.cpp 6 | CEXE_sources += SMC_advance.cpp 7 | 8 | CEXE_headers += SMC.H 9 | CEXE_headers += SMC_F.H 10 | 11 | f90EXE_sources += derivative_stencil.f90 12 | f90EXE_sources += chemistry_module.f90 13 | f90EXE_sources += variables.f90 14 | f90EXE_sources += init_data.f90 15 | f90EXE_sources += kernels.f90 16 | f90EXE_sources += make_plot.f90 17 | f90EXE_sources += transport_properties.f90 18 | 19 | cEXE_sources += LiDryer.c 20 | 21 | -------------------------------------------------------------------------------- /MiniApps/PGAS_SMC/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | int 6 | main (int argc, char* argv[]) 7 | { 8 | BoxLib::Initialize(argc,argv); 9 | 10 | BL_PROFILE_VAR("main()", pmain); 11 | 12 | { 13 | SMC smc; 14 | smc.evolve(); 15 | } 16 | 17 | BL_PROFILE_VAR_STOP(pmain); 18 | 19 | BoxLib::Finalize(); 20 | } 21 | -------------------------------------------------------------------------------- /MiniApps/SMC/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += main.f90 2 | 3 | f90sources += advance.f90 4 | f90sources += chemistry_module.f90 5 | f90sources += derivative_stencil.f90 6 | f90sources += initialize.f90 7 | f90sources += init_data.f90 8 | f90sources += kernels.f90 9 | f90sources += make_plotfile.f90 10 | f90sources += probin.f90 11 | f90sources += smc.f90 12 | f90sources += smcdata.f90 13 | f90sources += time.f90 14 | f90sources += transport_properties.f90 15 | f90sources += variables.f90 16 | 17 | csources += LiDryer.c 18 | -------------------------------------------------------------------------------- /MiniApps/SMC/inputs_SMC: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | n_cellx = 128 4 | n_celly = 128 5 | n_cellz = 128 6 | max_grid_size = 128 7 | 8 | ! tile size 9 | tilesize_x = 1024000 ! no tiling in x-direction 10 | tilesize_y = 4 11 | tilesize_z = 4 12 | 13 | verbose = 2 14 | 15 | stop_time = 3.d-3 16 | max_step = 5 17 | 18 | cflfac = 0.1d0 19 | cfl_int = 10 20 | init_shrink = 0.5d0 21 | 22 | prob_lo_x = -0.05d0 23 | prob_lo_y = -0.05d0 24 | prob_lo_z = -0.05d0 25 | prob_hi_x = 0.05d0 26 | prob_hi_y = 0.05d0 27 | prob_hi_z = 0.05d0 28 | 29 | ! for setting up initial model 30 | rfire = 0.01d0 31 | 32 | / 33 | -------------------------------------------------------------------------------- /MiniApps/SMC/time.f90: -------------------------------------------------------------------------------- 1 | ! make time available in a module 2 | 3 | module time_module 4 | 5 | use bl_types 6 | 7 | implicit none 8 | 9 | real(dp_t), save :: time 10 | 11 | private 12 | 13 | public :: time 14 | 15 | end module time_module 16 | -------------------------------------------------------------------------------- /ReleaseNotes/release-notes-16.12: -------------------------------------------------------------------------------- 1 | #-*- mode: org -*- 2 | #+STARTUP: showall 3 | 4 | Release Notes for BoxLib 16.12 5 | 6 | The development branch was merged into master on December 2, 2016. 7 | 8 | * Major Changes in C++ BoxLib 9 | 10 | ** C++11 is now required. 11 | This may require some small changes in application codes. Thanks to 12 | C++11 rvalue ref-qualifier, flaws leading to potential dangling 13 | pointers and references have been plugged. A few bugs in Box are 14 | fixed. 15 | 16 | ** New I/O 17 | Significant changes have been to I/O. Many performance tuning 18 | parameters have been introduced. See Docs/Readme.io for details. 19 | 20 | ** Make system 21 | The make system has gone through a lot of cleanups. See 22 | Tools/C_mk/READ.md for details on the current make system. 23 | 24 | -------------------------------------------------------------------------------- /ReleaseNotes/release-notes-16.12.1: -------------------------------------------------------------------------------- 1 | #-*- mode: org -*- 2 | #+STARTUP: showall 3 | 4 | Release Notes for BoxLib 16.12.1 5 | 6 | The development branch was merged into master on December 13, 2016. 7 | 8 | * Changes 9 | ** Improved generic plotfile writer. 10 | ** Trapping SIGABRT 11 | ** Small changed in make 12 | -------------------------------------------------------------------------------- /Src/C_AMRLib/Extrapolater.H: -------------------------------------------------------------------------------- 1 | #ifndef _EXTRAPOLATER_H_ 2 | #define _EXTRAPOLATER_H_ 3 | 4 | #include 5 | #include 6 | 7 | namespace Extrapolater 8 | { 9 | // finebnd: boundary cells covered by fine cells (including periodically shifted fine cells) 10 | // crsebnd: boundary cells not covered by fine cells 11 | // physbnd: boundary cells outside the domain (excluding periodic boundaries) 12 | // interior: interior cells 13 | const int finebnd = 1; 14 | const int crsebnd = 0; 15 | const int physbnd = 0; 16 | const int interior = 1; 17 | 18 | // It is expected that FillBoundary (w/ periodicity) has been called on mf. 19 | void FirstOrderExtrap (MultiFab& mf, const Geometry& geom, int scomp, int ncomp); 20 | } 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Src/C_AMRLib/FLUSH_F.H: -------------------------------------------------------------------------------- 1 | #ifndef _FLUSH_F_H_ 2 | #define _FLUSH_F_H_ 3 | 4 | #if defined(BL_AIX) 5 | #define FORT_FLUSH flush_ 6 | #else 7 | #define FORT_FLUSH flush 8 | #endif 9 | 10 | #endif 11 | 12 | -------------------------------------------------------------------------------- /Src/C_AmrCoreLib/Make.package: -------------------------------------------------------------------------------- 1 | 2 | CEXE_headers += AmrCore.H Cluster.H ErrorList.H FillPatchUtil.H FluxRegister.H \ 3 | Interpolater.H TagBox.H 4 | CEXE_sources += AmrCore.cpp Cluster.cpp ErrorList.cpp FillPatchUtil.cpp FluxRegister.cpp \ 5 | Interpolater.cpp TagBox.cpp 6 | 7 | FEXE_headers += FLUXREG_F.H INTERP_F.H 8 | FEXE_sources += FLUXREG_$(DIM)D.F INTERP_$(DIM)D.F 9 | 10 | ifeq ($(USE_PARTICLES), TRUE) 11 | CEXE_headers += AmrParGDB.H AmrParticles.H 12 | endif 13 | 14 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/C_AmrCoreLib 15 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/C_AmrCoreLib 16 | -------------------------------------------------------------------------------- /Src/C_BaseLib/Arena.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | const unsigned int Arena::align_size; 6 | 7 | Arena::~Arena () {} 8 | 9 | std::size_t 10 | Arena::align (std::size_t s) 11 | { 12 | std::size_t x = s + (align_size-1); 13 | x -= x & (align_size-1); 14 | return x; 15 | } 16 | -------------------------------------------------------------------------------- /Src/C_BaseLib/BArena.H: -------------------------------------------------------------------------------- 1 | 2 | #ifndef BL_BARENA_H 3 | #define BL_BARENA_H 4 | 5 | #include 6 | 7 | // 8 | // A Concrete Class for Dynamic Memory Management 9 | // 10 | // This is the simplest dynamic memory management class derived from Arena. 11 | // 12 | // Makes calls to ::operator new() and ::operator delete(). 13 | // 14 | 15 | class BArena 16 | : 17 | public Arena 18 | { 19 | public: 20 | // 21 | // Allocates a dynamic memory arena of size sz. 22 | // Returns a pointer to this memory. 23 | // 24 | virtual void* alloc (std::size_t sz) override; 25 | // 26 | // Deletes the arena pointed to by pt. 27 | // 28 | virtual void free (void* pt) override; 29 | }; 30 | 31 | #endif /*BL_BARENA_H*/ 32 | -------------------------------------------------------------------------------- /Src/C_BaseLib/BArena.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | void* 5 | BArena::alloc (std::size_t _sz) 6 | { 7 | return ::operator new(_sz); 8 | } 9 | 10 | void 11 | BArena::free (void* pt) 12 | { 13 | ::operator delete(pt); 14 | } 15 | -------------------------------------------------------------------------------- /Src/C_BaseLib/GPackage.mak: -------------------------------------------------------------------------------- 1 | cxxsources += MemPool.cpp 2 | cxxsources += CArena.cpp 3 | cxxsources += Arena.cpp 4 | 5 | f90sources += mempool_f.f90 6 | -------------------------------------------------------------------------------- /Src/C_BaseLib/Lazy.H: -------------------------------------------------------------------------------- 1 | #ifndef BL_LAZY_H 2 | #define BL_LAZY_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | namespace Lazy 9 | { 10 | typedef typename std::function Func; 11 | typedef typename std::vector FuncQue; 12 | 13 | extern FuncQue reduction_queue; 14 | 15 | void QueueReduction (Func); 16 | void EvalReduction (); 17 | 18 | void Finalize (); 19 | } 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /Src/C_BaseLib/Lazy.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | namespace Lazy 4 | { 5 | FuncQue reduction_queue; 6 | 7 | void QueueReduction (Func f) 8 | { 9 | #ifdef BL_USE_MPI 10 | reduction_queue.push_back(f); 11 | const int max_queue_size = 64; 12 | if (reduction_queue.size() >= max_queue_size) 13 | EvalReduction(); 14 | #else 15 | f(); 16 | #endif 17 | } 18 | 19 | void EvalReduction () 20 | { 21 | static int count = 0; 22 | #ifdef BL_USE_MPI 23 | ++count; 24 | if (count == 1) { 25 | for (auto&& f : reduction_queue) 26 | f(); 27 | reduction_queue.clear(); 28 | count = 0; 29 | } 30 | #endif 31 | } 32 | 33 | void Finalize () 34 | { 35 | EvalReduction(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Src/C_BaseLib/MemPool.H: -------------------------------------------------------------------------------- 1 | #ifndef BL_MEMPOOL_H 2 | #define BL_MEMPOOL_H 3 | 4 | extern "C" { 5 | void mempool_init (); 6 | void* mempool_alloc (size_t n); 7 | void mempool_free (void* p); 8 | void mempool_get_stats (int& mp_min, int& mp_max, int& mp_tot); // min, max & tot in MB 9 | void double_array_init (double* p, size_t nelems); 10 | void array_init_snan (double* p, size_t nelems); 11 | } 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /Src/C_BaseLib/UseCount.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | UseCount::UseCount () 5 | : 6 | cnt(new unsigned int(1)) 7 | {} 8 | 9 | void 10 | UseCount::decrement () 11 | { 12 | if (unique()) 13 | { 14 | delete cnt; 15 | cnt = 0; 16 | } 17 | else 18 | { 19 | --*cnt; 20 | } 21 | } 22 | 23 | UseCount::UseCount (const UseCount& rhs) 24 | : 25 | cnt(rhs.cnt) 26 | { 27 | ++*cnt; 28 | } 29 | 30 | UseCount& 31 | UseCount::operator= (const UseCount& rhs) 32 | { 33 | ++*rhs.cnt; 34 | decrement(); 35 | cnt = rhs.cnt; 36 | return *this; 37 | } 38 | 39 | UseCount::~UseCount () 40 | { 41 | decrement(); 42 | } 43 | -------------------------------------------------------------------------------- /Src/C_BaseLib/bc_types.fi: -------------------------------------------------------------------------------- 1 | ! See BC_TYPES.H for discussion 2 | INTEGER BOGUS_BC 3 | PARAMETER (BOGUS_BC=-666) 4 | INTEGER REFLECT_ODD 5 | PARAMETER (REFLECT_ODD=-1) 6 | INTEGER INT_DIR 7 | PARAMETER (INT_DIR=0) 8 | INTEGER REFLECT_EVEN 9 | PARAMETER (REFLECT_EVEN=1) 10 | INTEGER FOEXTRAP 11 | PARAMETER (FOEXTRAP=2) 12 | INTEGER EXT_DIR 13 | PARAMETER (EXT_DIR=3) 14 | INTEGER HOEXTRAP 15 | PARAMETER (HOEXTRAP=4) 16 | -------------------------------------------------------------------------------- /Src/C_BaseLib/bl_flush.f: -------------------------------------------------------------------------------- 1 | subroutine flush(un) 2 | integer un 3 | end 4 | -------------------------------------------------------------------------------- /Src/C_BaseLib/bl_fort_module.F90: -------------------------------------------------------------------------------- 1 | module bl_fort_module 2 | 3 | use iso_c_binding, only : c_float, c_double 4 | 5 | implicit none 6 | 7 | integer, parameter :: bl_spacedim = BL_SPACEDIM 8 | 9 | #ifdef BL_USE_FLOAT 10 | integer, parameter :: c_real = c_float 11 | #else 12 | integer, parameter :: c_real = c_double 13 | #endif 14 | 15 | end module bl_fort_module 16 | -------------------------------------------------------------------------------- /Src/C_BoundaryLib/LO_BCTYPES.H: -------------------------------------------------------------------------------- 1 | #ifndef _LO_BCTYPES_H_ 2 | #define _LO_BCTYPES_H_ 3 | 4 | #define LO_DIRICHLET 101 5 | #define LO_NEUMANN 102 6 | #define LO_REFLECT_ODD 103 7 | #define LO_MARSHAK 104 8 | #define LO_SANCHEZ_POMRANING 105 9 | 10 | #endif 11 | 12 | -------------------------------------------------------------------------------- /Src/C_BoundaryLib/Make.package: -------------------------------------------------------------------------------- 1 | BNDRYLIB_BASE=EXE 2 | ifeq ($(LBASE),bndry) 3 | BNDRYLIB_BASE=LIB 4 | endif 5 | 6 | C$(BNDRYLIB_BASE)_sources += FabSet.cpp BndryRegister.cpp Mask.cpp MultiMask.cpp\ 7 | BndryData.cpp InterpBndryData.cpp MacBndry.cpp 8 | 9 | C$(BNDRYLIB_BASE)_headers += FabSet.H BndryRegister.H Mask.H MultiMask.H\ 10 | BndryData.H BoundCond.H InterpBndryData.H \ 11 | LO_BCTYPES.H MacBndry.H 12 | 13 | F$(BNDRYLIB_BASE)_headers += INTERPBNDRYDATA_F.H 14 | 15 | F$(BNDRYLIB_BASE)_sources += INTERPBNDRYDATA_$(DIM)D.F LO_UTIL.F 16 | 17 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/C_BoundaryLib 18 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/C_BoundaryLib 19 | 20 | -------------------------------------------------------------------------------- /Src/C_ParticleLib/Make.package: -------------------------------------------------------------------------------- 1 | 2 | BOXLIB_BASE=EXE 3 | ifeq ($(LBASE),box) 4 | BOXLIB_BASE=LIB 5 | endif 6 | 7 | C$(BOXLIB_BASE)_sources += Particles.cpp TracerParticles.cpp 8 | C$(BOXLIB_BASE)_headers += Particles.H ParticleInit.H ParGDB.H TracerParticles.H 9 | F$(BOXLIB_BASE)_headers += Particles_F.H 10 | F$(BOXLIB_BASE)_sources += Particles_$(DIM)D.F 11 | 12 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/C_ParticleLib 13 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/C_ParticleLib 14 | -------------------------------------------------------------------------------- /Src/Extern/amrdata/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += AmrData.cpp DataServices.cpp 2 | CEXE_headers += AmrData.H AmrvisConstants.H DataServices.H 3 | FEXE_headers += 4 | FEXE_sources += FABUTIL_${DIM}D.F 5 | 6 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/Extern/amrdata 7 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/Extern/amrdata 8 | -------------------------------------------------------------------------------- /Src/Extern/gslib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # -*- mode: cmake -*------------------------------------------- 2 | project(GSLIB) 3 | 4 | set(F77_source_files acorni.f backtr.f beyond.f blue.f chknam.f chktitle.f CMakeLists.txt cova3.f dlocate.f dpowint.f dsortem.f gauinv.f gcum.f getindx.f getz.f green.f hexa.f ksol.f ktsol.f locate.f nscore.f numtext.f ordrel.f picksupr.f powint.f psfill.f psline.f pstext.f rand.f red.f resc.f scal.f setrot.f setsupr.f sortem.f sqdist.f srchsupr.f strlen.f) 5 | 6 | add_library(gslib ${F77_source_files}) 7 | set_target_properties(gslib PROPERTIES LINKER_LANGUAGE Fortran) 8 | 9 | add_install_library(gslib) 10 | 11 | if (BUILD_TESTS) 12 | endif() 13 | 14 | -------------------------------------------------------------------------------- /Src/Extern/gslib/dpowint.f: -------------------------------------------------------------------------------- 1 | double precision function dpowint(xlow,xhigh,ylow,yhigh,xval,pow) 2 | c----------------------------------------------------------------------- 3 | c 4 | c Power interpolate the value of y between (xlow,ylow) and (xhigh,yhigh) 5 | c for a value of x and a power pow. 6 | c 7 | c----------------------------------------------------------------------- 8 | 9 | implicit integer (i-n) 10 | implicit double precision (a-h,o-z) 11 | 12 | parameter(EPSLON=1.0e-20) 13 | 14 | if((xhigh-xlow).lt.EPSLON) then 15 | dpowint = (yhigh+ylow)/2.0 16 | else 17 | dpowint = ylow + (yhigh-ylow)* 18 | + (((xval-xlow)/(xhigh-xlow))**pow) 19 | end if 20 | 21 | return 22 | end 23 | -------------------------------------------------------------------------------- /Src/Extern/gslib/hexa.f: -------------------------------------------------------------------------------- 1 | character*2 function hexa(number) 2 | c----------------------------------------------------------------------- 3 | c 4 | c Return the Hexadecimal Representation of a Number 5 | c ************************************************* 6 | c 7 | c 8 | c 9 | c----------------------------------------------------------------------- 10 | character*1 hex(16) 11 | integer number,digit1,digit2 12 | data hex /'0','1','2','3','4','5','6','7','8', 13 | + '9','A','B','C','D','E','F'/ 14 | 15 | if(number.gt.255) number = 255 16 | if(number.lt.1) number = 1 17 | 18 | digit1 = number/16 19 | digit2 = number-16*digit1 20 | 21 | hexa=hex(digit1+1)//hex(digit2+1) 22 | 23 | return 24 | end 25 | -------------------------------------------------------------------------------- /Src/Extern/gslib/powint.f: -------------------------------------------------------------------------------- 1 | real function powint(xlow,xhigh,ylow,yhigh,xval,pow) 2 | c----------------------------------------------------------------------- 3 | c 4 | c Power interpolate the value of y between (xlow,ylow) and (xhigh,yhigh) 5 | c for a value of x and a power pow. 6 | c 7 | c----------------------------------------------------------------------- 8 | 9 | implicit integer (i-n) 10 | implicit double precision (a-h,o-z) 11 | 12 | parameter(EPSLON=1.0e-20) 13 | 14 | if((xhigh-xlow).lt.EPSLON) then 15 | powint = (yhigh+ylow)/2.0 16 | else 17 | powint = ylow + (yhigh-ylow)* 18 | + (((xval-xlow)/(xhigh-xlow))**pow) 19 | end if 20 | 21 | return 22 | end 23 | -------------------------------------------------------------------------------- /Src/Extern/gslib/resc.f: -------------------------------------------------------------------------------- 1 | real function resc(xmin1,xmax1,xmin2,xmax2,x111) 2 | 3 | implicit integer (i-n) 4 | implicit double precision (a-h,o-z) 5 | 6 | real*8 rsc 7 | c 8 | c Simple linear rescaling (get a value in coordinate system "2" given 9 | c a value in "1"): 10 | c 11 | rsc = dble((xmax2-xmin2)/(xmax1-xmin1)) 12 | resc = xmin2 + real( dble(x111 - xmin1) * rsc ) 13 | return 14 | end 15 | -------------------------------------------------------------------------------- /Src/Extern/gslib/strlen.f: -------------------------------------------------------------------------------- 1 | subroutine strlen(str,MAXLEN,lostr) 2 | c----------------------------------------------------------------------- 3 | c 4 | c Determine the length of the string minus trailing blanks 5 | c 6 | c 7 | c 8 | c----------------------------------------------------------------------- 9 | 10 | implicit integer (i-n) 11 | implicit double precision (a-h,o-z) 12 | 13 | character str*512 14 | lostr = MAXLEN 15 | do i=1,MAXLEN 16 | j = MAXLEN - i + 1 17 | if(str(j:j).ne.' ') return 18 | lostr = lostr - 1 19 | end do 20 | return 21 | end 22 | -------------------------------------------------------------------------------- /Src/Extern/hpgmg/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += BL_HPGMG.cpp 2 | CEXE_headers += BL_HPGMG.H 3 | 4 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/Extern/hpgmg 5 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/Extern/hpgmg 6 | -------------------------------------------------------------------------------- /Src/F_BaseLib/BLProfiler_f90.f90: -------------------------------------------------------------------------------- 1 | ! do nothing; we need these so that F90 BoxLib code can compile. 2 | 3 | subroutine bl_proffortfuncstart(str) 4 | character*(*) str 5 | end subroutine bl_proffortfuncstart 6 | 7 | subroutine bl_proffortfuncstop(str) 8 | character*(*) str 9 | end subroutine bl_proffortfuncstop 10 | 11 | subroutine bl_proffortfuncstart_int(i) 12 | integer i 13 | end subroutine bl_proffortfuncstart_int 14 | 15 | subroutine bl_proffortfuncstop_int(i) 16 | integer i 17 | end subroutine bl_proffortfuncstop_int 18 | -------------------------------------------------------------------------------- /Src/F_BaseLib/MemProfiler_f.H: -------------------------------------------------------------------------------- 1 | 2 | namespace MemProfiler_f 3 | { 4 | void initialize (); 5 | } 6 | -------------------------------------------------------------------------------- /Src/F_BaseLib/bl_random_c.H: -------------------------------------------------------------------------------- 1 | #ifndef _BL_RANDOM_C_H_ 2 | #define _BL_RANDOM_C_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | extern "C" { void backtrace_handler(int); } 9 | 10 | template 11 | void 12 | BLRng_save (const T& rng, const char* name) 13 | { 14 | std::ofstream ofs(name); 15 | ofs << rng; 16 | } 17 | 18 | template 19 | void 20 | BLRng_restore (T& rng, const char* name) 21 | { 22 | std::ifstream ifs(name); 23 | if (ifs.good()) { 24 | ifs >> rng; 25 | } else { 26 | std::cerr << "bl_rng: faied to open " << name << std::endl; 27 | backtrace_handler(6); 28 | } 29 | } 30 | 31 | template 32 | Return_t 33 | BLRng_get (Distro_t& distro, Engine_t& eng) 34 | { 35 | return distro(eng); 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /Src/F_BaseLib/bl_space.f90: -------------------------------------------------------------------------------- 1 | !! Sets the maximum num number of space dimensions 2 | module bl_space 3 | 4 | implicit none 5 | 6 | integer, parameter :: MAX_SPACEDIM = 3 7 | 8 | end module bl_space 9 | -------------------------------------------------------------------------------- /Src/F_BaseLib/bl_system.f90: -------------------------------------------------------------------------------- 1 | module bl_system_module 2 | 3 | implicit none 4 | 5 | integer, parameter :: BL_CWD_SIZE = 256 6 | 7 | contains 8 | 9 | subroutine get_cwd(cwd) 10 | 11 | use bl_string_module 12 | use bl_error_module 13 | 14 | character (len=*), INTENT(inout) :: cwd 15 | 16 | integer :: icwd(BL_CWD_SIZE) 17 | 18 | if (len(cwd) /= BL_CWD_SIZE) then 19 | call bl_error("ERROR: get_cwd argument cwd wrong size") 20 | endif 21 | 22 | call get_present_dir(icwd, BL_CWD_SIZE) 23 | 24 | call int2str(cwd, icwd, BL_CWD_SIZE) 25 | 26 | end subroutine get_cwd 27 | 28 | end module bl_system_module 29 | 30 | -------------------------------------------------------------------------------- /Src/F_BaseLib/omp.f90: -------------------------------------------------------------------------------- 1 | module omp_module 2 | 3 | implicit none 4 | 5 | integer, external :: omp_get_num_threads 6 | integer, external :: omp_get_max_threads 7 | integer, external :: omp_get_thread_num 8 | integer, external :: omp_get_num_procs 9 | external omp_set_num_threads 10 | external omp_set_dynamic 11 | logical, external :: omp_get_dynamic 12 | logical, external :: omp_in_parallel 13 | external omp_set_nested 14 | logical, external :: omp_get_nested 15 | external omp_init_lock 16 | external omp_destroy_lock 17 | external omp_set_lock 18 | external omp_unset_lock 19 | logical, external :: omp_test_lock 20 | 21 | end module omp_module 22 | -------------------------------------------------------------------------------- /Src/F_BaseLib/unittests/gr0_3d.1level: -------------------------------------------------------------------------------- 1 | 1 2 | (( 0, 0, 0) ( 63, 63, 63) ( 0, 0, 0)) 8 3 | (( 0, 0, 0) ( 31, 31, 31) ( 0, 0, 0)) 4 | (( 0, 0, 32) ( 31, 31, 63) ( 0, 0, 0)) 5 | (( 0, 32, 0) ( 31, 63, 31) ( 0, 0, 0)) 6 | (( 0, 32, 32) ( 31, 63, 63) ( 0, 0, 0)) 7 | (( 32, 0, 0) ( 63, 31, 31) ( 0, 0, 0)) 8 | (( 32, 0, 32) ( 63, 31, 63) ( 0, 0, 0)) 9 | (( 32, 32, 0) ( 63, 63, 31) ( 0, 0, 0)) 10 | (( 32, 32, 32) ( 63, 63, 63) ( 0, 0, 0)) 11 | -------------------------------------------------------------------------------- /Src/F_Interfaces/BaseLib/Make.package: -------------------------------------------------------------------------------- 1 | ifeq ($(USE_MPI),TRUE) 2 | DEFINES += -DBL_USE_F_INTERFACES 3 | endif 4 | 5 | CEXE_sources += main.cpp 6 | 7 | F90EXE_sources += bl_space_mod.F90 parallel_mod.F90 omp_mod.F90 8 | 9 | f90EXE_sources += boxlib_mod.f90 box_mod.f90 boxarray_mod.f90 geometry_mod.f90 10 | f90EXE_sources += multifab_mod.f90 parmparse_mod.f90 string_mod.f90 11 | 12 | CEXE_sources += boxarray_fi.cpp geometry_fi.cpp multifab_fi.cpp parmparse_fi.cpp 13 | CEXE_sources += parallel_mod.cpp 14 | 15 | -------------------------------------------------------------------------------- /Src/F_Interfaces/BaseLib/bl_space_mod.F90: -------------------------------------------------------------------------------- 1 | 2 | module bl_space_module 3 | 4 | #if (BL_SPACEDIM == 1) 5 | integer, parameter :: bl_num_dims = 1 6 | #elif (BL_SPACEDIM == 2) 7 | integer, parameter :: bl_num_dims = 2 8 | #else 9 | integer, parameter :: bl_num_dims = 3 10 | #endif 11 | 12 | end module bl_space_module 13 | -------------------------------------------------------------------------------- /Src/F_Interfaces/BaseLib/box_mod.f90: -------------------------------------------------------------------------------- 1 | 2 | module box_module 3 | 4 | use bl_space_module, only : ndims => bl_num_dims 5 | 6 | implicit none 7 | 8 | private 9 | 10 | type, public :: Box 11 | integer, dimension(3) :: lo = 1 12 | integer, dimension(3) :: hi = 1 13 | end type Box 14 | 15 | interface Box 16 | module procedure build_box 17 | end interface Box 18 | 19 | contains 20 | 21 | function build_box(lo, hi) result(bx) 22 | integer, intent(in) :: lo(:), hi(:) 23 | type(Box) :: bx 24 | bx%lo(1:ndims) = lo(1:ndims) 25 | bx%hi(1:ndims) = hi(1:ndims) 26 | end function build_box 27 | 28 | end module box_module 29 | 30 | -------------------------------------------------------------------------------- /Src/F_Interfaces/BaseLib/boxarray_fi.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | extern "C" { 5 | 6 | void fi_new_boxarray (BoxArray*& ba, int lo[3], int hi[3]) 7 | { 8 | IntVect small(lo), big(hi); 9 | ba = new BoxArray(Box(small,big)); 10 | } 11 | 12 | void fi_delete_boxarray (BoxArray* ba) 13 | { 14 | delete ba; 15 | } 16 | 17 | void fi_boxarray_maxsize (BoxArray* ba, int sz) 18 | { 19 | ba->maxSize(sz); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Src/F_Interfaces/BaseLib/boxlib_mod.f90: -------------------------------------------------------------------------------- 1 | 2 | module boxlib_module 3 | 4 | use bl_space_module 5 | use box_module 6 | use boxarray_module 7 | use geometry_module 8 | use multifab_module 9 | use omp_module 10 | use parallel_module 11 | use parmparse_module 12 | use string_module 13 | 14 | end module boxlib_module 15 | -------------------------------------------------------------------------------- /Src/F_Interfaces/BaseLib/geometry_fi.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | extern "C" 4 | { 5 | void fi_new_geometry (Geometry*& geom, int lo[3], int hi[3]) 6 | { 7 | Box domain(IntVect(D_DECL(lo[0],lo[1],lo[2])), 8 | IntVect(D_DECL(hi[0],hi[1],hi[2]))); 9 | geom = new Geometry(domain); 10 | } 11 | 12 | void fi_delete_geometry (Geometry* geom) 13 | { 14 | delete geom; 15 | } 16 | 17 | void fi_geometry_get_pmask (Geometry* geom, int is_per[3]) 18 | { 19 | for (int i = 0; i < BL_SPACEDIM; ++i) 20 | is_per[i] = geom->isPeriodic(i); 21 | } 22 | 23 | void fi_geometry_get_probdomain (Geometry* geom, double problo[3], double probhi[3]) 24 | { 25 | for (int i = 0; i < BL_SPACEDIM; ++i) { 26 | problo[i] = geom->ProbLo(i); 27 | probhi[i] = geom->ProbHi(i); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Src/F_Interfaces/BaseLib/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | extern "C" { void fmain(); } 6 | 7 | int main (int argc, char* argv[]) 8 | { 9 | BoxLib::Initialize(argc,argv); 10 | 11 | BL_PROFILE_VAR("main()", pmain); 12 | 13 | fmain(); 14 | 15 | BL_PROFILE_VAR_STOP(pmain); 16 | 17 | BoxLib::Finalize(); 18 | } 19 | -------------------------------------------------------------------------------- /Src/F_Interfaces/BaseLib/parallel_fi.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | extern "C" 5 | { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Src/F_Interfaces/BaseLib/string_mod.f90: -------------------------------------------------------------------------------- 1 | 2 | module string_module 3 | 4 | use iso_c_binding 5 | 6 | implicit none 7 | 8 | private 9 | 10 | public :: string_f_to_c 11 | 12 | contains 13 | 14 | function string_f_to_c (fstr) result(cstr) 15 | character(*), intent(in) :: fstr 16 | character(c_char) :: cstr(len_trim(fstr)+1) 17 | integer :: i, n 18 | n = len_trim(fstr) 19 | do i = 1, n 20 | cstr(i) = fstr(i:i) 21 | end do 22 | cstr(n+1) = c_null_char 23 | end function string_f_to_c 24 | 25 | end module string_module 26 | -------------------------------------------------------------------------------- /Src/LinearSolvers/C_CellMG/Make.package: -------------------------------------------------------------------------------- 1 | MGLIB_BASE=EXE 2 | 3 | CEXE_sources += ABecLaplacian.cpp CGSolver.cpp \ 4 | LinOp.cpp Laplacian.cpp MultiGrid.cpp 5 | 6 | CEXE_headers += ABecLaplacian.H CGSolver.H LinOp.H MultiGrid.H Laplacian.H 7 | 8 | FEXE_headers += ABec_F.H LO_F.H LP_F.H MG_F.H 9 | 10 | FEXE_sources += ABec_$(DIM)D.F ABec_UTIL.F \ 11 | LO_$(DIM)D.F LP_$(DIM)D.F MG_$(DIM)D.F 12 | 13 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/LinearSolvers/C_CellMG 14 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/LinearSolvers/C_CellMG 15 | -------------------------------------------------------------------------------- /Src/LinearSolvers/C_CellMG/lo_bctypes.fi: -------------------------------------------------------------------------------- 1 | c----------------------------------------------------------------------- 2 | c Should reflect the same contents as LO_BCTYPES.H 3 | c 4 | integer LO_DIRICHLET 5 | integer LO_NEUMANN 6 | integer LO_REFLECT_ODD 7 | parameter ( 8 | & LO_DIRICHLET = 101, 9 | & LO_NEUMANN = 102, 10 | & LO_REFLECT_ODD = 103 11 | & ) 12 | -------------------------------------------------------------------------------- /Src/LinearSolvers/C_CellMG4/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += ABec2.cpp ABec4.cpp 2 | CEXE_headers += ABec2.H ABec4.H 3 | FEXE_headers += ABec2_F.H ABec4_F.H 4 | FEXE_sources += ABec2_$(DIM)D.F ABec4_$(DIM)D.F 5 | 6 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/LinearSolvers/C_CellMG4 7 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/LinearSolvers/C_CellMG4 8 | -------------------------------------------------------------------------------- /Src/LinearSolvers/C_TensorMG/Make.package: -------------------------------------------------------------------------------- 1 | MCMG_BASE=EXE 2 | ifeq ($(LBASE),mcmg) 3 | MCMG_BASE=LIB 4 | endif 5 | C$(MCMG_BASE)_headers += DivVis.H MCCGSolver.H MCInterpBndryData.H MCLinOp.H 6 | C$(MCMG_BASE)_headers += MCMultiGrid.H 7 | 8 | C$(MCMG_BASE)_sources += DivVis.cpp MCCGSolver.cpp MCInterpBndryData.cpp MCLinOp.cpp 9 | C$(MCMG_BASE)_sources += MCMultiGrid.cpp 10 | 11 | F$(MCMG_BASE)_headers += DivVis_F.H MCINTERPBNDRYDATA_F.H MCLO_F.H 12 | F$(MCMG_BASE)_sources += MCLO_$(DIM)D.F MCINTERPBNDRYDATA_$(DIM)D.F 13 | 14 | ifeq ($(DIM),2) 15 | F$(MCMG_BASE)_sources += DV_2D.F 16 | else 17 | F$(MCMG_BASE)_sources += DV_3D1.F DV_3D2.F DV_3D3.F 18 | endif 19 | 20 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/LinearSolvers/C_TensorMG 21 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/LinearSolvers/C_TensorMG 22 | -------------------------------------------------------------------------------- /Src/LinearSolvers/C_to_F_MG/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += MGT_Solver.cpp FMultiGrid.cpp 2 | CEXE_headers += MGT_Solver.H FMultiGrid.H 3 | CEXE_headers += stencil_types.H 4 | 5 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/LinearSolvers/C_to_F_MG 6 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/LinearSolvers/C_to_F_MG 7 | -------------------------------------------------------------------------------- /Src/LinearSolvers/C_to_F_MG/stencil_types.H: -------------------------------------------------------------------------------- 1 | #ifndef _STENCIL_TYPES_H_ 2 | #define _STENCIL_TYPES_H_ 3 | 4 | // 5 | // The values here must be consistent with the values in F_MG/stencil_types.f90. 6 | // 7 | 8 | // Cell-centered stencils 9 | const int CC_CROSS_STENCIL = 11; 10 | const int HO_CROSS_STENCIL = 12; 11 | const int HO_DENSE_STENCIL = 13; 12 | 13 | // Node-centered stencils 14 | const int ND_CROSS_STENCIL = 21; 15 | const int ND_DENSE_STENCIL = 22; 16 | const int ND_VATER_STENCIL = 23; 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /Src/LinearSolvers/F_MG/stencil_types.f90: -------------------------------------------------------------------------------- 1 | module stencil_types_module 2 | 3 | ! If this file is updated, don't forget to update C_to_F_MG/stencil_types.H. 4 | 5 | ! Cell-centered stencils 6 | integer, parameter :: CC_CROSS_STENCIL = 11 7 | integer, parameter :: HO_CROSS_STENCIL = 12 8 | integer, parameter :: HO_DENSE_STENCIL = 13 9 | 10 | ! Node-centered stencils 11 | integer, parameter :: ND_CROSS_STENCIL = 21 12 | integer, parameter :: ND_DENSE_STENCIL = 22 13 | integer, parameter :: ND_VATER_STENCIL = 23 14 | 15 | end module stencil_types_module 16 | -------------------------------------------------------------------------------- /Src/Python/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.so 3 | -------------------------------------------------------------------------------- /Src/Python/F90/README: -------------------------------------------------------------------------------- 1 | PyBoxLib 2 | ======== 3 | 4 | This version of PyBoxLib wraps the Fortran version of BoxLib. 5 | 6 | 7 | Install 8 | ======= 9 | 10 | $ make OUT=build CC=mpicc FC=mpif90 MPIHOME=$(dirname $(dirname $(which mpicc))) 11 | $ python setup.py install --user 12 | 13 | 14 | Basic usage 15 | =========== 16 | 17 | Please see 'test.py'. 18 | -------------------------------------------------------------------------------- /Src/Python/F90/fboxlib/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | import fboxlib.fcboxlib as fcboxlib 3 | 4 | from fboxlib.boxarray import boxarray 5 | from fboxlib.layout import layout 6 | from fboxlib.multifab import multifab, lmultifab 7 | from fboxlib.regrid import regrid 8 | 9 | open = fcboxlib.open 10 | close = fcboxlib.close 11 | mpi_size = fcboxlib.size 12 | mpi_rank = fcboxlib.rank 13 | 14 | reduce_max = fcboxlib.reduce_max 15 | -------------------------------------------------------------------------------- /Src/Python/F90/fboxlib/regrid.py: -------------------------------------------------------------------------------- 1 | 2 | import fboxlib.fcboxlib as fcboxlib 3 | import numpy as np 4 | 5 | from fboxlib.multifab import multifab 6 | 7 | def regrid(layouts, multifabs, dxs, tag_boxes, max_levs=8, amr_buf_width=2, max_grid_size=64): 8 | 9 | # XXX: passing layouts here is a bit redundant... 10 | 11 | nlevs = len(layouts) 12 | lacptrs = np.zeros((max_levs,), np.long) 13 | mfcptrs = np.zeros((max_levs,), np.long) 14 | for i in range(nlevs): 15 | lacptrs[i] = layouts[i].cptr 16 | mfcptrs[i] = multifabs[i].cptr 17 | 18 | nlevs = fcboxlib.regrid(lacptrs, mfcptrs, nlevs, max_levs, tag_boxes) 19 | 20 | return [ multifab(cptr=x) for x in mfcptrs[:nlevs] ] 21 | -------------------------------------------------------------------------------- /Src/Python/F90/tests/regrid.py: -------------------------------------------------------------------------------- 1 | 2 | import fboxlib 3 | fboxlib.open() 4 | 5 | ba = fboxlib.boxarray([[(0,0), (100,100)]]) 6 | la = fboxlib.layout(ba) 7 | mf = fboxlib.multifab(la, nc=3, ng=0) 8 | 9 | print "#"*80 10 | print "# before regridding" 11 | la.echo() 12 | 13 | fab = mf.fab(1) 14 | fab.array[...] = 1.0 15 | fab.array[10:20,10:20] = 2.0 16 | fab.array[50:60,50:60] = 2.0 17 | 18 | def tag_boxes(mf, tb, dx, lev): 19 | if lev > 1: 20 | return 21 | mf = fboxlib.multifab(cptr=mf) 22 | tb = fboxlib.lmultifab(cptr=tb) 23 | mfab = mf.fab(1) 24 | tfab = tb.fab(1) 25 | tfab.array[mfab.array[:,:,0] > 1.0] = 1 26 | 27 | mfs = fboxlib.regrid([la], [mf], [0.5], tag_boxes) 28 | 29 | print "#"*80 30 | print "# after regridding" 31 | for mf in mfs: 32 | mf.layout.echo() 33 | -------------------------------------------------------------------------------- /Src/Python/GMakerules.mak: -------------------------------------------------------------------------------- 1 | F90FLAGS += -fPIC 2 | CFLAGS += -fPIC 3 | 4 | NPINCLUDE:=-I$(shell python -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc()') 5 | NPINCLUDE+=-I$(shell python -c 'import numpy; print numpy.get_include()')/numpy 6 | 7 | PYLDFLAGS = $(shell python-config --ldflags) 8 | $(PYFBOXLIB): $(objects) 9 | $(F90) $(F90FLAGS) -shared -o $@ $^ $(PYLDFLAGS) 10 | 11 | $(PYCBOXLIB): $(PYBOXLIB)/fsrc/boxlib_numpy_c.c 12 | $(CC) $(CFLAGS) $(NPINCLUDE) -shared -o $@ $^ -L. -lpyfboxlib $(PYLDFLAGS) 13 | -------------------------------------------------------------------------------- /Src/Python/GNUmakefile: -------------------------------------------------------------------------------- 1 | # 2 | # Makefile for C++ versions of PyBoxLib 3 | # 4 | 5 | OUT ?= . 6 | 7 | COMP ?= gcc 8 | FCOMP ?= gfortran 9 | CXX ?= mpic++ 10 | CC ?= mpicc 11 | 12 | all: 13 | make -f GNUmakefile_CXX.mak DIM=1 COMP=$(COMP) FCOMP=$(FCOMP) CC=$(CC) CXX=$(CXX) OUT=$(OUT) 14 | make -f GNUmakefile_CXX.mak DIM=2 COMP=$(COMP) FCOMP=$(FCOMP) CC=$(CC) CXX=$(CXX) OUT=$(OUT) 15 | make -f GNUmakefile_CXX.mak DIM=3 COMP=$(COMP) FCOMP=$(FCOMP) CC=$(CC) CXX=$(CXX) OUT=$(OUT) 16 | 17 | wrappers: 18 | make -f GNUmakefile_CXX.mak DIM=1 wrapper 19 | make -f GNUmakefile_CXX.mak DIM=2 wrapper 20 | make -f GNUmakefile_CXX.mak DIM=3 wrapper 21 | 22 | clean: 23 | rm -rf boxlib/*.so boxlib/*.pyc *.pyc 24 | 25 | realclean: 26 | rm -rf build/ boxlib/*.so boxlib/*.pyc *.pyc d f o 27 | 28 | .PHONY: clean 29 | -------------------------------------------------------------------------------- /Src/Python/GPackage.mak: -------------------------------------------------------------------------------- 1 | PYBOXLIB ?= $(BOXLIB_HOME)/Src/Python 2 | 3 | PYFBOXLIB = libpyfboxlib.so 4 | PYCBOXLIB = libpycboxlib.so 5 | PYBOXLIBS = $(PYFBOXLIB) $(PYCBOXLIB) 6 | 7 | f90sources += blobjects.f90 8 | f90sources += fboxlib.f90 9 | f90sources += boxlib_numpy_f.f90 10 | 11 | VPATH_LOCATIONS += $(PYBOXLIB)/src 12 | -------------------------------------------------------------------------------- /Src/Python/contrib/chemSupport.H: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | std::list 6 | GetPathDiagramEdges (const ChemDriver& cd, 7 | const std::string& trace_element_name, 8 | bool unmap_edge_reactions = true, 9 | bool one_based_reaction_numbering = true, 10 | int verbose = false, 11 | bool hack_mech_splitting_rules = true); 12 | -------------------------------------------------------------------------------- /Src/Python/tests/test-multifab.py: -------------------------------------------------------------------------------- 1 | 2 | import boxlib 3 | 4 | def test_multifab(): 5 | 6 | ndim = 3 7 | size = 64 8 | dof = 1 9 | 10 | bx = boxlib.Box(lo=[1]*ndim, hi=[size]*ndim) 11 | ba = boxlib.BoxArray(boxes=[bx]) 12 | ba.maxSize(32) 13 | 14 | mf = boxlib.MultiFab(ba, ncomp=dof, nghost=2) 15 | 16 | mf.FillBoundary(0, mf.nComp()) 17 | 18 | 19 | if __name__ == '__main__': 20 | test_multifab() 21 | -------------------------------------------------------------------------------- /Tests/C_BaseLib/AMRPROFTEST_F.H: -------------------------------------------------------------------------------- 1 | #ifndef _AMRPROFTEST_F_H 2 | #define _AMRPROFTEST_F_H 3 | 4 | #ifdef BL_LANG_FORT 5 | # define FORT_AMRPROFTEST amrproftest 6 | # define FORT_AMRPROFTESTINT amrproftestint 7 | #else 8 | # ifdef BL_FORT_USE_UPPERCASE 9 | # define FORT_AMRPROFTEST AMRPROFTEST 10 | # define FORT_AMRPROFTESTINT AMRPROFTESTNT 11 | # else 12 | # define FORT_AMRPROFTEST amrproftest_ 13 | # define FORT_AMRPROFTESTINT amrproftestint_ 14 | # endif 15 | 16 | 17 | extern "C" { 18 | void FORT_AMRPROFTEST(); 19 | void FORT_AMRPROFTESTINT(); 20 | } 21 | 22 | #endif 23 | #endif 24 | -------------------------------------------------------------------------------- /Tests/C_BaseLib/BcastClasses/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME = ../../.. 2 | 3 | DEBUG = FALSE 4 | DEBUG = TRUE 5 | 6 | USE_MPI = TRUE 7 | 8 | USE_OMP = FALSE 9 | 10 | PROFILE = FALSE 11 | COMM_PROFILE = FALSE 12 | TRACE_PROFILE = FALSE 13 | 14 | COMP = g++ 15 | FCOMP = gfortran 16 | DIM = 3 17 | PRECISION = DOUBLE 18 | 19 | EBASE = BcastClasses 20 | 21 | CEXE_sources += BcastClasses.cpp 22 | 23 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 24 | 25 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 26 | 27 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 28 | 29 | -------------------------------------------------------------------------------- /Tests/C_BaseLib/TPROFILER_F.H: -------------------------------------------------------------------------------- 1 | #ifndef _AVGDOWN_F_H 2 | #define _AVGDOWN_F_H 3 | 4 | #ifdef BL_LANG_FORT 5 | # define FORT_TESTPROFILER testprofiler 6 | # define FORT_TESTPROFILERINT testprofilerint 7 | #else 8 | # ifdef BL_FORT_USE_UPPERCASE 9 | # define FORT_TESTPROFILER TESTPROFILER 10 | # define FORT_TESTPROFILERINT TESTPROFILERINT 11 | # else 12 | # define FORT_TESTPROFILER testprofiler_ 13 | # define FORT_TESTPROFILERINT testprofilerint_ 14 | # endif 15 | 16 | 17 | extern "C" { 18 | void FORT_TESTPROFILER (); 19 | void FORT_TESTPROFILERINT (); 20 | } 21 | 22 | #endif 23 | #endif 24 | -------------------------------------------------------------------------------- /Tests/C_BaseLib/fillfab.f: -------------------------------------------------------------------------------- 1 | subroutine fillfab(d,nx,ny) 2 | implicit none 3 | 4 | double precision d(nx,ny,2) 5 | integer nx, ny 6 | character :: filename*100 7 | real delx 8 | integer i, j 9 | 10 | filename = './field_full_native_double.dat' 11 | 12 | open(unit=2345, file=trim(filename), status='old', 13 | & form='unformatted') 14 | 15 | read(2345) i, j 16 | read(2345) delx 17 | 18 | if (nx .ne. i) stop 'nx != i' 19 | if (ny .ne. j) stop 'ny != j' 20 | 21 | read(2345) d(1:nx,1:ny,1:2) 22 | close(2345) 23 | 24 | print*, 'i: ', i, 'j: ', j 25 | print*, 'delx: ', delx 26 | 27 | end subroutine fillfab 28 | -------------------------------------------------------------------------------- /Tests/C_BaseLib/t8BIT.cpp: -------------------------------------------------------------------------------- 1 | 2 | // A simple program to read in a MultiFab and write out in 8BIT format. 3 | // 4 | 5 | #include 6 | 7 | #include 8 | 9 | int 10 | main (int argc, char** argv) 11 | { 12 | argc--; argv++; 13 | 14 | FArrayBox::setFormat(FABio::FAB_8BIT); 15 | 16 | for (int i = 0; i < argc; i++) 17 | { 18 | std::cout << "Transforming " << argv[i] << " ... " << std::flush; 19 | 20 | std::string name = argv[i]; 21 | 22 | MultiFab mf; 23 | 24 | VisMF::Read(mf, name); 25 | 26 | VisMF::Write(mf, name, VisMF::OneFilePerCPU, true); 27 | 28 | std::cout << "done" << std::endl; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Tests/C_BaseLib/tDir.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | int 5 | main (int argc, char** argv) 6 | { 7 | if (argc == 2) 8 | { 9 | if (!BoxLib::UtilCreateDirectory(argv[1], 0755)) 10 | { 11 | std::cout << "Utility::UtilCreateDirectory() failed!!!\n"; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Tests/C_BaseLib/tParmParse.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | #include 5 | #include 6 | 7 | int 8 | main (int argc, char** argv) 9 | { 10 | BoxLib::Initialize(argc,argv); 11 | 12 | ParmParse pp; 13 | 14 | Array arr; 15 | 16 | pp.queryarr("arr",arr); 17 | 18 | for (int i = 0; i < arr.size(); i++) 19 | { 20 | std::cout << arr[i] << std::endl; 21 | } 22 | 23 | BoxLib::Finalize(); 24 | } 25 | -------------------------------------------------------------------------------- /Tests/C_BaseLib/tRan.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | // this mersenne_ran_main() outputs first 1000 generated numbers 6 | // compare against the output of mt19937int.out 7 | int 8 | main(int argc, char** argv) 9 | { 10 | BoxLib::Initialize(argc,argv); 11 | BoxLib::mt19937 rr(4357UL); 12 | std::ios::fmtflags ofmtflags = std::cout.setf(std::ios::fixed, std::ios::floatfield); 13 | std::cout << std::setprecision(8); 14 | for ( int j=0; j<1000; j++ ) 15 | { 16 | std::cout << std::setw(10) << rr.u_value() << ' '; 17 | if ( j%5==4 ) std::cout << std::endl; 18 | } 19 | std::cout << std::endl; 20 | BoxLib::Finalize(); 21 | } 22 | -------------------------------------------------------------------------------- /Tests/F_BaseLib/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME := ../.. 2 | 3 | USE_RANDOM = TRUE 4 | 5 | NDEBUG := 6 | MPI := t 7 | OMP := 8 | 9 | COMP := Intel 10 | COMP := gfortran 11 | 12 | MKVERBOSE := t 13 | 14 | PARTICLES := t 15 | 16 | FPARALLEL := ../.. 17 | 18 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 19 | 20 | f90sources += t_main.f90 21 | f90sources += t_knapsack.f90 22 | f90sources += t_bx.f90 23 | f90sources += t_cls.f90 24 | f90sources += t_bxasc.f90 25 | f90sources += t_bl_prof.f90 26 | f90sources += t_particles.f90 27 | 28 | programs += main.f90 29 | f90sources += mt19937ar.f90 30 | 31 | all: $(pnames) 32 | 33 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 34 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 35 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 36 | 37 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 38 | -------------------------------------------------------------------------------- /Tests/F_BaseLib/inputs.domain: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | !test_set = "gr.2_little" 3 | !test_set = "../../data/mglib_grids/gr.2_3x2" 4 | test_set = "../../data/mglib_grids/gr.2_19boxes" 5 | !test_set = "gr.2_big" 6 | !test_set = "../../data/grids/3D_4_level_32x128" 7 | !test_set = "../../data/grids/3D_4_level_96x96x96" 8 | !test_set = "../../data/grids/2D_1_level_512x256" 9 | 10 | test_set_mglib = T 11 | 12 | verbose = T 13 | 14 | pd_xyz = 128, 128, 128 15 | 16 | / 17 | -------------------------------------------------------------------------------- /Tests/F_BaseLib/makefile: -------------------------------------------------------------------------------- 1 | TOP = ..\.. 2 | 3 | #f90sources = $(f90sources) main.f90 4 | 5 | !INCLUDE $(TOP)\mk\NMakedefs.mak 6 | 7 | boxlib_dir=.. 8 | !INCLUDE ..\NPackage.mak 9 | 10 | f90objects = $(f90objects) $(obj_dir)\main.obj 11 | f90objects = $(f90objects) $(obj_dir)\t_main.obj 12 | f90objects = $(f90objects) $(obj_dir)\t_knapsack.obj 13 | 14 | main.exe: $(objects) 15 | $(FOR) $(FFLAGS) $(LDFLAGS) /out:main.exe $(objects) 16 | 17 | !INCLUDE $(TOP)\mk\NMakerules.mak 18 | -------------------------------------------------------------------------------- /Tests/FillBoundaryComparison/GNUmakefile: -------------------------------------------------------------------------------- 1 | 2 | DIM = 3 3 | 4 | COMP = Intel 5 | FCOMP = Intel 6 | 7 | DEBUG = FALSE 8 | 9 | USE_MPI = TRUE 10 | USE_OMP = FALSE 11 | USE_UPCXX = TRUE 12 | 13 | BOXLIB_HOME = ../.. 14 | 15 | EBASE = main 16 | 17 | include ./Make.package 18 | 19 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 20 | 21 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 22 | 23 | INCLUDE_LOCATIONS += $(BOXLIB_HOME)/Src/C_BaseLib 24 | 25 | vpathdir += $(BOXLIB_HOME)/Src/C_BaseLib 26 | 27 | vpath %.c : . $(vpathdir) 28 | vpath %.h : . $(vpathdir) 29 | vpath %.cpp : . $(vpathdir) 30 | vpath %.H : . $(vpathdir) 31 | vpath %.F : . $(vpathdir) 32 | vpath %.f : . $(vpathdir) 33 | vpath %.f90 : . $(vpathdir) 34 | 35 | all: $(executable) 36 | 37 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 38 | -------------------------------------------------------------------------------- /Tests/FillBoundaryComparison/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | -------------------------------------------------------------------------------- /Tests/IOBenchmark/inputs.dss: -------------------------------------------------------------------------------- 1 | nfiles = 4 2 | maxgrid = 64 3 | ncomps = 1 4 | nboxes = 64 5 | nboxes = 16 6 | ntimes = 1 7 | raninit = false 8 | mb2 = true 9 | 10 | rbuffsize = 16000 11 | wbuffsize = 32000 12 | 13 | dssnfiletest = true 14 | filetests = false 15 | dirtests = false 16 | testreadmf = false 17 | 18 | groupsets = false 19 | setbuf = false 20 | 21 | usesingleread = true 22 | usesinglewrite = true 23 | checkfpositions = true 24 | pifstreams = true 25 | 26 | dssnfileitertest = true 27 | -------------------------------------------------------------------------------- /Tests/IOBenchmark/inputs.nft: -------------------------------------------------------------------------------- 1 | nfiles = 5 2 | maxgrid = 64 3 | ncomps = 1 4 | nboxes = 64 5 | nboxes = 16 6 | ntimes = 1 7 | raninit = false 8 | mb2 = true 9 | 10 | rbuffsize = 16000 11 | wbuffsize = 32000 12 | 13 | filetests = false 14 | dirtests = false 15 | testreadmf = false 16 | 17 | groupsets = false 18 | setbuf = false 19 | 20 | usesingleread = true 21 | usesinglewrite = true 22 | checkfpositions = true 23 | pifstreams = true 24 | 25 | nfileitertest = true 26 | dssnfileitertest = false 27 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME := ../../.. 2 | 3 | PRECISION = DOUBLE 4 | 5 | DEBUG = FALSE 6 | DEBUG = TRUE 7 | 8 | DIM = 3 9 | DIM = 2 10 | 11 | COMP =g++ 12 | FCOMP=gfortran 13 | 14 | USE_MPI=FALSE 15 | 16 | EBASE = main 17 | 18 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 19 | 20 | CEXE_sources += $(EBASE).cpp 21 | 22 | include ./Make.package 23 | 24 | include $(BOXLIB_HOME)/Src/C_BoundaryLib/Make.package 25 | include $(BOXLIB_HOME)/Src/LinearSolvers/C_CellMG/Make.package 26 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 27 | include $(BOXLIB_HOME)/Src/C_AmrCoreLib/Make.package 28 | 29 | include $(BOXLIB_HOME)/Src/LinearSolvers/C_to_F_MG/Make.package 30 | include $(BOXLIB_HOME)/Src/LinearSolvers/F_MG/FParallelMG.mak 31 | include $(BOXLIB_HOME)/Src/F_BaseLib/FParallelMG.mak 32 | 33 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 34 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/Make.package: -------------------------------------------------------------------------------- 1 | 2 | CEXE_sources += MacOperator.cpp MacBndry.cpp 3 | CEXE_headers += MacOperator.H 4 | FEXE_headers += COEF_F.H 5 | FEXE_sources += MACPROJ_$(DIM)D.F MACOPERATOR_$(DIM)D.F COEF_$(DIM)D.F 6 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/Palette: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoxLib-Codes/BoxLib/330b14363148ebb0b85d1ffd59d07874ddc79e6d/Tests/LinearSolvers/C_CellMG/Palette -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/amrvis.defaults: -------------------------------------------------------------------------------- 1 | palette Palette 2 | initialderived blank 3 | initialscale 3 4 | numberformat %7.5f 5 | numberformat %12.8f 6 | maxpixmapsize 1000000 7 | reservesystemcolors 24 8 | showboxes TRUE 9 | windowheight 550 10 | windowwidth 800 11 | fabordering alpha 12 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/dumpi/NOTE: -------------------------------------------------------------------------------- 1 | The original MultiGrid runs I did from which I passed DUMPI trace files to 2 | Joe Kenny was done with an early version of ComparisonTest, not C_CellMG. 3 | ComparisonTest has been changed so much that I fixed up C_CellMG so that 4 | it more-or-less does an equivalent problem. Not exactly the same, but 5 | close enough to illustrate what we do. 6 | 7 | If anyone wants to duplicate exactly the original DUMPI trace files: 8 | 9 | git checkout 22b9473cd7a908cfac60d6c4ca6613169c16721d 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/dumpi/inputs.3d.4096core: -------------------------------------------------------------------------------- 1 | 2 | geometry.coord_sys = 0 3 | 4 | geometry.prob_lo = 0. 0. 0. 5 | 6 | geometry.prob_hi = 1. 1. 1. 7 | 8 | geometry.is_periodic = 1 1 1 9 | 10 | dump_MF=0 11 | 12 | n_cell = 1024 13 | 14 | max_grid_size = 64 15 | 16 | tol = 1.e-8 17 | 18 | mg.v = 2 19 | cg.v = 0 20 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/dumpi/inputs.3d.512core: -------------------------------------------------------------------------------- 1 | 2 | geometry.coord_sys = 0 3 | 4 | geometry.prob_lo = 0. 0. 0. 5 | 6 | geometry.prob_hi = 1. 1. 1. 7 | 8 | geometry.is_periodic = 1 1 1 9 | 10 | dump_MF=0 11 | 12 | n_cell = 512 13 | 14 | max_grid_size = 64 15 | 16 | tol = 1.e-8 17 | 18 | mg.v = 2 19 | cg.v = 0 20 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/dumpi/inputs.3d.64core: -------------------------------------------------------------------------------- 1 | 2 | geometry.coord_sys = 0 3 | 4 | geometry.prob_lo = 0. 0. 0. 5 | 6 | geometry.prob_hi = 1. 1. 1. 7 | 8 | geometry.is_periodic = 1 1 1 9 | 10 | dump_MF=0 11 | 12 | n_cell = 256 13 | 14 | max_grid_size = 64 15 | 16 | tol = 1.e-8 17 | 18 | mg.v = 2 19 | cg.v = 0 20 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/dumpi/inputs.3d.8core: -------------------------------------------------------------------------------- 1 | 2 | geometry.coord_sys = 0 3 | 4 | geometry.prob_lo = 0. 0. 0. 5 | 6 | geometry.prob_hi = 1. 1. 1. 7 | 8 | geometry.is_periodic = 1 1 1 9 | 10 | dump_MF=0 11 | 12 | n_cell = 128 13 | 14 | max_grid_size = 64 15 | 16 | tol = 1.e-8 17 | 18 | mg.v = 2 19 | cg.v = 0 20 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_19boxes: -------------------------------------------------------------------------------- 1 | ((0,0)(511,255)(0,0)) 19 2 | ((0,72)(135,119)(0,0)) 3 | ((288,80)(399,119)(0,0)) 4 | ((160,48)(215,71)(0,0)) 5 | ((0,136)(135,183)(0,0)) 6 | ((400,72)(511,119)(0,0)) 7 | ((152,72)(231,103)(0,0)) 8 | ((280,144)(351,167)(0,0)) 9 | ((496,128)(511,143)(0,0)) 10 | ((280,120)(383,143)(0,0)) 11 | ((152,104)(191,207)(0,0)) 12 | ((352,144)(511,183)(0,0)) 13 | ((456,120)(487,143)(0,0)) 14 | ((384,120)(391,127)(0,0)) 15 | ((192,152)(231,175)(0,0)) 16 | ((400,128)(431,143)(0,0)) 17 | ((384,136)(399,143)(0,0)) 18 | ((192,176)(207,207)(0,0)) 19 | ((432,136)(455,143)(0,0)) 20 | ((208,176)(231,191)(0,0)) 21 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_2x2_a: -------------------------------------------------------------------------------- 1 | ((0,0)(31,63)(0,0)) 2 | 4 3 | ((0,0)(15,31)(0,0)) 4 | ((16,0)(31,31)(0,0)) 5 | ((0,32)(15,63)(0,0)) 6 | ((16,32)(31,63)(0,0)) 7 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_2x2_b: -------------------------------------------------------------------------------- 1 | ((0,0)(63,63)(0,0)) 2 | 2 3 | ((0,0)(31,63)(0,0)) 4 | ((32,0)(63,63)(0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_2x2_c: -------------------------------------------------------------------------------- 1 | ((0,0)(63,63)(0,0)) 2 | 4 3 | ((0,0)(31,31)(0,0)) 4 | ((32,0)(63,31)(0,0)) 5 | ((0,32)(31,63)(0,0)) 6 | ((32,32)(63,63)(0,0)) 7 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_3boxes_a: -------------------------------------------------------------------------------- 1 | ((0,0)(31,47)(0,0)) 2 | 3 3 | ((0,0)(15,31)(0,0)) 4 | ((16,0)(31,31)(0,0)) 5 | ((0,32)(31,47)(0,0)) 6 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_3boxes_b: -------------------------------------------------------------------------------- 1 | ((0,0)(63,63)(0,0)) 2 | 3 3 | ((0,0)(31,63)(0,0)) 4 | ((32,0)(63,31)(0,0)) 5 | ((32,32)(63,63)(0,0)) 6 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_3boxes_c: -------------------------------------------------------------------------------- 1 | ((0,0)(63,63)(0,0)) 2 | 3 3 | ((0,0)(15,63)(0,0)) 4 | ((16,0)(63,31)(0,0)) 5 | ((16,32)(63,63)(0,0)) 6 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_3x2: -------------------------------------------------------------------------------- 1 | ((0,0)(31,47)(0,0)) 2 | 6 3 | ((0,0)(15,15)(0,0)) 4 | ((16,0)(31,15)(0,0)) 5 | ((0,16)(15,31)(0,0)) 6 | ((16,16)(31,31)(0,0)) 7 | ((0,32)(15,47)(0,0)) 8 | ((16,32)(31,47)(0,0)) 9 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_big: -------------------------------------------------------------------------------- 1 | ((0,0)(63,63)(0,0)) 2 | 1 3 | ((0,0)(63,63)(0,0)) 4 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_disjoint_a: -------------------------------------------------------------------------------- 1 | ((0,0)(31,15)(0,0)) 2 | 2 3 | ((0,0)(7,15)(0,0)) 4 | ((14,0)(31,7)(0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_disjoint_b: -------------------------------------------------------------------------------- 1 | ((0,0)(31,31)(0,0)) 2 | 2 3 | ((0,0)(7,7)(0,0)) 4 | ((24,24)(31,31)(0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_disjoint_c: -------------------------------------------------------------------------------- 1 | ((0,0)(15,15)(0,0)) 2 | 2 3 | ((0,0)(7,7)(0,0)) 4 | ((8,8)(15,15)(0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_disjoint_d: -------------------------------------------------------------------------------- 1 | ((0,0)(15,15)(0,0)) 2 | 3 3 | ((0,0)(7,7)(0,0)) 4 | ((8,0)(15,7)(0,0)) 5 | ((0,12)(15,15)(0,0)) 6 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_disjoint_e: -------------------------------------------------------------------------------- 1 | ((0,0)(15,11)(0,0)) 2 | 2 3 | ((0,0)(7,7)(0,0)) 4 | ((8,4)(15,11)(0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_small_a: -------------------------------------------------------------------------------- 1 | ((0,0)(7,7)(0,0)) 2 | 1 3 | ((0,0)(7,7)(0,0)) 4 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_small_b: -------------------------------------------------------------------------------- 1 | ((0,0)(7,15)(0,0)) 2 | 2 3 | ((0,0)(7,7)(0,0)) 4 | ((0,8)(7,15)(0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_stack_a: -------------------------------------------------------------------------------- 1 | ((0,0)(15,47)(0,0)) 2 | 2 3 | ((0,0)(15,31)(0,0)) 4 | ((0,32)(15,47)(0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_stack_b: -------------------------------------------------------------------------------- 1 | ((0,0)(47,31)(0,0)) 2 | 2 3 | ((0,0)(31,31)(0,0)) 4 | ((32,0)(47,31)(0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_stack_c: -------------------------------------------------------------------------------- 1 | ((0,0)(15,47)(0,0)) 2 | 2 3 | ((0,0)(15,15)(0,0)) 4 | ((0,16)(15,47)(0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.2_stack_d: -------------------------------------------------------------------------------- 1 | ((0,0)(15,63)(0,0)) 2 | 2 3 | ((0,0)(15,31)(0,0)) 4 | ((0,32)(15,63)(0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.3_2boxes_a: -------------------------------------------------------------------------------- 1 | ((0,0,0)(7,7,15)(0,0,0)) 2 | 2 3 | ((0,0,0)(7,7,7)(0,0,0)) 4 | ((0,0,8)(7,7,15)(0,0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.3_2x3x4: -------------------------------------------------------------------------------- 1 | ((0,0,0)(15,23,31)(0,0,0)) 2 | 24 3 | ((0,0,0)(7,7,7)(0,0,0)) 4 | ((8,0,0)(15,7,7)(0,0,0)) 5 | ((0,8,0)(7,15,7)(0,0,0)) 6 | ((8,8,0)(15,15,7)(0,0,0)) 7 | ((0,16,0)(7,23,7)(0,0,0)) 8 | ((8,16,0)(15,23,7)(0,0,0)) 9 | ((0,0,8)(7,7,15)(0,0,0)) 10 | ((8,0,8)(15,7,15)(0,0,0)) 11 | ((0,8,8)(7,15,15)(0,0,0)) 12 | ((8,8,8)(15,15,15)(0,0,0)) 13 | ((0,16,8)(7,23,15)(0,0,0)) 14 | ((8,16,8)(15,23,15)(0,0,0)) 15 | ((0,0,16)(7,7,23)(0,0,0)) 16 | ((8,0,16)(15,7,23)(0,0,0)) 17 | ((0,8,16)(7,15,23)(0,0,0)) 18 | ((8,8,16)(15,15,23)(0,0,0)) 19 | ((0,16,16)(7,23,23)(0,0,0)) 20 | ((8,16,16)(15,23,23)(0,0,0)) 21 | ((0,0,24)(7,7,31)(0,0,0)) 22 | ((8,0,24)(15,7,31)(0,0,0)) 23 | ((0,8,24)(7,15,31)(0,0,0)) 24 | ((8,8,24)(15,15,31)(0,0,0)) 25 | ((0,16,24)(7,23,31)(0,0,0)) 26 | ((8,16,24)(15,23,31)(0,0,0)) 27 | 28 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.3_big: -------------------------------------------------------------------------------- 1 | ((0,0,0)(63,63,63)(0,0,0)) 2 | 1 3 | ((0,0,0)(63,63,63)(0,0,0)) 4 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.3_disjoint_a: -------------------------------------------------------------------------------- 1 | ((0,0,0)(15,15,31)(0,0,0)) 2 | 2 3 | ((0,0,0)(15,15,15)(0,0,0)) 4 | ((8,8,24)(15,15,31)(0,0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.3_disjoint_b: -------------------------------------------------------------------------------- 1 | ((0,0,0)(7,7,23)(0,0,0)) 2 | 2 3 | ((0,0,0)(7,7,7)(0,0,0)) 4 | ((0,0,16)(7,7,23)(0,0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.3_disjoint_c: -------------------------------------------------------------------------------- 1 | ((0,0,0)(15,23,23)(0,0,0)) 2 | 4 3 | ((0,0,0)(7,7,7)(0,0,0)) 4 | ((8,16,0)(15,23,7)(0,0,0)) 5 | ((0,0,16)(7,7,23)(0,0,0)) 6 | ((8,16,16)(15,23,23)(0,0,0)) 7 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.3_shiftedUp: -------------------------------------------------------------------------------- 1 | ((0,0,0)(15,23,31)(0,0,0)) 2 | 2 3 | ((0,8,0)(15,23,15)(0,0,0)) 4 | ((0,0,16)(15,15,31)(0,0,0)) 5 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.3_small_a: -------------------------------------------------------------------------------- 1 | ((0,0,0)(7,7,7)(0,0,0)) 2 | 1 3 | ((0,0,0)(7,7,7)(0,0,0)) 4 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/gr.3_stack_a: -------------------------------------------------------------------------------- 1 | ((0,0,0)(15,23,15)(0,0,0)) 2 | 5 3 | ((0,0,0)(15,15,15)(0,0,0)) 4 | ((0,16,0)(7,23,7)(0,0,0)) 5 | ((8,16,0)(15,23,7)(0,0,0)) 6 | ((0,16,8)(7,23,15)(0,0,0)) 7 | ((8,16,8)(15,23,15)(0,0,0)) 8 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_19boxes: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_19boxes 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 512.0 256.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_256squared: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_256squared 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 1.0 1.0 5 | ABec=t 6 | mg.v=2 7 | mg.usecg=0 8 | Lp.maxorder=4 9 | DistributionMapping.verbose=1 10 | DistributionMapping.strategy=SFC 11 | DistributionMapping.sfc_threshold=1 12 | DistributionMapping.use_least_used_cpus=0 13 | 14 | mg.v = 2 15 | cg.v = 2 16 | geometry.is_periodic = 1 1 1 17 | dump_MF = false 18 | mg.numLevelsMAX=2 19 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_2x2_a: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_2x2_a 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 32.0 64.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | 9 | DistributionMapping.verbose=1 10 | DistributionMapping.do_not_minimize_comm_costs=0 11 | DistributionMapping.strategy=KNAPSACK 12 | DistributionMapping.strategy=SFC 13 | DistributionMapping.sfc_threshold=8 14 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_2x2_b: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_2x2_b 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 64.0 64.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_2x2_c: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_2x2_c 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 64.0 64.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_3boxes_a: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_3boxes_a 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 32.0 48.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_3boxes_b: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_3boxes_b 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 64.0 64.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_3boxes_c: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_3boxes_c 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 64.0 64.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_3x2: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_3x2 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 32.0 48.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_big: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_big 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 64.0 64.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | 9 | DistributionMapping.verbose=1 10 | DistributionMapping.do_not_minimize_comm_costs=0 11 | DistributionMapping.strategy=KNAPSACK 12 | DistributionMapping.strategy=SFC 13 | DistributionMapping.sfc_threshold=8 14 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_disjoint_a: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_disjoint_a 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 32.0 16.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_disjoint_b: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_disjoint_b 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 32.0 32.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_disjoint_c: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_disjoint_c 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 16.0 16.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_disjoint_d: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_disjoint_d 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 16.0 16.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_disjoint_e: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_disjoint_e 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 16.0 12.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_small_a: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_small_a 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 8.0 8.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_small_b: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_small_b 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 8.0 16.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_stack_a: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_stack_a 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 16.0 48.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_stack_b: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_stack_b 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 48.0 32.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_stack_c: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_stack_c 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 16.0 48.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2_stack_d: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_stack_d 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 16.0 64.0 5 | #geometry.is_periodic = 1 0 6 | geometry.is_periodic = 0 1 7 | mg.v = 2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.2per_2x2_c: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.2_2x2_c 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 4 | geometry.prob_hi = 32.0 32.0 5 | #-geometry.period_0 6 | #-geometry.period_1 7 | DistributionMapping.verbose=1 8 | DistributionMapping.do_not_minimize_comm_costs=0 9 | DistributionMapping.strategy=KNAPSACK 10 | DistributionMapping.strategy=SFC 11 | DistributionMapping.sfc_threshold=8 12 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_128cubed: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_128cubed 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 1.0 1.0 1.0 5 | ABec=t 6 | mg.v=2 7 | mg.usecg = 0 8 | Lp.maxorder=4 9 | DistributionMapping.verbose=1 10 | DistributionMapping.strategy=SFC 11 | DistributionMapping.sfc_threshold=1 12 | DistributionMapping.use_least_used_cpus=0 13 | 14 | mg.v = 2 15 | cg.v = 2 16 | geometry.is_periodic = 1 1 1 17 | dump_MF = false 18 | 19 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_256cubed: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_256cubed 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 1.0 1.0 1.0 5 | ABec=t 6 | mg.v=2 7 | mg.usecg = 0 8 | Lp.maxorder=4 9 | DistributionMapping.verbose=1 10 | DistributionMapping.strategy=SFC 11 | DistributionMapping.sfc_threshold=1 12 | DistributionMapping.use_least_used_cpus=0 13 | 14 | mg.v = 2 15 | cg.v = 2 16 | geometry.is_periodic = 1 1 1 17 | dump_MF = false 18 | 19 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_2boxes_a: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_2boxes_a 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 8.0 8.0 16.0 5 | DistributionMapping.verbose=1 6 | DistributionMapping.do_not_minimize_comm_costs=0 7 | DistributionMapping.strategy=KNAPSACK 8 | DistributionMapping.strategy=SFC 9 | DistributionMapping.sfc_threshold=8 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_2x3x4: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_2x3x4 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 16.0 24.0 32.0 5 | DistributionMapping.verbose=1 6 | DistributionMapping.do_not_minimize_comm_costs=0 7 | DistributionMapping.strategy=KNAPSACK 8 | DistributionMapping.strategy=SFC 9 | DistributionMapping.sfc_threshold=8 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_512cubed: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_512cubed 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 1.0 1.0 1.0 5 | ABec=t 6 | mg.v=2 7 | mg.usecg = 0 8 | Lp.maxorder=4 9 | DistributionMapping.verbose=1 10 | DistributionMapping.strategy=SFC 11 | DistributionMapping.sfc_threshold=1 12 | DistributionMapping.use_least_used_cpus=0 13 | 14 | mg.v = 2 15 | cg.v = 2 16 | geometry.is_periodic = 1 1 1 17 | dump_MF = false 18 | 19 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_big: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_big 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 64.0 64.0 64.0 5 | DistributionMapping.verbose=1 6 | DistributionMapping.do_not_minimize_comm_costs=0 7 | DistributionMapping.strategy=KNAPSACK 8 | DistributionMapping.strategy=SFC 9 | DistributionMapping.sfc_threshold=8 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_disjoint_a: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_disjoint_a 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 16.0 16.0 32.0 5 | DistributionMapping.verbose=1 6 | DistributionMapping.do_not_minimize_comm_costs=0 7 | DistributionMapping.strategy=KNAPSACK 8 | DistributionMapping.strategy=SFC 9 | DistributionMapping.sfc_threshold=8 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_disjoint_b: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_disjoint_b 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 8.0 8.0 24.0 5 | DistributionMapping.verbose=1 6 | DistributionMapping.do_not_minimize_comm_costs=0 7 | DistributionMapping.strategy=KNAPSACK 8 | DistributionMapping.strategy=SFC 9 | DistributionMapping.sfc_threshold=8 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_disjoint_c: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_disjoint_c 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 16.0 24.0 24.0 5 | DistributionMapping.verbose=1 6 | DistributionMapping.do_not_minimize_comm_costs=0 7 | DistributionMapping.strategy=KNAPSACK 8 | DistributionMapping.strategy=SFC 9 | DistributionMapping.sfc_threshold=8 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_mac_tst: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_mac_tst 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 0.16 0.8 .16 5 | 6 | use_cg_solve = 0 7 | Density = 3 8 | dt = 0.0001543470841 9 | mac_tol = 1e-12 10 | mac_abs_tol = 1e-14 11 | rhs_scale = 12957.80877 12 | 13 | dump_norm = true 14 | 15 | mg.numLevelsMAX=1 16 | mg.v = 4 17 | mg.usecg = 1 18 | mg.nu_0 = 1 19 | mg.nu_1 = 4 20 | mg.nu_2 = 4 21 | mg.nu_f = 40 22 | mg.maxiter = 100 23 | 24 | cg.maxiter = 40 # default 40 25 | cg.unstable_criterion = 10. # default 10. 26 | cg.v = 4 27 | 28 | DistributionMapping.verbose=1 29 | DistributionMapping.do_not_minimize_comm_costs=0 30 | DistributionMapping.strategy=KNAPSACK 31 | DistributionMapping.strategy=SFC 32 | DistributionMapping.sfc_threshold=8 33 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_shiftedUp: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_shiftedUp 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 16.0 24.0 32.0 5 | DistributionMapping.verbose=1 6 | DistributionMapping.do_not_minimize_comm_costs=0 7 | DistributionMapping.strategy=KNAPSACK 8 | DistributionMapping.strategy=SFC 9 | DistributionMapping.sfc_threshold=8 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_small_a: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_small_a 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 8.0 8.0 8.0 5 | DistributionMapping.verbose=1 6 | DistributionMapping.do_not_minimize_comm_costs=0 7 | DistributionMapping.strategy=KNAPSACK 8 | DistributionMapping.strategy=SFC 9 | DistributionMapping.sfc_threshold=8 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3_stack_a: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_stack_a 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 16.0 24.0 16.0 5 | DistributionMapping.verbose=1 6 | DistributionMapping.do_not_minimize_comm_costs=0 7 | DistributionMapping.strategy=KNAPSACK 8 | DistributionMapping.strategy=SFC 9 | DistributionMapping.sfc_threshold=8 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.3per_2x3x4: -------------------------------------------------------------------------------- 1 | boxes = grids/gr.3_2x3x4 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 16.0 24.0 32.0 5 | -geometry.period_0 6 | -geometry.period_1 7 | -geometry.period_2 8 | DistributionMapping.verbose=1 9 | DistributionMapping.do_not_minimize_comm_costs=0 10 | DistributionMapping.strategy=KNAPSACK 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=8 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.grids.15456: -------------------------------------------------------------------------------- 1 | boxes = grids/grids.15456 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 2048.0 2048.0 2048.0 5 | ABec=t 6 | mg.v=2 7 | mg.cg_solver=1 8 | cg.cg_solver=1 9 | Lp.maxorder=4 10 | DistributionMapping.verbose=1 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=1 13 | DistributionMapping.use_least_used_cpus=0 14 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.grids.213: -------------------------------------------------------------------------------- 1 | boxes = grids/grids.213 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 240.0 160.0 320.0 5 | ABec=t 6 | mg.v=2 7 | mg.cg_solver=1 8 | cg.cg_solver=1 9 | Lp.maxorder=4 10 | DistributionMapping.verbose=1 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=1 13 | DistributionMapping.use_least_used_cpus=0 14 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.grids.25600: -------------------------------------------------------------------------------- 1 | boxes = grids/grids.25600 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 2048.0 2048.0 2048.0 5 | ABec=t 6 | mg.v=2 7 | mg.cg_solver=1 8 | cg.cg_solver=1 9 | Lp.maxorder=3 10 | DistributionMapping.verbose=1 11 | DistributionMapping.do_not_minimize_comm_costs=0 12 | DistributionMapping.strategy=SFC 13 | DistributionMapping.sfc_threshold=1 14 | DistributionMapping.use_least_used_cpus=0 15 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/grids/in.grids.5034: -------------------------------------------------------------------------------- 1 | boxes = grids/grids.5034 2 | geometry.coord_sys = 0 3 | geometry.prob_lo = 0.0 0.0 0.0 4 | geometry.prob_hi = 960.0 640.0 1280.0 5 | ABec=t 6 | mg.v=2 7 | mg.cg_solver=1 8 | cg.cg_solver=1 9 | Lp.maxorder=4 10 | DistributionMapping.verbose=1 11 | DistributionMapping.strategy=SFC 12 | DistributionMapping.sfc_threshold=1 13 | DistributionMapping.use_least_used_cpus=0 14 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/inputs.2d: -------------------------------------------------------------------------------- 1 | geometry.coord_sys = 0 # 0=cartesian, 1=r-z 2 | geometry.prob_lo = 0. 0. 3 | geometry.prob_hi = 1. 1. 4 | geometry.is_periodic = 0 0 # for each direction, 1=periodic 5 | dump_MF=1 # dump RHS and soln to a "plotfile" named soln_pf 6 | boxes=grids/gr.2_19boxes # work on this set of boxes 7 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/inputs.3d: -------------------------------------------------------------------------------- 1 | geometry.coord_sys = 0 # 0=cartesian 2 | geometry.prob_lo = 0. 0. 0. 3 | geometry.prob_hi = 1. 1. 1. 4 | geometry.is_periodic = 0 0 0 # for each direction, 1=periodic 5 | dump_MF=1 # dump RHS and soln to a "plotfile" named soln_pf 6 | boxes=grids/grids.213 # work on this set of boxes 7 | mg.v=1 8 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_CellMG/vpramps.dat: -------------------------------------------------------------------------------- 1 | 1 2 | 2 3 | 5 4 | 0 42 140 220 255 5 | 0.0 0.0 0.1 0.8 1.0 6 | 4 7 | 0 4 128 255 8 | 0.0 0.6 0.8 1.0 9 | 0.10 10 | 0.90 11 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/Make.package: -------------------------------------------------------------------------------- 1 | # 2 | # tensorMG test sources 3 | # 4 | CEXE_sources += TestMCViscBndry.cpp testVI.cpp 5 | CEXE_headers += TestMCViscBndry.H 6 | 7 | FEXE_sources += main_$(DIM)D.F 8 | FEXE_headers += main_F.H 9 | 10 | INCLUDE_LOCATIONS += . 11 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/Palette: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoxLib-Codes/BoxLib/330b14363148ebb0b85d1ffd59d07874ddc79e6d/Tests/LinearSolvers/C_TensorMG/Palette -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/TestMCViscBndry.H: -------------------------------------------------------------------------------- 1 | #ifndef _MCVISCBNDRY_H_ 2 | #define _MCVISCBNDRY_H_ 3 | 4 | #include 5 | #include 6 | 7 | class MCViscBndry : public MCInterpBndryData 8 | { 9 | public: 10 | MCViscBndry() : MCInterpBndryData() {} 11 | 12 | MCViscBndry(const BoxArray& _grids, const Geometry& geom) : 13 | #if BL_SPACEDIM == 2 14 | MCInterpBndryData(_grids,4,geom) {}; 15 | #elif BL_SPACEDIM == 3 16 | MCInterpBndryData(_grids,3*(1+3),geom) {}; 17 | #endif 18 | 19 | virtual void setBndryConds (const BCRec& phys_bc, 20 | int ratio, 21 | int comp=0); 22 | void setHomogValues(); 23 | }; 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/amrvis.defaults: -------------------------------------------------------------------------------- 1 | palette Palette 2 | initialderived state_0 3 | initialscale 8 4 | numberformat %8.5f 5 | maxpixmapsize 200000 6 | reservesystemcolors 24 7 | showboxes TRUE 8 | windowheight 650 9 | windowwidth 700 10 | filetype newplt 11 | fabordering alpha 12 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/grids/gr.3_2x3x4: -------------------------------------------------------------------------------- 1 | ((0,0,0)(15,23,31)(0,0,0)) 2 | (24 0 3 | ((0,0,0)(7,7,7)(0,0,0)) 4 | ((8,0,0)(15,7,7)(0,0,0)) 5 | ((0,8,0)(7,15,7)(0,0,0)) 6 | ((8,8,0)(15,15,7)(0,0,0)) 7 | ((0,16,0)(7,23,7)(0,0,0)) 8 | ((8,16,0)(15,23,7)(0,0,0)) 9 | ((0,0,8)(7,7,15)(0,0,0)) 10 | ((8,0,8)(15,7,15)(0,0,0)) 11 | ((0,8,8)(7,15,15)(0,0,0)) 12 | ((8,8,8)(15,15,15)(0,0,0)) 13 | ((0,16,8)(7,23,15)(0,0,0)) 14 | ((8,16,8)(15,23,15)(0,0,0)) 15 | ((0,0,16)(7,7,23)(0,0,0)) 16 | ((8,0,16)(15,7,23)(0,0,0)) 17 | ((0,8,16)(7,15,23)(0,0,0)) 18 | ((8,8,16)(15,15,23)(0,0,0)) 19 | ((0,16,16)(7,23,23)(0,0,0)) 20 | ((8,16,16)(15,23,23)(0,0,0)) 21 | ((0,0,24)(7,7,31)(0,0,0)) 22 | ((8,0,24)(15,7,31)(0,0,0)) 23 | ((0,8,24)(7,15,31)(0,0,0)) 24 | ((8,8,24)(15,15,31)(0,0,0)) 25 | ((0,16,24)(7,23,31)(0,0,0)) 26 | ((8,16,24)(15,23,31)(0,0,0)) 27 | 28 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/grids/gr16.dog: -------------------------------------------------------------------------------- 1 | ((-1,-1,-1)(16,16,16)(0,0,0)) 2 | (1 0 3 | ((0,0,0)(15,15,15)(0,0,0)) 4 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/grids/gr16x8.dog: -------------------------------------------------------------------------------- 1 | ((-1,-1,-1)(32,32,32)(0,0,0)) 2 | (8 0 3 | ((0,0,0)(15,15,15)(0,0,0)) 4 | ((0,16,0)(15,31,15)(0,0,0)) 5 | ((16,0,0)(31,15,15)(0,0,0)) 6 | ((16,16,0)(31,31,15)(0,0,0)) 7 | ((0,0,16)(15,15,31)(0,0,0)) 8 | ((0,16,16)(15,31,31)(0,0,0)) 9 | ((16,0,16)(31,15,31)(0,0,0)) 10 | ((16,16,16)(31,31,31)(0,0,0)) 11 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/grids/gr2D: -------------------------------------------------------------------------------- 1 | ((0,0)(63,63)(0,0)) 2 | (4 0 3 | ((0,0)(31,31)(0,0)) 4 | ((32,0)(63,31)(0,0)) 5 | ((0,32)(31,63)(0,0)) 6 | ((32,32)(63,63)(0,0)) 7 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/grids/gr32.dog: -------------------------------------------------------------------------------- 1 | ((-1,-1,-1)(32,32,32)(0,0,0)) 2 | (1 0 3 | ((0,0,0)(31,31,31)(0,0,0)) 4 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/grids/gr32x8.dog: -------------------------------------------------------------------------------- 1 | ((-1,-1,-1)(64,64,64)(0,0,0)) 2 | (8 0 3 | ((0,0,0)(31,31,31)(0,0,0)) 4 | ((0,32,0)(31,63,31)(0,0,0)) 5 | ((32,0,0)(63,31,31)(0,0,0)) 6 | ((32,32,0)(63,63,31)(0,0,0)) 7 | ((0,0,32)(31,31,63)(0,0,0)) 8 | ((0,32,32)(31,63,63)(0,0,0)) 9 | ((32,0,32)(63,31,63)(0,0,0)) 10 | ((32,32,32)(63,63,63)(0,0,0)) 11 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/grids/gr64.dog: -------------------------------------------------------------------------------- 1 | ((-1,-1,-1)(64,64,64)(0,0,0)) 2 | (1 0 3 | ((0,0,0)(63,63,63)(0,0,0)) 4 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/grids/gr8.dog: -------------------------------------------------------------------------------- 1 | ((-1,-1,-1)(8,8,8)(0,0,0)) 2 | (1 0 3 | ((0,0,0)(7,7,7)(0,0,0)) 4 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/inputs: -------------------------------------------------------------------------------- 1 | geometry.coord_sys = 0 # 0 => cart, 1 => RZ 2 | geometry.prob_lo = -0.0625 -0.0625 -0.0625 3 | geometry.prob_hi = 1.0625 1.0625 1.0625 4 | cg.v = 2 5 | cg.maxiter = 500 6 | mg.v = 2 7 | mg.usecg = 0 8 | boxes = grids/gr16.dog 9 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/inputs2D: -------------------------------------------------------------------------------- 1 | geometry.coord_sys = 0 # 0 => cart, 1 => RZ 2 | geometry.prob_lo = 0 0 3 | geometry.prob_hi = 1 1 4 | geometry.is_periodic = 0 1 5 | cg.v = 2 6 | cg.maxiter = 500 7 | mg.v = 2 8 | mg.usecg = 0 9 | cg.maxiter = 500 10 | boxes = grids/gr2D 11 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/inputs3D: -------------------------------------------------------------------------------- 1 | geometry.coord_sys = 0 # 0 => cart, 1 => RZ 2 | geometry.prob_lo = 0 0 0 3 | geometry.prob_hi = 1 1 1 4 | cg.v = 2 5 | cg.maxiter = 500 6 | mg.v = 2 7 | mg.usecg = 0 8 | mg.maxiter = 500 9 | #boxes = grids/gr.3_2x3x4 10 | lo_bc = 4 4 1 11 | hi_bc = 4 4 2 12 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/inputs8: -------------------------------------------------------------------------------- 1 | geometry.coord_sys = 0 # 0 => cart, 1 => RZ 2 | geometry.prob_lo = -0.125 -0.125 -0.125 3 | geometry.prob_hi = 1.125 1.125 1.125 4 | cg.v = 2 5 | cg.maxiter = 500 6 | mg.v = 2 7 | mg.usecg = 0 8 | boxes = grids/gr8.dog 9 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/probin: -------------------------------------------------------------------------------- 1 | $fortin 2 | 3 | cux = 1 4 | cuy = 0 5 | cuz = 0 6 | 7 | cvx = 0 8 | cvy = 0 9 | cvz = 0 10 | 11 | cwx = 0 12 | cwy = 0 13 | cwz = 1 14 | 15 | alpha = 1 16 | beta = 1 17 | gamma = 1 18 | 19 | $end 20 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/C_TensorMG/vpramps.dat: -------------------------------------------------------------------------------- 1 | 1 2 | 2 3 | 5 4 | 0 42 140 220 255 5 | 0.0 0.0 0.5 0.8 1.0 6 | 4 7 | 0 4 128 255 8 | 0.0 0.6 0.8 1.0 9 | 0.10 10 | 0.90 11 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/ComparisonTest/COEF_F.H: -------------------------------------------------------------------------------- 1 | #ifndef _COEFF_H_ 2 | #define _COEFF_H_ 3 | 4 | #include 5 | 6 | #if defined(BL_LANG_FORT) 7 | #define FORT_SET_COEF set_coef 8 | #else 9 | 10 | #if defined(BL_FORT_USE_UPPERCASE) 11 | #define FORT_SET_COEF SET_COEF 12 | #elif defined(BL_FORT_USE_LOWERCASE) 13 | #define FORT_SET_COEF set_coef 14 | #elif defined(BL_FORT_USE_UNDERSCORE) 15 | #define FORT_SET_COEF set_coef_ 16 | #endif 17 | 18 | #include 19 | 20 | extern "C" 21 | { 22 | void FORT_SET_COEF(Real* exac, Real* alph, Real* beta, Real* rhs, 23 | const int* lo, const int* hi, const Real* prob_lo, const Real* prob_hi, 24 | const Real* dx, const Real& a, const Real& b, 25 | const Real& sigma, const Real& w, int& ibnd); 26 | } 27 | #endif 28 | 29 | #endif /*_COEF_F_H_*/ 30 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/ComparisonTest/COMP_NORM_F.H: -------------------------------------------------------------------------------- 1 | #ifndef _COMP_NORM_F_H_ 2 | #define _COMP_NORM_F_H_ 3 | 4 | #include 5 | 6 | BL_FORT_PROC_DECL(LST_COMP_NORM, lst_comp_norm) 7 | (const int* lo, const int* hi, 8 | const BL_FORT_FAB_ARG(soln), 9 | const BL_FORT_FAB_ARG(exac), 10 | const BL_FORT_FAB_ARG(mask), 11 | const BL_FORT_FAB_ARG(volb), 12 | Real* norm2, Real* norm0, 13 | Real* volume, int* nsoln); 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/ComparisonTest/HypreABecLap/Make.package: -------------------------------------------------------------------------------- 1 | MGLIB_BASE=EXE 2 | 3 | CEXE_sources += HypreABecLap.cpp 4 | 5 | CEXE_headers += HypreABecLap.H 6 | 7 | FEXE_headers += HypreABec_F.H 8 | 9 | FEXE_sources += HypreABec_$(DIM)D.F 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/ComparisonTest/Make.package: -------------------------------------------------------------------------------- 1 | FEXE_headers += COEF_F.H COMP_NORM_F.H 2 | FEXE_sources += COEF_$(DIM)D.F 3 | f90EXE_sources += COMP_NORM_$(DIM)d.f90 4 | 5 | CEXE_headers += writePlotFile.H 6 | 7 | CEXE_sources += main.cpp 8 | CEXE_sources += writePlotFile.cpp 9 | CEXE_sources += solve_with_F90.cpp solve_with_hypre.cpp 10 | CEXE_sources += compute_norm.cpp 11 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/ComparisonTest/writePlotFile.H: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | void writePlotFile (const std::string& dir, 7 | const PArray& soln, const PArray& exac, 8 | const PArray& alph, const PArray& beta, 9 | const PArray& rhs, 10 | const std::vector& geom, 11 | const std::vector& grids, 12 | int nsoln, int iCpp, int iF90, int iHyp); 13 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/grids_2d_1lev: -------------------------------------------------------------------------------- 1 | 2 2 | 1 3 | 4 | 4 5 | 0 0 7 7 6 | 8 0 15 7 7 | 0 8 7 15 8 | 8 8 15 15 9 | 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/grids_2d_2lev: -------------------------------------------------------------------------------- 1 | 2 2 | 2 3 | 2 4 | 4 5 | 0 0 7 7 6 | 8 0 15 7 7 | 0 8 7 15 8 | 8 8 15 15 9 | 3 10 | 4 4 11 11 11 | 8 12 11 15 12 | 12 8 19 19 13 | 14 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/grids_3d_1lev: -------------------------------------------------------------------------------- 1 | 3 2 | 1 3 | 4 | 8 5 | 0 0 0 15 15 15 6 | 16 0 0 31 15 15 7 | 0 16 0 15 31 15 8 | 16 16 0 31 31 15 9 | 0 0 16 15 15 31 10 | 16 0 16 31 15 31 11 | 0 16 16 15 31 31 12 | 16 16 16 31 31 31 13 | 14 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/grids_3d_2lev: -------------------------------------------------------------------------------- 1 | 3 2 | 2 3 | 2 4 | 8 5 | 0 0 0 15 15 15 6 | 16 0 0 31 15 15 7 | 0 16 0 15 31 15 8 | 16 16 0 31 31 15 9 | 0 0 16 15 15 31 10 | 16 0 16 31 15 31 11 | 0 16 16 15 31 31 12 | 16 16 16 31 31 31 13 | 6 14 | 8 8 8 23 23 23 15 | 16 24 8 23 31 23 16 | 24 16 8 39 39 23 17 | 8 8 24 23 23 39 18 | 24 8 24 31 15 39 19 | 24 16 24 39 23 39 20 | 21 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/inputs.2d.fcycle: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | nu1 = 2 4 | nu2 = 2 5 | verbose = 2 6 | 7 | stencil_order = 2 8 | 9 | bottom_solver = 1 10 | 11 | test = 0 12 | max_iter = 100 13 | 14 | pd_xyz = 1024, 1024, 1024 15 | pd_xyz = 128, 128, 128 16 | 17 | dm = 2 18 | 19 | ! F-cycle 20 | cycle_type = 1 21 | 22 | ! Sum of sins 23 | rhs_type = 4 24 | 25 | ! +1 / -1 26 | rhs_type = 1 27 | 28 | fabio = F 29 | 30 | nodal_in = F 31 | 32 | pd_pmask = T, T, T 33 | 34 | eps = 1.e-10 35 | 36 | / 37 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/inputs.2d.fcycle.dir: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | nu1 = 2 4 | nu2 = 2 5 | verbose = 2 6 | 7 | stencil_order = 2 8 | 9 | bottom_solver = 1 10 | 11 | test = 0 12 | max_iter = 100 13 | 14 | pd_xyz = 1024, 1024, 1024 15 | pd_xyz = 128, 128, 128 16 | 17 | dm = 2 18 | 19 | ! F-cycle 20 | cycle_type = 1 21 | 22 | ! Exact phi 23 | rhs_type = 5 24 | 25 | fabio = F 26 | 27 | nodal_in = F 28 | 29 | pd_pmask = F, F, F 30 | 31 | bcx_lo = 1 32 | bcy_lo = 1 33 | bcz_lo = 1 34 | bcx_hi = 1 35 | bcy_hi = 1 36 | bcz_hi = 1 37 | 38 | eps = 1.e-10 39 | 40 | / 41 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/inputs.2d.vcycle: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | nu1 = 2 4 | nu2 = 2 5 | verbose = 2 6 | 7 | stencil_order = 2 8 | 9 | bottom_solver = 1 10 | 11 | test = 0 12 | max_iter = 100 13 | 14 | pd_xyz = 1024, 1024, 1024 15 | pd_xyz = 128, 128, 128 16 | 17 | dm = 2 18 | 19 | ! V-cycle 20 | cycle_type = 3 21 | 22 | ! Sum of sins 23 | rhs_type = 4 24 | 25 | ! +1 / -1 26 | rhs_type = 1 27 | 28 | fabio = F 29 | 30 | nodal_in = F 31 | 32 | pd_pmask = T, T, T 33 | 34 | eps = 1.e-10 35 | 36 | / 37 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/inputs.2d.vcycle.dir: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | nu1 = 2 4 | nu2 = 2 5 | verbose = 2 6 | 7 | stencil_order = 2 8 | 9 | bottom_solver = 1 10 | 11 | test = 0 12 | max_iter = 100 13 | 14 | pd_xyz = 1024, 1024, 1024 15 | pd_xyz = 128, 128, 128 16 | 17 | dm = 2 18 | 19 | ! V-cycle 20 | cycle_type = 3 21 | 22 | ! Exact phi 23 | rhs_type = 5 24 | 25 | fabio = F 26 | 27 | nodal_in = F 28 | 29 | pd_pmask = F, F, F 30 | 31 | bcx_lo = 1 32 | bcy_lo = 1 33 | bcz_lo = 1 34 | bcx_hi = 1 35 | bcy_hi = 1 36 | bcz_hi = 1 37 | 38 | eps = 1.e-10 39 | 40 | / 41 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/inputs.3d.fcycle: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | nu1 = 2 4 | nu2 = 2 5 | verbose = 2 6 | 7 | stencil_order = 2 8 | 9 | bottom_solver = 1 10 | 11 | test = 0 12 | max_iter = 100 13 | 14 | pd_xyz = 1024, 1024, 1024 15 | pd_xyz = 128, 128, 128 16 | 17 | dm = 3 18 | 19 | ! F-cycle 20 | cycle_type = 1 21 | 22 | ! Sum of sins 23 | rhs_type = 4 24 | 25 | ! +1 / -1 26 | rhs_type = 1 27 | 28 | fabio = F 29 | 30 | nodal_in = F 31 | 32 | pd_pmask = T, T, T 33 | 34 | eps = 1.e-10 35 | 36 | / 37 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/inputs.3d.fcycle.dir: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | nu1 = 2 4 | nu2 = 2 5 | verbose = 2 6 | 7 | stencil_order = 2 8 | 9 | bottom_solver = 1 10 | 11 | test = 0 12 | max_iter = 100 13 | 14 | pd_xyz = 1024, 1024, 1024 15 | pd_xyz = 128, 128, 128 16 | 17 | dm = 3 18 | 19 | ! F-cycle 20 | cycle_type = 1 21 | 22 | ! Exact phi 23 | rhs_type = 5 24 | 25 | fabio = F 26 | 27 | nodal_in = F 28 | 29 | pd_pmask = F, F, F 30 | 31 | bcx_lo = 1 32 | bcy_lo = 1 33 | bcz_lo = 1 34 | bcx_hi = 1 35 | bcy_hi = 1 36 | bcz_hi = 1 37 | 38 | eps = 1.e-10 39 | 40 | / 41 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/inputs.3d.vcycle: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | nu1 = 2 4 | nu2 = 2 5 | verbose = 2 6 | 7 | stencil_order = 2 8 | 9 | bottom_solver = 1 10 | 11 | test = 0 12 | max_iter = 100 13 | 14 | pd_xyz = 1024, 1024, 1024 15 | pd_xyz = 128, 128, 128 16 | 17 | dm = 3 18 | 19 | ! V-cycle 20 | cycle_type = 3 21 | 22 | ! Sum of sins 23 | rhs_type = 4 24 | 25 | ! +1 / -1 26 | rhs_type = 1 27 | 28 | fabio = F 29 | 30 | nodal_in = F 31 | 32 | pd_pmask = T, T, T 33 | 34 | eps = 1.e-10 35 | 36 | / 37 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/inputs.3d.vcycle.dir: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | nu1 = 2 4 | nu2 = 2 5 | verbose = 2 6 | 7 | stencil_order = 2 8 | 9 | bottom_solver = 1 10 | 11 | test = 0 12 | max_iter = 100 13 | 14 | pd_xyz = 1024, 1024, 1024 15 | pd_xyz = 128, 128, 128 16 | 17 | dm = 3 18 | 19 | ! V-cycle 20 | cycle_type = 3 21 | 22 | ! Exact phi 23 | rhs_type = 5 24 | 25 | fabio = F 26 | 27 | nodal_in = F 28 | 29 | pd_pmask = F, F, F 30 | 31 | bcx_lo = 1 32 | bcy_lo = 1 33 | bcz_lo = 1 34 | bcx_hi = 1 35 | bcy_hi = 1 36 | bcz_hi = 1 37 | 38 | eps = 1.e-10 39 | 40 | / 41 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG/main.f90: -------------------------------------------------------------------------------- 1 | program main 2 | use BoxLib 3 | use bl_prof_module 4 | use layout_module 5 | use multifab_module 6 | 7 | implicit none 8 | 9 | call boxlib_initialize() 10 | call bl_prof_initialize(on = .true.) 11 | 12 | call layout_set_copyassoc_max(25) 13 | 14 | call wrapper() 15 | call layout_flush_copyassoc_cache () 16 | 17 | ! call print(multifab_mem_stats(), " multifab at end") 18 | ! call print(imultifab_mem_stats(), "imultifab at end") 19 | ! call print(fab_mem_stats(), " fab at end") 20 | ! call print(ifab_mem_stats(), " ifab at end") 21 | ! call print(boxarray_mem_stats(), " boxarray at end") 22 | ! call print(boxassoc_mem_stats(), " boxassoc at end") 23 | ! call print(layout_mem_stats(), " layout at end") 24 | 25 | call bl_prof_glean("bl_prof_res") 26 | call bl_prof_finalize() 27 | call boxlib_finalize() 28 | 29 | end program main 30 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG_Old_Nodal_Stencil/grids_2d_1lev: -------------------------------------------------------------------------------- 1 | 2 2 | 1 3 | 4 | 4 5 | 0 0 7 7 6 | 8 0 15 7 7 | 0 8 7 15 8 | 8 8 15 15 9 | 10 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG_Old_Nodal_Stencil/grids_2d_2lev: -------------------------------------------------------------------------------- 1 | 2 2 | 2 3 | 2 4 | 4 5 | 0 0 7 7 6 | 8 0 15 7 7 | 0 8 7 15 8 | 8 8 15 15 9 | 3 10 | 4 4 11 11 11 | 8 12 11 15 12 | 12 8 19 19 13 | 14 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG_Old_Nodal_Stencil/grids_3d_1lev: -------------------------------------------------------------------------------- 1 | 3 2 | 1 3 | 4 | 8 5 | 0 0 0 15 15 15 6 | 16 0 0 31 15 15 7 | 0 16 0 15 31 15 8 | 16 16 0 31 31 15 9 | 0 0 16 15 15 31 10 | 16 0 16 31 15 31 11 | 0 16 16 15 31 31 12 | 16 16 16 31 31 31 13 | 14 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG_Old_Nodal_Stencil/grids_3d_2lev: -------------------------------------------------------------------------------- 1 | 3 2 | 2 3 | 2 4 | 8 5 | 0 0 0 15 15 15 6 | 16 0 0 31 15 15 7 | 0 16 0 15 31 15 8 | 16 16 0 31 31 15 9 | 0 0 16 15 15 31 10 | 16 0 16 31 15 31 11 | 0 16 16 15 31 31 12 | 16 16 16 31 31 31 13 | 6 14 | 8 8 8 23 23 23 15 | 16 24 8 23 31 23 16 | 24 16 8 39 39 23 17 | 8 8 24 23 23 39 18 | 24 8 24 31 15 39 19 | 24 16 24 39 23 39 20 | 21 | -------------------------------------------------------------------------------- /Tests/LinearSolvers/F_MG_Old_Nodal_Stencil/main.f90: -------------------------------------------------------------------------------- 1 | program main 2 | use BoxLib 3 | use bl_prof_module 4 | use layout_module 5 | use multifab_module 6 | 7 | implicit none 8 | 9 | call boxlib_initialize() 10 | call bl_prof_initialize(on = .true.) 11 | 12 | call layout_set_copyassoc_max(25) 13 | 14 | call wrapper() 15 | call layout_flush_copyassoc_cache () 16 | 17 | ! call print(multifab_mem_stats(), " multifab at end") 18 | ! call print(imultifab_mem_stats(), "imultifab at end") 19 | ! call print(fab_mem_stats(), " fab at end") 20 | ! call print(ifab_mem_stats(), " ifab at end") 21 | ! call print(boxarray_mem_stats(), " boxarray at end") 22 | ! call print(boxassoc_mem_stats(), " boxassoc at end") 23 | ! call print(layout_mem_stats(), " layout at end") 24 | 25 | call bl_prof_glean("bl_prof_res") 26 | call bl_prof_finalize() 27 | call boxlib_finalize() 28 | 29 | end program main 30 | -------------------------------------------------------------------------------- /Tests/MKDir/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME ?= ../../../BoxLib 2 | 3 | DEBUG = FALSE 4 | USE_MPI = TRUE 5 | USE_OMP = FALSE 6 | USE_IPM = FALSE 7 | PROFILE = TRUE 8 | TRACE_PROFILE = TRUE 9 | COMM_PROFILE = TRUE 10 | USE_DUMPI = FALSE 11 | COMP = g++ 12 | DIM = 3 13 | PRECISION = DOUBLE 14 | EBASE = mkdirtest 15 | 16 | CEXE_sources += MKDir.cpp 17 | 18 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 19 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 20 | 21 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 22 | -------------------------------------------------------------------------------- /Tests/StencilOrder/README: -------------------------------------------------------------------------------- 1 | This short program demonstrates the difference that ordering of indices can make in a stencil 2 | computation. 3 | 4 | If you set "oldway" = true then this uses the traditional stencil ordering, with the stencil index last. 5 | 6 | If you set "oldway" = false then this uses the new stencil ordering, with the stencil index first. 7 | 8 | Build the code, for example, by typing 9 | 10 | fort -O3 -ip program.f90 -o nway (when oldway = .false.) 11 | 12 | and 13 | 14 | fort -O3 -ip program.f90 -o nway (when oldway = .true.) 15 | 16 | 17 | Then run the code with timings by typing 18 | 19 | time ./nway 20 | 21 | and 22 | 23 | time ./oway 24 | 25 | 26 | This simple test demonstrates roughly a factor of 5 speedup with the new stencil ordering. 27 | -------------------------------------------------------------------------------- /Tools/CMake/BoxLib_Version.cmake: -------------------------------------------------------------------------------- 1 | # Write the CCSEConfig.cmake file, can set as many as the following 2 | # VERSION = full requested version string 3 | # VERSION_MAJOR = major version if requested, else 0 4 | # VERSION_MINOR = minor version if requested, else 0 5 | # VERSION_PATCH = patch version if requested, else 0 6 | # VERSION_TWEAK = tweak version if requested, else 0 7 | # VERSION_COUNT = number of version components, 0 to 4 8 | SET(CCSE_VERSION_MAJOR 1) 9 | SET(CCSE_VERSION_MINOR 3) 10 | SET(CCSE_VERSION_PATCH 5) 11 | SET(CCSE_VERSION_COUNT 3) 12 | SET(CCSE_VERSION ${CCSE_VERSION_MAJOR}.${CCSE_VERSION_MINOR}.${CCSE_VERSION_PATCH}) 13 | -------------------------------------------------------------------------------- /Tools/CMake/CCSEConfigVersion-install.cmake.in: -------------------------------------------------------------------------------- 1 | # ############################################################################ # 2 | # 3 | # CCSE version information 4 | # 5 | # ############################################################################ # 6 | SET(PACKAGE_VERSION @CCSE_VERSION@) 7 | SET(PACKAGE_VERSION_MAJOR @CCSE_VERSION_MAJOR@) 8 | SET(PACKAGE_VERSION_MINOR @CCSE_VERSION_MINOR@) 9 | 10 | # 11 | # Logic to help find_package(CCSE xx.xx) searches 12 | # For now will assume major number matches are ALL compatible 13 | IF( "${PACKAGE_FIND_VERSION_MAJOR}" EQUAL @CCSE_VERSION_MAJOR@) 14 | SET(PACKAGE_VERSION_COMPATIBLE 1) 15 | IF( "${PACKAGE_FIND_VERSION}" VERSION_EQUAL @CCSE_VERSION@) 16 | SET(PACKAGE_VERSION_EXACT 1) 17 | ENDIF() 18 | ENDIF() 19 | -------------------------------------------------------------------------------- /Tools/CMake/MakefileConfig.export.in: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # 3 | # Make variables for use by CCSE clients. 4 | # 5 | ############################################################################## 6 | 7 | # Location of orignal source and the version 8 | CCSE_SOURCE_DIR = @CCSE_SOURCE_DIR@ 9 | CCSE_VERSION = @CCSE_VERSION@ 10 | 11 | # Configuration information 12 | CCSE_C_COMPILER = @CMAKE_C_COMPILER@ 13 | CCSE_CXX_COMPILER = @CMAKE_CXX_COMPILER@ 14 | CCSE_BUILD_TYPE = @CMAKE_BUILD_TYPE@ 15 | CCSE_DEFINES = @BL_DEFINES@ 16 | 17 | # CCSE include directory 18 | CCSE_INCLUDE_DIR = @CCSE_INSTALL_INCLUDE_PATH@ 19 | CCSE_INCLUDE_DIRS = @CCSE_INCLUDE_DIRS@ 20 | 21 | # CCSE libraries 22 | CCSE_LIB_DIR = @CCSE_INSTALL_LIB_PATH@ 23 | CCSE_LIBRARIES = @CCSE_LIBRARIES@ 24 | 25 | CCSE_LINK_LINE = @LINK_LINE_STRING@ 26 | -------------------------------------------------------------------------------- /Tools/C_mk/Make.upcxx: -------------------------------------------------------------------------------- 1 | 2 | # UPC++ 3 | 4 | CXX = upc++ 5 | -------------------------------------------------------------------------------- /Tools/C_mk/sites/Make.ccse: -------------------------------------------------------------------------------- 1 | # 2 | # CCSE machines 3 | # 4 | 5 | ifeq ($(USE_MPI),TRUE) 6 | 7 | INCLUDE_LOCATIONS += /usr/include/mpich 8 | # LIBRARY_LOCATIONS += # not needed for CCSE machines 9 | LIBRARIES += -lmpich -lmpichf90 10 | 11 | endif 12 | -------------------------------------------------------------------------------- /Tools/C_mk/sites/Make.nersc: -------------------------------------------------------------------------------- 1 | # 2 | # For NERSC machines: Edison and Cori 3 | # 4 | 5 | ifneq ($(which_computer),$(filter $(which_computer),cori edison)) 6 | $(error Unknown NERSC computer, $(which_computer)) 7 | endif 8 | 9 | 10 | ifdef PE_ENV 11 | lowercase_peenv := $(shell echo $(PE_ENV) | tr A-Z a-z) 12 | ifneq ($(lowercase_peenv),$(lowercase_comp)) 13 | has_compiler_mismatch = COMP=$(COMP) does not match PrgEnv-$(lowercase_peenv) 14 | endif 15 | endif 16 | 17 | 18 | ifeq ($(USE_MPI),TRUE) 19 | CC = cc 20 | CXX = CC 21 | FC = ftn 22 | F90 = ftn 23 | LIBRARIES += -lmpichf90 24 | endif 25 | -------------------------------------------------------------------------------- /Tools/C_mk/sites/Make.olcf: -------------------------------------------------------------------------------- 1 | # 2 | # For titan at OLCF 3 | # 4 | 5 | ifneq ($(which_computer),$(filter $(which_computer),titan)) 6 | $(error Unknown OLCF computer, $(which_computer)) 7 | endif 8 | 9 | 10 | ifdef PE_ENV 11 | lowercase_peenv := $(shell echo $(PE_ENV) | tr A-Z a-z) 12 | ifneq ($(lowercase_peenv),$(lowercase_comp)) 13 | has_compiler_mismatch = COMP=$(COMP) does not match PrgEnv-$(lowercase_peenv) 14 | endif 15 | endif 16 | 17 | 18 | ifeq ($(USE_MPI),TRUE) 19 | CC = cc 20 | CXX = CC 21 | FC = ftn 22 | F90 = ftn 23 | LIBRARIES += -lmpichf90 24 | endif 25 | -------------------------------------------------------------------------------- /Tools/C_mk/sites/Make.unknown: -------------------------------------------------------------------------------- 1 | # 2 | # Generic setup mainly for MPI stuff 3 | # 4 | 5 | os_type := $(shell uname) 6 | 7 | ifeq ($(USE_MPI),TRUE) 8 | 9 | CXX := mpicxx 10 | CC := mpicc 11 | FC := mpif90 12 | F90 := mpif90 13 | 14 | # Link to MPI f90 library. 15 | 16 | ifneq ($(findstring mpich, $(shell $(F90) -show 2>&1)),) 17 | 18 | # 19 | # mpich 20 | # 21 | 22 | mpif90_link_flags := $(shell $(F90) -link_info) 23 | # 24 | # The first word is the underlying compiler say gfortran 25 | # 26 | LIBRARIES += $(wordlist 2,1024,$(mpif90_link_flags)) 27 | 28 | else ifneq ($(findstring Open MPI, $(shell $(F90) -showme:version 2>&1)),) 29 | 30 | # 31 | # openmpi 32 | # 33 | mpif90_link_flags := $(shell $(F90) -showme:link) 34 | LIBRARIES += $(mpif90_link_flags) 35 | 36 | else 37 | 38 | $(error unknown mpi implementation) 39 | 40 | endif 41 | 42 | endif 43 | -------------------------------------------------------------------------------- /Tools/C_scripts/buildInfo.H: -------------------------------------------------------------------------------- 1 | const char* buildInfoGetBuildDate(); 2 | const char* buildInfoGetBuildDir(); 3 | const char* buildInfoGetBuildMachine(); 4 | const char* buildInfoGetBoxlibDir(); 5 | const char* buildInfoGetComp(); 6 | const char* buildInfoGetCompVersion(); 7 | const char* buildInfoGetCompilerLoc(int i); 8 | const char* buildInfoGetCompilerVer(int i); 9 | const char* buildInfoGetCompilerFlags(int i); 10 | const char* buildInfoGetFcomp(); 11 | const char* buildInfoGetFcompVersion(); 12 | const char* buildInfoGetAux(int i); 13 | int buildInfoGetNumModules(); 14 | const char* buildInfoGetModuleName(int i); 15 | const char* buildInfoGetModuleVal(int i); 16 | const char* buildInfoGetDif(int i); 17 | const char* buildInfoGetGitHash(int i); 18 | const char* buildInfoGetGitBranch(int i); 19 | const char* buildInfoGetLinkerInfo(int i); 20 | const char* buildInfoGetBuildGitName(); 21 | const char* buildInfoGetBuildGitHash(); 22 | 23 | -------------------------------------------------------------------------------- /Tools/C_util/Convergence/ComputeAmrDataNorms.H: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | void 4 | ComputeAmrDataNorms (AmrData& amrData, 5 | Array& norm0, 6 | Array& norm1, 7 | Array& norm2, 8 | bool verbose); 9 | 10 | void 11 | ComputeAmrDataInt (AmrData& amrData, 12 | Array& norm1, 13 | bool verbose); 14 | -------------------------------------------------------------------------------- /Tools/C_util/Convergence/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_headers += 2 | 3 | CEXE_sources += DataServices.cpp AmrData.cpp 4 | 5 | CEXE_sources += ComputeAmrDataNorms.cpp WritePlotFile.cpp 6 | CEXE_headers += ComputeAmrDataNorms.H WritePlotFile.H 7 | FEXE_sources += FABUTIL_$(DIM)D.F AVGDOWN_$(DIM)D.F 8 | 9 | #ifeq ($(USE_ARRAYVIEW),TRUE) 10 | # CEXE_sources += DatasetClient.cpp 11 | # CEXE_headers += DatasetClient.H 12 | #endif 13 | -------------------------------------------------------------------------------- /Tools/C_util/Convergence/Make.package.SAVE: -------------------------------------------------------------------------------- 1 | CEXE_headers += 2 | 3 | CEXE_sources += DataServices.cpp AmrData.cpp 4 | 5 | CEXE_sources += ComputeAmrDataNorms.cpp DatasetClient.cpp WritePlotFile.cpp 6 | CEXE_headers += ComputeAmrDataNorms.H DatasetClient.H WritePlotFile.H 7 | FEXE_headers += AVGDOWN_F.H 8 | FEXE_sources += AVGDOWN_$(DIM)D.F FABUTIL_$(DIM)D.F 9 | -------------------------------------------------------------------------------- /Tools/C_util/Convergence/Make.package.temp: -------------------------------------------------------------------------------- 1 | CEXE_sources += $(addsuffix .cpp, $(EBASE)) 2 | FEXE_headers += AVGDOWN_F.H 3 | FEXE_sources += AVGDOWN_$(DIM)D.F 4 | -------------------------------------------------------------------------------- /Tools/C_util/Make.package: -------------------------------------------------------------------------------- 1 | 2 | UTIL_BASE:=EXE 3 | 4 | C$(UTIL_BASE)_sources += WritePlotFile.cpp 5 | C$(UTIL_BASE)_headers += WritePlotFile.H 6 | 7 | C$(UTIL_BASE)_headers += TV_TempWrite.H 8 | -------------------------------------------------------------------------------- /Tools/C_util/Statistics/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_headers += 2 | 3 | CEXE_sources += DataServices.cpp AmrData.cpp 4 | CEXE_sources += ComputeAmrDataStat.cpp WritePlotFile.cpp 5 | CEXE_headers += ComputeAmrDataStat.H WritePlotFile.H 6 | FEXE_sources += FABUTIL_$(DIM)D.F AVGDOWN_$(DIM)D.F 7 | 8 | #ifeq ($(USE_ARRAYVIEW),TRUE) 9 | # CEXE_sources += DatasetClient.cpp 10 | # CEXE_headers += DatasetClient.H 11 | #endif 12 | -------------------------------------------------------------------------------- /Tools/C_util/Statistics/PltFileFluxAve.H: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | void 4 | compute_flux_all(int nstart, 5 | int nmax, 6 | int nfac, 7 | int dir, 8 | std::string iFile, 9 | Real phi); 10 | 11 | 12 | void 13 | compute_flux_all(int nstart, 14 | int nmax, 15 | int nfac, 16 | int dir, 17 | std::string iFile, 18 | MultiFab& phidata); 19 | void 20 | compute_flux(AmrData& amrData, 21 | int dir, 22 | Array cNames, 23 | Real dt, 24 | Array& xold, 25 | Real& flux, 26 | Real phi, 27 | bool do_init, 28 | Array& barr); 29 | -------------------------------------------------------------------------------- /Tools/C_util/Statistics/PltFileXAve.H: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | void 4 | compute_flux_all(int nstart, 5 | int nmax, 6 | int nfac, 7 | std::string iFile, 8 | Real phi); 9 | 10 | 11 | void 12 | compute_flux_all(int nstart, 13 | int nmax, 14 | int nfac, 15 | std::string iFile, 16 | MultiFab& phidata); 17 | void 18 | compute_flux(AmrData& amrData, 19 | int dir, 20 | Array cNames, 21 | Real dt, 22 | Array& xold, 23 | Real& flux, 24 | Real phi, 25 | bool do_init, 26 | Real* barr=0); 27 | -------------------------------------------------------------------------------- /Tools/C_util/ViewMF/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME = ../.. 2 | 3 | TOP = $(BOXLIB_HOME) 4 | # 5 | # Variables for the user to set ... 6 | # 7 | PRECISION = DOUBLE 8 | DEBUG = TRUE 9 | DIM = 3 10 | COMP = g++ 11 | USE_MPI = FALSE 12 | # 13 | # Base name of the executable. 14 | # 15 | EBASE = viewMF 16 | EBASE = mfMinMax 17 | 18 | include $(TOP)/mk/Make.defs ./Make.package 19 | 20 | CEXE_sources += $(EBASE).cpp 21 | 22 | DEFINES += -DBL_NOLINEVALUES 23 | 24 | include $(TOP)/BoxLib/Make.package 25 | INCLUDE_LOCATIONS += . $(TOP)/BoxLib $(TOP)/pAmrvis .. 26 | 27 | vpath %.F .. $(TOP)/pAmrvis $(TOP)/BoxLib 28 | vpath %.f .. $(TOP)/pAmrvis $(TOP)/BoxLib 29 | vpath %.H .. $(TOP)/pAmrvis $(TOP)/BoxLib 30 | vpath %.cpp .. $(TOP)/pAmrvis $(TOP)/BoxLib 31 | 32 | all: $(executable) 33 | 34 | include $(TOP)/mk/Make.rules 35 | -------------------------------------------------------------------------------- /Tools/C_util/ViewMF/MFNorm.H: -------------------------------------------------------------------------------- 1 | #ifndef _MYNORM_H_ 2 | #define _MYNORM_H_ 3 | Real MFNorm (const MultiFab& mfab, 4 | const int exponent, 5 | const int srcComp, 6 | const int numComp, 7 | const int numGrow); 8 | #endif 9 | -------------------------------------------------------------------------------- /Tools/C_util/ViewMF/Make.package: -------------------------------------------------------------------------------- 1 | # 2 | # Local sources 3 | # 4 | CEXE_sources += MFNorm.cpp 5 | 6 | #ifeq ($(USE_ARRAYVIEW),TRUE) 7 | # CEXE_sources += DatasetClient.cpp 8 | #endif 9 | 10 | 11 | -------------------------------------------------------------------------------- /Tools/C_util/WritePlotFile.H: -------------------------------------------------------------------------------- 1 | #ifndef _WritePlotFile_H_ 2 | #define _WritePlotFile_H_ 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | // Write a MultiFab to a plotfile named "name" using the HyperCLawV1.1 parallel 11 | // plotfile data format 12 | void 13 | writePlotFile (const char* name, 14 | const MultiFab& mf, 15 | const Geometry& geom, 16 | const IntVect& refRatio, 17 | Real bgVal, 18 | const Array& names); 19 | 20 | // Write an array of multifabs pulling all the data from the AmrData 21 | void 22 | WritePlotFile(const Array mfa, 23 | AmrData& amrdToMimic, 24 | const std::string& oFile, 25 | bool verbose); 26 | 27 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /Tools/C_util/dbgTools/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME = ../../ 2 | 3 | TOP = $(BOXLIB_HOME) 4 | # 5 | # Variables for the user to set ... 6 | # 7 | PRECISION = DOUBLE 8 | DEBUG = FALSE 9 | DIM = 3 10 | COMP = KCC 11 | # 12 | # Base name of the executable. 13 | # 14 | EBASE = crsGrids 15 | CEXE_sources += $(EBASE).cpp 16 | 17 | DEFINES += -DBL_PARALLEL_IO 18 | include $(TOP)/Tools/C_mk/Make.defs ./Make.package 19 | 20 | include $(TOP)/Src/C_BaseLib/Make.package 21 | 22 | INCLUDE_LOCATIONS += . 23 | INCLUDE_LOCATIONS += $(TOP)/Src/C_BaseLib 24 | 25 | vpath %.H . $(TOP)/Source/C_BaseLib 26 | vpath %.cpp . $(TOP)/Source/C_BaseLib 27 | vpath %.F . $(TOP)/Source/C_BaseLib 28 | vpath %.f . $(TOP)/Source/C_BaseLib 29 | 30 | all: $(executable) 31 | 32 | $(executable): $(LIBRARIES) 33 | 34 | include $(TOP)/mk/Make.rules 35 | -------------------------------------------------------------------------------- /Tools/C_util/dbgTools/Make.package: -------------------------------------------------------------------------------- 1 | # 2 | # Local sources 3 | # 4 | CEXE_sources += 5 | 6 | CEXE_sources += 7 | 8 | 9 | -------------------------------------------------------------------------------- /Tools/F_mk/comps/Darwin_ibm.mak: -------------------------------------------------------------------------------- 1 | F_C_LINK := LOWERCASE 2 | FC := xlf 3 | F90 := xlf95 4 | CC := xlc 5 | CXX := xlC 6 | F90FLAGS += -qsuffix=f=f90 -qnosave 7 | F90FLAGS += -qmoddir=$(mdir) 8 | ifdef NDEBUG 9 | F90FLAGS += -O5 -qtune=auto -qarch=auto -qunroll=auto 10 | FFLAGS += -O5 -qtune=auto -qarch=auto -qunroll=auto 11 | CFLAGS += -O5 -Q=20 -qtune-auto -qarch=auto -qunroll=auto -qaltivec 12 | CXXFLAGS += -O5 -Q=20 -qtune-auto -qarch=auto -qunroll=auto -qaltivec 13 | else 14 | F90FLAGS += -g -C 15 | FFLAGS += -g -C 16 | endif 17 | F90FLAGS += -I$(mdir) 18 | -------------------------------------------------------------------------------- /Tools/F_mk/comps/Linux_lahey.mak: -------------------------------------------------------------------------------- 1 | FC = lf95 2 | F90 = lf95 3 | CC = gcc 4 | CXX = g++ 5 | FFLAGS = 6 | F90FLAGS = 7 | F90FLAGS += -M $(mdir) 8 | FFLAGS += -M $(mdir) 9 | CFLAGS += -Wall 10 | CXXFLAGS += -Wall 11 | ifdef NDEBUG 12 | FFLAGS += --tpp --prefetch 2 --nap --nchk -O --npca --nsav --ntrace 13 | F90FLAGS += --tpp --prefetch 2 --nap --nchk -O --npca --nsav --ntrace 14 | else 15 | FFLAGS += -g --pca --nsav --ap # --chk aesu # --chkglobal 16 | F90FLAGS += -g --pca --nsav --f95 --ap --chk aes # --chkglobal 17 | endif 18 | ifdef OMP 19 | FFLAGS += --parallel --openmp 20 | F90FLAGS += --parallel --openmp 21 | endif 22 | -------------------------------------------------------------------------------- /Tools/F_mk/comps/Linux_nag.mak: -------------------------------------------------------------------------------- 1 | FC = nf95 2 | F90 = nf95 3 | CC = gcc 4 | CXX = g++ 5 | F90FLAGS += -mdir $(mdir) -I $(mdir) 6 | FFLAGS += -mdir $(mdir) -I $(mdir) 7 | FFLAGS += -w=x77 -fixed 8 | CFLAGS += -Wall 9 | CXXFLAGS += -Wall 10 | # F90FLAGS += -Oassumed=always_contig 11 | f2kcli_suf := _nag 12 | ifdef NDEBUG 13 | FFLAGS += -O4 14 | F90FLAGS += -O4 15 | else 16 | FFLAGS += -C=all 17 | F90FLAGS += -C=all 18 | FFLAGS += -g 19 | F90FLAGS += -g 20 | FFLAGS += -nan 21 | F90FLAGS += -nan 22 | FFLAGS += -gline 23 | F90FLAGS += -gline 24 | endif 25 | ifdef GPROF 26 | FFLAGS += -pg 27 | F90FLAGS += -pg 28 | CFLAGS += -pg 29 | CXXFLAGS += -pg 30 | endif 31 | -------------------------------------------------------------------------------- /Tools/F_mk/comps/Linux_sunstudio.mak: -------------------------------------------------------------------------------- 1 | FC = f95 2 | F90 = f95 3 | CC = cc 4 | CXX = CC 5 | -------------------------------------------------------------------------------- /Tools/F_scripts/findparams.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from __future__ import print_function 4 | 5 | import sys 6 | import os 7 | 8 | def findparams(param_file_dirs): 9 | """ 10 | a simple script that returns (to stdout) the paths to _parameter 11 | files given a list of directories to search (as arguments on the 12 | commandline). This is used in various makefiles to get the input for 13 | write_probin.py 14 | 15 | """ 16 | 17 | params = [] 18 | 19 | for d in param_file_dirs: 20 | f = os.path.normpath(d + "/_parameters") 21 | if os.path.isfile(f): 22 | params.append(f) 23 | 24 | for f in params: 25 | print(f,) 26 | 27 | 28 | if __name__ == "__main__": 29 | 30 | if len(sys.argv) == 1: 31 | sys.exit("invalid calling sequence.\n findparams.py path-to-dir1 path-to-dir2 ...\n") 32 | 33 | findparams(sys.argv[1:]) 34 | -------------------------------------------------------------------------------- /Tools/Postprocessing/F_Src/MAESTRO_wdconvect/fthermo_driver.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import os 4 | 5 | basename = "wd_576_base_plt" 6 | diagname = "fthermo.Linux.PathScale.exe" 7 | 8 | plotfiles = [] 9 | 10 | # find all the plotfiles beginning with the basename 11 | for file in os.listdir(os.getcwd()): 12 | if (os.path.isdir(file) and file.startswith(basename)): 13 | plotfiles.append(file) 14 | 15 | 16 | plotfiles.sort() 17 | 18 | print plotfiles 19 | 20 | n = 0 21 | while (n < len(plotfiles)-1): 22 | print "%s --infile1 %s --infile2 %s >> cp_diag.out" % (diagname, plotfiles[n], plotfiles[n+1]) 23 | n += 1 24 | 25 | 26 | -------------------------------------------------------------------------------- /Tools/Postprocessing/F_Src/Palette: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoxLib-Codes/BoxLib/330b14363148ebb0b85d1ffd59d07874ddc79e6d/Tools/Postprocessing/F_Src/Palette -------------------------------------------------------------------------------- /Tools/Postprocessing/F_Src/TODO_GHOST: -------------------------------------------------------------------------------- 1 | -- There are a lot of routines that use lbound() and ubound() on the 2 | pointer to get the box limits -- this is unsafe if the plotfile has 3 | ghost cells but we don't want to deal with the ghost cells. 4 | 5 | We need to switch those out to use get_box() on the pf object 6 | itself. 7 | -------------------------------------------------------------------------------- /Tools/RegressionTesting/gen_compile_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # script to automatically generate the test parameters for compile tests 4 | # for MAESTRO problems. Run this in the MAESTRO/ directory. 5 | 6 | for i in `find . -name GNUmakefile -print` 7 | do 8 | buildDir=`dirname $i` 9 | topDir=`dirname $buildDir` 10 | 11 | category=`basename $topDir` 12 | problem=`basename $buildDir` 13 | 14 | if [ "$category" != "docs" ]; then 15 | if [ "$problem" != "docs" ]; then 16 | echo [$category-$problem] 17 | echo buildDir = fParallel/MAESTRO/$buildDir 18 | echo compileTest = 1 19 | echo " " 20 | fi 21 | fi 22 | done 23 | 24 | -------------------------------------------------------------------------------- /Tools/Release/cleanWords.txt: -------------------------------------------------------------------------------- 1 | RADIATION 2 | NEUTRINO 3 | PARTICLES 4 | SGS 5 | LEVELSET 6 | TAU 7 | HAS_DUMPMODEL 8 | MAESTRO_INIT 9 | -------------------------------------------------------------------------------- /Tutorials/.gitignore: -------------------------------------------------------------------------------- 1 | chk* 2 | plt* 3 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Exec/Make.Adv: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME ?= ../../../.. 2 | ADR_DIR ?= $(BOXLIB_HOME)/Tutorials/AMR_Adv_C 3 | 4 | TOP := $(ADR_DIR) 5 | 6 | EBASE := main 7 | 8 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 9 | 10 | 11 | Bdirs := Source Source/Src_nd Source/Src_$(DIM)d 12 | Bpack += $(foreach dir, $(Bdirs), $(TOP)/$(dir)/Make.package) 13 | Blocs += $(foreach dir, $(Bdirs), $(TOP)/$(dir)) 14 | 15 | include $(Bpack) 16 | 17 | INCLUDE_LOCATIONS += $(Blocs) 18 | VPATH_LOCATIONS += $(Blocs) 19 | 20 | 21 | Pdirs := C_BaseLib C_AmrCoreLib C_AMRLib C_BoundaryLib 22 | Ppack += $(foreach dir, $(Pdirs), $(BOXLIB_HOME)/Src/$(dir)/Make.package) 23 | 24 | include $(Ppack) 25 | 26 | 27 | all: $(executable) 28 | @echo SUCCESS 29 | 30 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 31 | 32 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Exec/SingleVortex/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME ?= ../../../.. 2 | 3 | PRECISION = DOUBLE 4 | PROFILE = FALSE 5 | 6 | DEBUG = TRUE 7 | DEBUG = FALSE 8 | 9 | DIM = 2 10 | #DIM = 3 11 | 12 | COMP = g++ 13 | 14 | USE_MPI = TRUE 15 | USE_OMP = FALSE 16 | 17 | Bpack := ./Make.package 18 | Blocs := . 19 | 20 | include ../Make.Adv 21 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Exec/SingleVortex/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += Prob.f90 face_velocity_$(DIM)d.f90 2 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Exec/SingleVortex/probin: -------------------------------------------------------------------------------- 1 | &fortin 2 | 3 | adv_vel = 1.d0, 1.d0, 1.d0 4 | 5 | / 6 | 7 | &tagging 8 | 9 | phierr = 1.01d0, 1.1d0, 1.5d0 10 | 11 | max_phierr_lev = 10 12 | 13 | / 14 | 15 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Exec/UniformVelocity/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME ?= ../../../.. 2 | 3 | PRECISION = DOUBLE 4 | PROFILE = FALSE 5 | 6 | DEBUG = TRUE 7 | DEBUG = FALSE 8 | 9 | DIM = 2 10 | #DIM = 3 11 | 12 | COMP = g++ 13 | 14 | USE_MPI = TRUE 15 | USE_OMP = FALSE 16 | 17 | Bpack := ./Make.package 18 | Blocs := . 19 | 20 | include ../Make.Adv 21 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Exec/UniformVelocity/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += Prob.f90 face_velocity_$(DIM)d.f90 probdata.f90 2 | 3 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Exec/UniformVelocity/face_velocity_2d.f90: -------------------------------------------------------------------------------- 1 | 2 | subroutine get_face_velocity(level, time, & 3 | vx, vx_l1, vx_l2, vx_h1, vx_h2, & 4 | vy, vy_l1, vy_l2, vy_h1, vy_h2, & 5 | dx, prob_lo) bind(C, name="get_face_velocity") 6 | 7 | use probdata_module, only : adv_vel 8 | 9 | implicit none 10 | 11 | integer, intent(in) :: level 12 | double precision, intent(in) :: time 13 | integer, intent(in) :: vx_l1, vx_l2, vx_h1, vx_h2 14 | integer, intent(in) :: vy_l1, vy_l2, vy_h1, vy_h2 15 | double precision, intent(out) :: vx(vx_l1:vx_h1,vx_l2:vx_h2) 16 | double precision, intent(out) :: vy(vy_l1:vy_h1,vy_l2:vy_h2) 17 | double precision, intent(in) :: dx(2), prob_lo(2) 18 | 19 | vx = adv_vel(1) 20 | vy = adv_vel(2) 21 | 22 | end subroutine get_face_velocity 23 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Exec/UniformVelocity/probdata.f90: -------------------------------------------------------------------------------- 1 | module probdata_module 2 | 3 | implicit none 4 | 5 | double precision, save :: adv_vel(3) 6 | 7 | end module probdata_module 8 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Exec/UniformVelocity/probin: -------------------------------------------------------------------------------- 1 | &fortin 2 | 3 | adv_vel = 1.d0, 1.d0, 1.d0 4 | 5 | / 6 | 7 | &tagging 8 | 9 | phierr = 1.01d0, 1.1d0, 1.5d0 10 | 11 | max_phierr_lev = 10 12 | 13 | / 14 | 15 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/README: -------------------------------------------------------------------------------- 1 | AMR_Adv_C: This code advects a single scalar field with a velocity 2 | field that is specified on faces. 3 | 4 | It is a BoxLib based code designed to run in parallel using MPI/OMP. 5 | 6 | The directory Exec/SingleVortex includes a makefile and a sample inputs file. 7 | Plotfiles are generated that can be viewed with amrvis2d / amrvis3d. 8 | (CCSE's native vis / spreadsheet tool, downloadable separately from ccse.lbl.gov) 9 | or with Visit. 10 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Source/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += Adv.cpp Adv_advance.cpp Adv_setup.cpp 2 | CEXE_sources += AdvBld.cpp Adv_io.cpp Adv_dt.cpp 3 | CEXE_sources += main.cpp 4 | 5 | CEXE_headers += Adv.H 6 | 7 | FEXE_headers += Adv_F.H 8 | 9 | 10 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Source/Src_2d/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += Adv_$(DIM)d.f90 2 | f90EXE_sources += slope_$(DIM)d.f90 3 | f90EXE_sources += compute_flux_$(DIM)d.f90 4 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Source/Src_3d/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += Adv_$(DIM)d.f90 2 | f90EXE_sources += slope_$(DIM)d.f90 3 | f90EXE_sources += compute_flux_$(DIM)d.f90 4 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Source/Src_nd/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += Adv_nd.f90 2 | f90EXE_sources += Tagging_nd.f90 tagging_params.f90 3 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C/Source/Src_nd/tagging_params.f90: -------------------------------------------------------------------------------- 1 | module tagging_params_module 2 | 3 | double precision, save :: phierr(0:15), phigrad(0:15) 4 | 5 | integer, save :: max_phierr_lev, max_phigrad_lev 6 | 7 | end module tagging_params_module 8 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_CF/Exec/SingleVortex/GNUmakefile: -------------------------------------------------------------------------------- 1 | 2 | DEBUG = TRUE 3 | 4 | USE_MPI = TRUE 5 | USE_OMP = FALSE 6 | USE_MPI3 = FALSE 7 | 8 | MEM_PROFILE = FALSE 9 | TINY_PROFILE = FALSE 10 | 11 | COMP = g++ 12 | FCOMP = gfortran 13 | 14 | DIM = 3 15 | 16 | Bpack := ./Make.package 17 | Blocs := . 18 | 19 | include ../Make.Adv 20 | 21 | 22 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_CF/Exec/SingleVortex/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += Prob.f90 2 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_CF/Exec/SingleVortex/Prob.f90: -------------------------------------------------------------------------------- 1 | 2 | module init_data_module 3 | 4 | implicit none 5 | 6 | private 7 | 8 | public :: initdata 9 | 10 | contains 11 | 12 | subroutine initdata () 13 | 14 | end subroutine initdata 15 | 16 | end module init_data_module 17 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_CF/README: -------------------------------------------------------------------------------- 1 | AMR_Adv_CF: This code advects a single scalar field with a velocity 2 | field that is specified on faces. 3 | 4 | It is a BoxLib based code designed to run in parallel using MPI/OMP. 5 | It uses the Fortran interfaces of C++ BoxLib. 6 | 7 | The directory Exec/SingleVortex includes a makefile and a sample inputs file. 8 | Plotfiles are generated that can be viewed with amrvis2d / amrvis3d. 9 | (CCSE's native vis / spreadsheet tool, downloadable separately from ccse.lbl.gov) 10 | or with Visit. 11 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_CF/Source/Make.package: -------------------------------------------------------------------------------- 1 | 2 | f90EXE_sources += fmain.f90 3 | 4 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_CF/Source/fmain.f90: -------------------------------------------------------------------------------- 1 | 2 | subroutine fmain () bind(c) 3 | 4 | use boxlib_module 5 | 6 | implicit none 7 | 8 | 9 | 10 | end subroutine fmain 11 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C_v2/Exec/Make.Adv: -------------------------------------------------------------------------------- 1 | 2 | ADR_DIR ?= $(BOXLIB_HOME)/Tutorials/AMR_Adv_C_v2 3 | 4 | TOP := $(ADR_DIR) 5 | 6 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 7 | 8 | Bdirs := Source Source/Src_nd Source/Src_$(DIM)d 9 | Bpack += $(foreach dir, $(Bdirs), $(TOP)/$(dir)/Make.package) 10 | Blocs += $(foreach dir, $(Bdirs), $(TOP)/$(dir)) 11 | 12 | include $(Bpack) 13 | 14 | INCLUDE_LOCATIONS += $(Blocs) 15 | VPATH_LOCATIONS += $(Blocs) 16 | 17 | 18 | Pdirs := C_BaseLib C_BoundaryLib C_AmrCoreLib 19 | Ppack += $(foreach dir, $(Pdirs), $(BOXLIB_HOME)/Src/$(dir)/Make.package) 20 | 21 | include $(Ppack) 22 | 23 | 24 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 25 | 26 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C_v2/Exec/SingleVortex/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME ?= ../../../.. 2 | 3 | PRECISION = DOUBLE 4 | PROFILE = FALSE 5 | 6 | DEBUG = TRUE 7 | DEBUG = FALSE 8 | 9 | DIM = 2 10 | #DIM = 3 11 | 12 | COMP = g++ 13 | 14 | USE_MPI = TRUE 15 | USE_OMP = FALSE 16 | 17 | Bpack := ./Make.package 18 | Blocs := . 19 | 20 | include ../Make.Adv 21 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C_v2/Exec/SingleVortex/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += Prob.f90 face_velocity_$(DIM)d.f90 2 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C_v2/README: -------------------------------------------------------------------------------- 1 | AMR_Adv_C_v2: This code advects a single scalar field with a velocity 2 | field that is specified on faces. 3 | 4 | It is a BoxLib based code designed to run in parallel using MPI/OMP. 5 | 6 | The directory Exec/SingleVortex includes a makefile and a sample inputs file. 7 | Plotfiles are generated that can be viewed with amrvis2d / amrvis3d. 8 | (CCSE's native vis / spreadsheet tool, downloadable separately from ccse.lbl.gov) 9 | or with Visit. 10 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C_v2/Source/AmrAdvBC.H: -------------------------------------------------------------------------------- 1 | #ifndef AmrAdvBC_H_ 2 | #define AmrAdvBC_H_ 3 | 4 | #include 5 | 6 | // In this tutorial, we assume the boundaries are all periodic. 7 | // Thus there are no physical boundaries. And FillBoundary does nothing. 8 | 9 | class AmrAdvPhysBC 10 | : public PhysBCFunctBase 11 | { 12 | public: 13 | AmrAdvPhysBC () {} 14 | virtual ~AmrAdvPhysBC () {} 15 | virtual void FillBoundary (MultiFab& mf, int, int, Real time) override { } 16 | using PhysBCFunctBase::FillBoundary; 17 | }; 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C_v2/Source/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp AmrAdv.cpp AmrAdvInit.cpp AmrAdvEvolve.cpp \ 2 | AmrAdvError.cpp AmrAdvIO.cpp 3 | 4 | CEXE_headers += AmrAdv.H AmrAdvBC.H 5 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C_v2/Source/Src_2d/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += Adv_$(DIM)d.f90 2 | f90EXE_sources += slope_$(DIM)d.f90 3 | f90EXE_sources += compute_flux_$(DIM)d.f90 4 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C_v2/Source/Src_3d/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += Adv_$(DIM)d.f90 2 | f90EXE_sources += slope_$(DIM)d.f90 3 | f90EXE_sources += compute_flux_$(DIM)d.f90 4 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C_v2/Source/Src_nd/Make.package: -------------------------------------------------------------------------------- 1 | 2 | f90EXE_sources += Tagging_nd.f90 3 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_C_v2/Source/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | int main(int argc, char* argv[]) 11 | { 12 | BoxLib::Initialize(argc,argv); 13 | 14 | BL_PROFILE_VAR("main()", pmain); 15 | 16 | const Real strt_total = ParallelDescriptor::second(); 17 | 18 | { 19 | AmrAdv amradv; 20 | 21 | amradv.InitData(); 22 | 23 | amradv.Evolve(); 24 | 25 | Real end_total = ParallelDescriptor::second() - strt_total; 26 | 27 | ParallelDescriptor::ReduceRealMax(end_total ,ParallelDescriptor::IOProcessorNumber()); 28 | if (amradv.Verbose() && ParallelDescriptor::IOProcessor()) { 29 | std::cout << "\nTotal Time : " << end_total << '\n'; 30 | } 31 | } 32 | 33 | BL_PROFILE_VAR_STOP(pmain); 34 | 35 | BoxLib::Finalize(); 36 | } 37 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_F/Exec/SingleVortex/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := t 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | include ../../Source/GPackage.mak 16 | 17 | VPATH_LOCATIONS += . ../../Source 18 | 19 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 20 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 21 | 22 | main.$(suf).exe: $(objects) 23 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 24 | @echo SUCCESS 25 | 26 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 27 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_F/Exec/SingleVortex/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += init_phi.f90 2 | f90sources += set_velocity.f90 3 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_F/Exec/UniformVelocity/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := t 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | include ../../Source/GPackage.mak 16 | 17 | VPATH_LOCATIONS += . ../../Source 18 | 19 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 20 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 21 | 22 | main.$(suf).exe: $(objects) 23 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 24 | @echo SUCCESS 25 | 26 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 27 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_F/Exec/UniformVelocity/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += init_phi.f90 2 | f90sources += set_velocity.f90 3 | -------------------------------------------------------------------------------- /Tutorials/AMR_Adv_F/Source/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += advance.f90 2 | f90sources += compute_flux.f90 3 | f90sources += init_phi.f90 4 | f90sources += main.f90 5 | f90sources += slope.f90 6 | f90sources += tag_boxes.f90 7 | f90sources += update_phi.f90 8 | f90sources += write_plotfile.f90 9 | -------------------------------------------------------------------------------- /Tutorials/AMR_Trilinos_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += driver.cpp 2 | CEXE_sources += Solver.cpp 3 | CEXE_sources += SolverBoundary.cpp 4 | CEXE_sources += writePlotFile.cpp 5 | 6 | CEXE_headers += Solver.H 7 | CEXE_headers += writePlotFile.H 8 | 9 | -------------------------------------------------------------------------------- /Tutorials/AMR_Trilinos_C/inputs: -------------------------------------------------------------------------------- 1 | 2 | # Domain size 3 | nx = 32 # number of grid points along the x axis 4 | ny = 32 # number of grid points along the y axis 5 | nz = 32 # number of grid points along the z axis 6 | 7 | # Maximum allowable size of each subdomain in the problem domain; 8 | # this is used to decompose the domain for parallel calculations. 9 | max_grid_size = 32 10 | 11 | # Solver specifications 12 | tol = 1e-8 # tolerance 13 | maxiters = 1000 # maxiters 14 | numBlocks = 1 # Maximum number of blocks in Krylov space 15 | recycleBlocks = 0 # Number of vectors in recycle space 16 | maxOldLHS = 1 # Number of stored LHS for extrapolating the next starting vector 17 | 18 | # Verbosity 19 | verbose = false # set to true to get more verbosity 20 | -------------------------------------------------------------------------------- /Tutorials/AMR_Trilinos_C/writePlotFile.H: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | void 11 | writePlotFile (const std::string& dir, 12 | const MultiFab& mf, 13 | const Geometry& geom); 14 | -------------------------------------------------------------------------------- /Tutorials/Chemotaxis_F/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= $(HOME)/Development/BoxLib/ 4 | 5 | NDEBUG := 6 | MPI := 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | VPATH_LOCATIONS += . 16 | 17 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 18 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 19 | 20 | #include $(BOXLIB_HOME)/Src/Python/GPackage.mak 21 | #all: $(PYBOXLIBS) 22 | 23 | main.$(suf).exe: $(objects) 24 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 25 | 26 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 27 | #include $(BOXLIB_HOME)/Src/Python/GMakerules.mak 28 | -------------------------------------------------------------------------------- /Tutorials/Chemotaxis_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += dtypes.f90 2 | f90sources += main.f90 3 | f90sources += chemotaxis.f90 4 | f90sources += kernels.f90 5 | f90sources += write_plotfile.f90 6 | f90sources += advance.f90 7 | f90sources += sdcquad.f90 8 | f90sources += mt19937ar.f90 9 | -------------------------------------------------------------------------------- /Tutorials/Chemotaxis_F/inputs.mwe: -------------------------------------------------------------------------------- 1 | &options 2 | 3 | method = "sdc" 4 | plot_int = 10 5 | nsteps = 300 6 | 7 | / 8 | 9 | ¶meters 10 | 11 | dt = 0.0125d0 12 | 13 | / 14 | 15 | &sdc 16 | 17 | nnodes = 5 18 | qtype = "Gauss-Lobatto" 19 | iters = 20 20 | tol_residual = 1.0d-10 21 | 22 | / 23 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= $(HOME)/Development/BoxLib/ 4 | 5 | NDEBUG := t 6 | MPI := t 7 | OMP := t 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | #USE_IPM := t 13 | 14 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 15 | 16 | include ./GPackage.mak 17 | VPATH_LOCATIONS += . 18 | 19 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 20 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 21 | 22 | #libraries += $(IPM_GNU) 23 | 24 | main.$(suf).exe: $(objects) 25 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 26 | 27 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 28 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += advance.f90 2 | f90sources += init_data.f90 3 | f90sources += main.f90 4 | f90sources += write_plotfile.f90 5 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/HyptermKernels/HyptermKernel_c_c/FakeWriteMultifab.h: -------------------------------------------------------------------------------- 1 | /* ------------------------------------------------------------------------- */ 2 | /* this will only work in serial with one grid. */ 3 | /* ------------------------------------------------------------------------- */ 4 | 5 | void FakeWriteMultifab(int lo[3], int hi[3], int fablo[3], int fabhi[3], 6 | int ng, int ncomp, double ** __restrict__ _cons, 7 | char *name); 8 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/HyptermKernels/HyptermKernel_c_c/timer.h: -------------------------------------------------------------------------------- 1 | uint64_t CycleTime(); 2 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/HyptermKernels/HyptermKernel_c_c/timer.x86.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | //inline uint64_t CycleTime(){ 4 | uint64_t CycleTime(){ 5 | uint64_t lo, hi; 6 | __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi)); 7 | return( (((uint64_t)hi) << 32) | ((uint64_t)lo) ); 8 | } 9 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/HyptermKernels/HyptermKernel_cpp_F/Make.package: -------------------------------------------------------------------------------- 1 | 2 | cEXE_sources += timer_c.c 3 | 4 | ifeq ($(DIM),3) 5 | FEXE_sources += 6 | endif 7 | 8 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/HyptermKernels/HyptermKernel_cpp_c/Make.package: -------------------------------------------------------------------------------- 1 | 2 | cEXE_sources += $(HERE)/timer_c.c 3 | cEXE_sources += $(HERE)/timer.x86.c 4 | cEXE_sources += $(HERE)/bench.c 5 | 6 | ifeq ($(DIM),3) 7 | FEXE_sources += 8 | endif 9 | 10 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/HyptermKernels/HyptermKernel_f90_f90/README: -------------------------------------------------------------------------------- 1 | this one uses f90 for both memory allocation and the hypterm kernel. 2 | 3 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/HyptermKernels/README: -------------------------------------------------------------------------------- 1 | 2 | These are test codes for optimizing the hypterm kernel. The names 3 | show what language the code is in for _memory allocation_hypterm kernel. 4 | 5 | HyptermKernel_c_c 6 | HyptermKernel_cpp_c 7 | HyptermKernel_cpp_F 8 | HyptermKernel_f90_f90 9 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/inputs.jbb: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | nsteps = 100 4 | plot_int = 10 5 | n_cell = 128 6 | max_grid_size = 64 7 | 8 | cfl = 0.5d0 9 | ! 10 | ! Diffusion coefficients. 11 | ! 12 | eta = 1.8d-4 13 | alam = 1.5d2 14 | 15 | / 16 | -------------------------------------------------------------------------------- /Tutorials/Exp_CNS_NoSpec_F/inputs_3d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | nsteps = 5 4 | plot_int = 5 5 | n_cell = 128 6 | max_grid_size = 64 7 | 8 | cfl = 0.5d0 9 | ! 10 | ! Diffusion coefficients. 11 | ! 12 | eta = 1.8d-4 13 | alam = 1.5d2 14 | 15 | / 16 | -------------------------------------------------------------------------------- /Tutorials/GettingStarted_C/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | DEBUG = FALSE 6 | USE_MPI = FALSE 7 | USE_OMP = FALSE 8 | PROFILE = FALSE 9 | COMP = g++ 10 | FCOMP = gfortran 11 | DIM = 2 12 | PRECISION = DOUBLE 13 | EBASE = main 14 | 15 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 16 | 17 | include ./Make.package 18 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 19 | 20 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 21 | -------------------------------------------------------------------------------- /Tutorials/GettingStarted_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | 3 | f90EXE_sources += work_on_data_$(DIM)d.f90 4 | -------------------------------------------------------------------------------- /Tutorials/GettingStarted_C/work_on_data_2d.f90: -------------------------------------------------------------------------------- 1 | subroutine work_on_data(data, ng, nc, lo, hi) bind(C, name="work_on_data") 2 | 3 | implicit none 4 | 5 | integer :: lo(2), hi(2), ng, nc 6 | double precision :: data(lo(1)-ng:hi(1)+ng,lo(2)-ng:hi(2)+ng,1:nc) 7 | 8 | ! local variables 9 | integer :: i,j,n 10 | 11 | do j=lo(2),hi(2) 12 | do i=lo(1),hi(1) 13 | do n=1,nc 14 | ! some silly function I made up 15 | data(i,j,n) = (i + j) * n 16 | end do 17 | end do 18 | end do 19 | 20 | end subroutine work_on_data 21 | -------------------------------------------------------------------------------- /Tutorials/GettingStarted_C/work_on_data_3d.f90: -------------------------------------------------------------------------------- 1 | subroutine work_on_data(data, ng, nc, lo, hi) bind(C, name="work_on_data") 2 | 3 | implicit none 4 | 5 | integer :: lo(3), hi(3), ng, nc 6 | double precision :: data(lo(1)-ng:hi(1)+ng,lo(2)-ng:hi(2)+ng,lo(3)-ng:hi(3)+ng,1:nc) 7 | 8 | ! local variables 9 | integer :: i,j,k,n 10 | 11 | do k=lo(3),hi(3) 12 | do j=lo(2),hi(2) 13 | do i=lo(1),hi(1) 14 | do n=1,nc 15 | ! some silly function I made up 16 | data(i,j,k,n) = (i + j) * n 17 | end do 18 | end do 19 | end do 20 | end do 21 | 22 | end subroutine work_on_data 23 | -------------------------------------------------------------------------------- /Tutorials/GettingStarted_F/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | VPATH_LOCATIONS += . 16 | 17 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 18 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 19 | 20 | main.$(suf).exe: $(objects) 21 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 22 | 23 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 24 | -------------------------------------------------------------------------------- /Tutorials/GettingStarted_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += main.f90 2 | f90sources += work_on_data.f90 3 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_C/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | DEBUG = FALSE 6 | USE_MPI = FALSE 7 | USE_OMP = FALSE 8 | PROFILE = FALSE 9 | COMP = g++ 10 | DIM = 2 11 | PRECISION = DOUBLE 12 | EBASE = main 13 | 14 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 15 | 16 | include ./Make.package 17 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 18 | 19 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 20 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | CEXE_sources += writePlotFile.cpp 3 | 4 | CEXE_headers += writePlotFile.H 5 | 6 | FEXE_headers += myfunc_F.H 7 | 8 | f90EXE_sources += init_phi_$(DIM)d.f90 9 | f90EXE_sources += advance_$(DIM)d.f90 10 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_C/init_phi_2d.f90: -------------------------------------------------------------------------------- 1 | subroutine init_phi(phi, lo, hi, ng, dx, prob_lo, prob_hi) bind(C, name="init_phi") 2 | 3 | implicit none 4 | 5 | integer :: lo(2), hi(2), ng 6 | double precision :: phi(lo(1)-ng:hi(1)+ng,lo(2)-ng:hi(2)+ng) 7 | double precision :: dx(2) 8 | double precision :: prob_lo(2) 9 | double precision :: prob_hi(2) 10 | 11 | integer :: i,j 12 | double precision :: x,y,r2 13 | 14 | do j = lo(2), hi(2) 15 | y = prob_lo(2) + (dble(j)+0.5d0) * dx(2) 16 | do i = lo(1), hi(1) 17 | x = prob_lo(1) + (dble(i)+0.5d0) * dx(1) 18 | 19 | r2 = ((x-0.25d0)**2 + (y-0.25d0)**2) / 0.01d0 20 | 21 | phi(i,j) = 1.d0 + exp(-r2) 22 | 23 | end do 24 | end do 25 | 26 | end subroutine init_phi 27 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_C/init_phi_3d.f90: -------------------------------------------------------------------------------- 1 | subroutine init_phi(phi, lo, hi, ng, dx, prob_lo, prob_hi) bind(C, name="init_phi") 2 | 3 | implicit none 4 | 5 | integer :: lo(3), hi(3), ng 6 | double precision :: phi(lo(1)-ng:hi(1)+ng,lo(2)-ng:hi(2)+ng,lo(3)-ng:hi(3)+ng) 7 | double precision :: dx(3) 8 | double precision :: prob_lo(3) 9 | double precision :: prob_hi(3) 10 | 11 | integer :: i,j,k 12 | double precision :: x,y,z,r2 13 | 14 | do k = lo(3), hi(3) 15 | z = prob_lo(3) + (dble(k)+0.5d0) * dx(3) 16 | do j = lo(2), hi(2) 17 | y = prob_lo(2) + (dble(j)+0.5d0) * dx(2) 18 | do i = lo(1), hi(1) 19 | x = prob_lo(1) + (dble(i)+0.5d0) * dx(1) 20 | 21 | r2 = ((x-0.25d0)**2 + (y-0.25d0)**2 + (z-0.25d0)**2) / 0.01d0 22 | phi(i,j,k) = 1.d0 + exp(-r2) 23 | 24 | end do 25 | end do 26 | end do 27 | 28 | end subroutine init_phi 29 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_C/inputs_2d: -------------------------------------------------------------------------------- 1 | nsteps = 10000 2 | plot_int = 1000 3 | n_cell = 256 4 | max_grid_size = 64 5 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_C/inputs_3d: -------------------------------------------------------------------------------- 1 | nsteps = 1000 2 | plot_int = 100 3 | n_cell = 128 4 | max_grid_size = 32 5 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_C/myfunc_F.H: -------------------------------------------------------------------------------- 1 | #ifndef MYFUNC_F_H__ 2 | #define MUFUNC_F_H__ 3 | 4 | #include 5 | 6 | extern "C" 7 | { 8 | void init_phi(Real* data, const int* lo, const int* hi, const int* ng, 9 | const Real* dx, const Real* prob_lo, const Real* prob_hi); 10 | 11 | void compute_flux(Real* phi, const int* ng_p, 12 | Real* fluxx, 13 | Real* fluxy, 14 | #if (BL_SPACEDIM == 3) 15 | Real* fluxz, 16 | #endif 17 | const int* ng_f, const int* lo, const int* hi, const Real* dx); 18 | 19 | void update_phi(Real* phiold, Real* phinew, const int* ng_p, 20 | Real* fluxx, 21 | Real* fluxy, 22 | #if (BL_SPACEDIM == 3) 23 | Real* fluxz, 24 | #endif 25 | const int* ng_f, const int* lo, const int* hi, const Real* dx, const Real* dt); 26 | } 27 | #endif 28 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_C/writePlotFile.H: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | #include 6 | 7 | void 8 | writePlotFile (const std::string& dir, 9 | const MultiFab& mf, 10 | const Geometry& geom, 11 | const Real& time); 12 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_CF/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += fmain.f90 init_phi.f90 advance.f90 2 | 3 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_CF/inputs: -------------------------------------------------------------------------------- 1 | 2 | nsteps = 100 # how many steps to run? 3 | 4 | plot_int = 10 # how often to make plot files? 5 | 6 | n_cell = 128 # number of cells in each dimension 7 | max_grid_size = 32 # max grid size 8 | 9 | # Must set coordinates to 0 (Cartesian), or 1 (Cylindrical), or 2 (Spherical). 10 | geometry.coord_sys = 0 11 | 12 | # Must set physical domain size. 13 | geometry.prob_lo = -1.0 -1.0 -1.0 14 | geometry.prob_hi = 1.0 1.0 1.0 15 | 16 | # Periodic? Default in BoxLib is set to 0 (no). 17 | geometry.is_periodic = 1 1 1 18 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_F/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | VPATH_LOCATIONS += . 16 | 17 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 18 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 19 | 20 | main.$(suf).exe: $(objects) 21 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 22 | 23 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 24 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += advance.f90 2 | f90sources += init_phi.f90 3 | f90sources += main.f90 4 | f90sources += write_plotfile.f90 5 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_F/inputs_2d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | dim = 2 4 | nsteps = 10000 5 | plot_int = 1000 6 | n_cell = 256 7 | max_grid_size = 64 8 | 9 | / 10 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX1_F/inputs_3d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | dim = 3 4 | nsteps = 1000 5 | plot_int = 100 6 | n_cell = 128 7 | max_grid_size = 32 8 | 9 | / 10 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_C/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | DEBUG = FALSE 6 | USE_MPI = FALSE 7 | USE_OMP = FALSE 8 | PROFILE = FALSE 9 | COMP = g++ 10 | DIM = 2 11 | PRECISION = DOUBLE 12 | EBASE = main 13 | 14 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 15 | 16 | include ./Make.package 17 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 18 | 19 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 20 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | CEXE_sources += writePlotFile.cpp 3 | 4 | CEXE_headers += writePlotFile.H 5 | 6 | FEXE_headers += myfunc_F.H 7 | 8 | f90EXE_sources += init_phi_$(DIM)d.f90 9 | f90EXE_sources += advance_$(DIM)d.f90 10 | F90EXE_sources += bc_fill_nd.F90 11 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_C/init_phi_2d.f90: -------------------------------------------------------------------------------- 1 | subroutine init_phi(phi, lo, hi, ng, dx, prob_lo, prob_hi) bind(C, name="init_phi") 2 | 3 | implicit none 4 | 5 | integer :: lo(2), hi(2), ng 6 | double precision :: phi(lo(1)-ng:hi(1)+ng,lo(2)-ng:hi(2)+ng) 7 | double precision :: dx(2) 8 | double precision :: prob_lo(2) 9 | double precision :: prob_hi(2) 10 | 11 | integer :: i,j 12 | double precision :: x,y,r2 13 | 14 | do j = lo(2), hi(2) 15 | y = prob_lo(2) + (dble(j)+0.5d0) * dx(2) 16 | do i = lo(1), hi(1) 17 | x = prob_lo(1) + (dble(i)+0.5d0) * dx(1) 18 | 19 | r2 = ((x-0.25d0)**2 + (y-0.25d0)**2) / 0.01d0 20 | 21 | phi(i,j) = 1.d0 + exp(-r2) 22 | 23 | end do 24 | end do 25 | 26 | end subroutine init_phi 27 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_C/init_phi_3d.f90: -------------------------------------------------------------------------------- 1 | subroutine init_phi(phi, lo, hi, ng, dx, prob_lo, prob_hi) bind(C, name="init_phi") 2 | 3 | implicit none 4 | 5 | integer :: lo(3), hi(3), ng 6 | double precision :: phi(lo(1)-ng:hi(1)+ng,lo(2)-ng:hi(2)+ng,lo(3)-ng:hi(3)+ng) 7 | double precision :: dx(3) 8 | double precision :: prob_lo(3) 9 | double precision :: prob_hi(3) 10 | 11 | integer :: i,j,k 12 | double precision :: x,y,z,r2 13 | 14 | do k = lo(3), hi(3) 15 | z = prob_lo(3) + (dble(k)+0.5d0) * dx(3) 16 | do j = lo(2), hi(2) 17 | y = prob_lo(2) + (dble(j)+0.5d0) * dx(2) 18 | do i = lo(1), hi(1) 19 | x = prob_lo(1) + (dble(i)+0.5d0) * dx(1) 20 | 21 | r2 = ((x-0.25d0)**2 + (y-0.25d0)**2 + (z-0.25d0)**2) / 0.01d0 22 | phi(i,j,k) = 1.d0 + exp(-r2) 23 | 24 | end do 25 | end do 26 | end do 27 | 28 | end subroutine init_phi 29 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_C/inputs_2d: -------------------------------------------------------------------------------- 1 | nsteps = 10000 2 | plot_int = 1000 3 | n_cell = 256 4 | max_grid_size = 64 5 | 6 | # allowable options for this example are 7 | # 0 = PERIODIC 8 | # 2 = FOEXTRAP (phi = extrap at boundary) 9 | # 3 = EXT_DIR (phi = specified value of 1 at boundary) 10 | lo_bc = 3 3 11 | hi_bc = 3 3 12 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_C/inputs_3d: -------------------------------------------------------------------------------- 1 | nsteps = 1000 2 | plot_int = 100 3 | n_cell = 128 4 | max_grid_size = 32 5 | 6 | # allowable options for this example are 7 | # 0 = PERIODIC 8 | # 2 = FOEXTRAP (phi = extrap at boundary) 9 | # 3 = EXT_DIR (phi = specified value of 1 at boundary) 10 | lo_bc = 3 3 3 11 | hi_bc = 3 3 3 12 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_C/writePlotFile.H: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | #include 6 | 7 | void 8 | writePlotFile (const std::string& dir, 9 | const MultiFab& mf, 10 | const Geometry& geom, 11 | const Real& time); 12 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_F/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | VPATH_LOCATIONS += . 16 | 17 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 18 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 19 | 20 | main.$(suf).exe: $(objects) 21 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 22 | 23 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 24 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += advance.f90 2 | f90sources += init_phi.f90 3 | f90sources += main.f90 4 | f90sources += write_plotfile.f90 5 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_F/inputs_2d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | dim = 2 4 | nsteps = 10000 5 | plot_int = 1000 6 | n_cell = 256 7 | max_grid_size = 64 8 | 9 | ! allowable options for this example are 10 | ! -1 = PERIODIC 11 | ! 11 = INLET (phi = val at boundary) 12 | ! 12 = OUTLET (phi = extrap at boundary) 13 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 14 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 15 | bc_x_lo = 11 16 | bc_x_hi = 11 17 | bc_y_lo = 11 18 | bc_y_hi = 11 19 | 20 | / 21 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX2_F/inputs_3d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | dim = 3 4 | nsteps = 1000 5 | plot_int = 100 6 | n_cell = 128 7 | max_grid_size = 32 8 | 9 | ! allowable options for this example are 10 | ! -1 = PERIODIC 11 | ! 11 = INLET (phi = val at boundary) 12 | ! 12 = OUTLET (phi = extrap at boundary) 13 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 14 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 15 | bc_x_lo = 11 16 | bc_x_hi = 11 17 | bc_y_lo = 11 18 | bc_y_hi = 11 19 | bc_z_lo = 11 20 | bc_z_hi = 11 21 | 22 | / 23 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX3_F/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | VPATH_LOCATIONS += . 16 | 17 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 18 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 19 | 20 | main.$(suf).exe: $(objects) 21 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 22 | 23 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 24 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX3_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += advance.f90 2 | f90sources += init_phi.f90 3 | f90sources += main.f90 4 | f90sources += write_plotfile.f90 5 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX3_F/inputs_2d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 3 4 | dim = 2 5 | nsteps = 10000 6 | plot_int = 1000 7 | n_cell = 256 8 | max_grid_size = 64 9 | 10 | ! allowable options for this example are 11 | ! -1 = PERIODIC 12 | ! 11 = INLET (phi = val at boundary) 13 | ! 12 = OUTLET (phi = extrap at boundary) 14 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 15 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 16 | bc_x_lo = -1 17 | bc_x_hi = -1 18 | bc_y_lo = -1 19 | bc_y_hi = -1 20 | 21 | / 22 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX3_F/inputs_3d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 3 4 | dim = 3 5 | nsteps = 1000 6 | plot_int = 100 7 | n_cell = 128 8 | max_grid_size = 32 9 | 10 | ! allowable options for this example are 11 | ! -1 = PERIODIC 12 | ! 11 = INLET (phi = val at boundary) 13 | ! 12 = OUTLET (phi = extrap at boundary) 14 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 15 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 16 | bc_x_lo = -1 17 | bc_x_hi = -1 18 | bc_y_lo = -1 19 | bc_y_hi = -1 20 | bc_z_lo = -1 21 | bc_z_hi = -1 22 | 23 | / 24 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX4_F/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | VPATH_LOCATIONS += . 16 | 17 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 18 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 19 | 20 | main.$(suf).exe: $(objects) 21 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 22 | 23 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 24 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX4_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += advance.f90 2 | f90sources += init_phi.f90 3 | f90sources += main.f90 4 | f90sources += write_plotfile.f90 5 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX4_F/inputs_2d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 4 4 | dim = 2 5 | nsteps = 10000 6 | plot_int = 1000 7 | n_cell = 256 8 | max_grid_size = 64 9 | 10 | ! allowable options for this example are 11 | ! -1 = PERIODIC 12 | ! 11 = INLET (phi = val at boundary) 13 | ! 12 = OUTLET (phi = extrap at boundary) 14 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 15 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 16 | bc_x_lo = -1 17 | bc_x_hi = -1 18 | bc_y_lo = -1 19 | bc_y_hi = -1 20 | 21 | amr_buf_width = 2 22 | cluster_minwidth = 16 23 | cluster_blocking_factor = 8 24 | cluster_min_eff = 0.7d0 25 | regrid_int = 4 26 | 27 | / 28 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX4_F/inputs_3d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 4 4 | dim = 3 5 | nsteps = 1000 6 | plot_int = 100 7 | n_cell = 128 8 | max_grid_size = 32 9 | 10 | ! allowable options for this example are 11 | ! -1 = PERIODIC 12 | ! 11 = INLET (phi = val at boundary) 13 | ! 12 = OUTLET (phi = extrap at boundary) 14 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 15 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 16 | bc_x_lo = -1 17 | bc_x_hi = -1 18 | bc_y_lo = -1 19 | bc_y_hi = -1 20 | bc_z_lo = -1 21 | bc_z_hi = -1 22 | 23 | amr_buf_width = 2 24 | cluster_minwidth = 16 25 | cluster_blocking_factor = 8 26 | cluster_min_eff = 0.7d0 27 | regrid_int = 4 28 | 29 | / 30 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX5_F/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | VPATH_LOCATIONS += . 16 | 17 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 18 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 19 | 20 | include $(BOXLIB_HOME)/Src/LinearSolvers/F_MG/GPackage.mak 21 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/LinearSolvers/F_MG 22 | 23 | main.$(suf).exe: $(objects) 24 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 25 | @echo SUCCESS 26 | 27 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 28 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX5_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += advance.f90 2 | f90sources += init_phi.f90 3 | f90sources += main.f90 4 | f90sources += write_plotfile.f90 5 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX5_F/inputs-rt: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 4 4 | dim = 3 5 | nsteps = 50 6 | plot_int = 50 7 | n_cell = 128 8 | max_grid_size = 32 9 | 10 | do_implicit_solve = T 11 | 12 | ! allowable options for this example are 13 | ! -1 = PERIODIC 14 | ! 11 = INLET (phi = val at boundary) 15 | ! 12 = OUTLET (phi = extrap at boundary) 16 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 17 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 18 | bc_x_lo = -1 19 | bc_x_hi = -1 20 | bc_y_lo = -1 21 | bc_y_hi = -1 22 | bc_z_lo = -1 23 | bc_z_hi = -1 24 | 25 | amr_buf_width = 2 26 | cluster_minwidth = 16 27 | cluster_blocking_factor = 8 28 | cluster_min_eff = 0.7d0 29 | regrid_int = 4 30 | 31 | / 32 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX5_F/inputs-rt-expl: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 4 4 | dim = 3 5 | nsteps = 50 6 | plot_int = 50 7 | n_cell = 128 8 | max_grid_size = 32 9 | 10 | do_implicit_solve = F 11 | 12 | ! allowable options for this example are 13 | ! -1 = PERIODIC 14 | ! 11 = INLET (phi = val at boundary) 15 | ! 12 = OUTLET (phi = extrap at boundary) 16 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 17 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 18 | bc_x_lo = -1 19 | bc_x_hi = -1 20 | bc_y_lo = -1 21 | bc_y_hi = -1 22 | bc_z_lo = -1 23 | bc_z_hi = -1 24 | 25 | amr_buf_width = 2 26 | cluster_minwidth = 16 27 | cluster_blocking_factor = 8 28 | cluster_min_eff = 0.7d0 29 | regrid_int = 4 30 | 31 | / 32 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX5_F/inputs-rt-impl: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 4 4 | dim = 3 5 | nsteps = 50 6 | plot_int = 50 7 | n_cell = 128 8 | max_grid_size = 32 9 | 10 | do_implicit_solve = T 11 | 12 | ! allowable options for this example are 13 | ! -1 = PERIODIC 14 | ! 11 = INLET (phi = val at boundary) 15 | ! 12 = OUTLET (phi = extrap at boundary) 16 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 17 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 18 | bc_x_lo = -1 19 | bc_x_hi = -1 20 | bc_y_lo = -1 21 | bc_y_hi = -1 22 | bc_z_lo = -1 23 | bc_z_hi = -1 24 | 25 | amr_buf_width = 2 26 | cluster_minwidth = 16 27 | cluster_blocking_factor = 8 28 | cluster_min_eff = 0.7d0 29 | regrid_int = 4 30 | 31 | / 32 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX5_F/inputs_2d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 4 4 | dim = 2 5 | nsteps = 10000 6 | plot_int = 1000 7 | n_cell = 256 8 | max_grid_size = 64 9 | 10 | do_implicit_solve = T 11 | 12 | ! allowable options for this example are 13 | ! -1 = PERIODIC 14 | ! 11 = INLET (phi = val at boundary) 15 | ! 12 = OUTLET (phi = extrap at boundary) 16 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 17 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 18 | bc_x_lo = 11 19 | bc_x_hi = 11 20 | bc_y_lo = 11 21 | bc_y_hi = 11 22 | 23 | amr_buf_width = 2 24 | cluster_minwidth = 16 25 | cluster_blocking_factor = 8 26 | cluster_min_eff = 0.7d0 27 | regrid_int = 4 28 | 29 | / 30 | -------------------------------------------------------------------------------- /Tutorials/HeatEquation_EX5_F/inputs_3d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | max_levs = 4 4 | dim = 3 5 | nsteps = 1000 6 | plot_int = 100 7 | n_cell = 128 8 | max_grid_size = 32 9 | 10 | do_implicit_solve = T 11 | 12 | ! allowable options for this example are 13 | ! -1 = PERIODIC 14 | ! 11 = INLET (phi = val at boundary) 15 | ! 12 = OUTLET (phi = extrap at boundary) 16 | ! 14 = SLIP_WALL (dphi/dn=0 at boundary) 17 | ! 15 = NO_SLIP_WALL (dphi/dn=0 at boundary) 18 | bc_x_lo = -1 19 | bc_x_hi = -1 20 | bc_y_lo = -1 21 | bc_y_hi = -1 22 | bc_z_lo = -1 23 | bc_z_hi = -1 24 | 25 | amr_buf_width = 2 26 | cluster_minwidth = 16 27 | cluster_blocking_factor = 8 28 | cluster_min_eff = 0.7d0 29 | regrid_int = 4 30 | 31 | / 32 | -------------------------------------------------------------------------------- /Tutorials/HelloWorld_C/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME ?= ../../ 2 | 3 | DEBUG = FALSE 4 | DEBUG = TRUE 5 | 6 | DIM = 3 7 | 8 | COMP = gcc 9 | 10 | PRECISION = DOUBLE 11 | 12 | USE_MPI = FALSE 13 | USE_OMP = FALSE 14 | 15 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 16 | 17 | include ./Make.package 18 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 19 | 20 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 21 | -------------------------------------------------------------------------------- /Tutorials/HelloWorld_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | 3 | f90EXE_sources += work.f90 4 | 5 | #F90EXE_sources += superstring.F90 6 | -------------------------------------------------------------------------------- /Tutorials/HelloWorld_C/work.f90: -------------------------------------------------------------------------------- 1 | 2 | subroutine work(lo, hi, a, a_l1, a_l2, a_l3, a_h1, a_h2, a_h3) bind(C, name="work") 3 | 4 | integer, intent(in) :: lo(3), hi(3), a_l1, a_l2, a_l3, a_h1, a_h2, a_h3 5 | double precision :: a(a_l1:a_h1, a_l2:a_h2, a_l3:a_h3) 6 | 7 | integer :: i, j, k 8 | 9 | do k = lo(3), hi(3) 10 | do j = lo(2), hi(2) 11 | do i = lo(1), hi(1) 12 | a(i,j,k) = exp(-dble(i*i+j*j+k*k)/512.d0) 13 | end do 14 | end do 15 | end do 16 | 17 | end subroutine work 18 | -------------------------------------------------------------------------------- /Tutorials/HelloWorld_CF/Make.package: -------------------------------------------------------------------------------- 1 | f90EXE_sources += fmain.f90 2 | 3 | -------------------------------------------------------------------------------- /Tutorials/MultiColor_C/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME ?= ../.. 2 | 3 | DEBUG = TRUE 4 | 5 | DIM = 2 6 | 7 | COMP =gcc 8 | 9 | USE_MPI=TRUE 10 | 11 | EBASE = main 12 | 13 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 14 | 15 | CEXE_sources += $(EBASE).cpp 16 | 17 | include Make.package 18 | include $(BOXLIB_HOME)/Src/C_BoundaryLib/Make.package 19 | include $(BOXLIB_HOME)/Src/LinearSolvers/C_CellMG/Make.package 20 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 21 | 22 | all: $(executable) 23 | @echo SUCCESS 24 | 25 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 26 | -------------------------------------------------------------------------------- /Tutorials/MultiColor_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | 3 | f90EXE_sources += ff.f90 4 | -------------------------------------------------------------------------------- /Tutorials/MultiColor_C/inputs: -------------------------------------------------------------------------------- 1 | boxlib.ncolors = 2 2 | 3 | verbose = 1 4 | 5 | n_cell = 64 6 | max_grid_size = 32 7 | -------------------------------------------------------------------------------- /Tutorials/MultiFabTests_C/Make.package: -------------------------------------------------------------------------------- 1 | ifeq ($(EBASE), mfreadwrite) 2 | CEXE_sources += MultiFabReadWrite.cpp 3 | endif 4 | ifeq ($(EBASE), gridmovetest) 5 | CEXE_sources += GridMoveTest.cpp 6 | endif 7 | 8 | -------------------------------------------------------------------------------- /Tutorials/MultiFab_C_F/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | f90EXE_sources += ff.f90 3 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_C/COEF_F.H: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern "C" 5 | { 6 | void comp_asol(Real* asol , ARLIM_P(asol_lo), ARLIM_P(asol_hi), 7 | const int* lo, const int* hi, const Real* dx, const int& ibnd, 8 | const Real* offset); 9 | 10 | void set_alpha(Real* alpha , ARLIM_P(alpha_lo), ARLIM_P(alpha_hi), 11 | const int* lo, const int* hi, const Real* dx); 12 | 13 | void set_cc_coef(Real* coef , ARLIM_P(coef_lo), ARLIM_P(coef_hi), 14 | const int* lo, const int* hi, const Real* dx, const Real& sigma, const Real& w); 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_C/HypreABecLap/Make.package: -------------------------------------------------------------------------------- 1 | MGLIB_BASE=EXE 2 | 3 | CEXE_sources += HypreABecLap.cpp 4 | 5 | CEXE_headers += HypreABecLap.H 6 | 7 | FEXE_headers += HypreABec_F.H 8 | 9 | FEXE_sources += HypreABec_$(DIM)D.F 10 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_C/Make.package: -------------------------------------------------------------------------------- 1 | FEXE_headers += RHS_F.H COEF_F.H 2 | F90EXE_sources += RHS_$(DIM)D.F90 COEF_$(DIM)D.F90 3 | 4 | CEXE_headers += writePlotFile.H 5 | 6 | CEXE_sources += main.cpp 7 | CEXE_sources += writePlotFile.cpp 8 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_C/RHS_F.H: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern "C" 5 | { 6 | void set_rhs(Real* rhs , ARLIM_P(rhs_lo), ARLIM_P(rhs_hi), 7 | const int* lo, const int* hi, const Real* dx, 8 | const Real& a, const Real& b, const Real& sigma, const Real& w, 9 | const int& ibnd); 10 | } 11 | 12 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_C/writePlotFile.H: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | void 11 | writePlotFile (const std::string& dir, 12 | const MultiFab& mf, 13 | const Geometry& geom); 14 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_F/constants.f90: -------------------------------------------------------------------------------- 1 | module constants 2 | 3 | integer, parameter :: V_CYCLE_TYPE = 1 4 | integer, parameter :: FMG_CYCLE_TYPE = 2 5 | integer, parameter :: CONST_INTERP = 1 6 | integer, parameter :: LIN_INTERP = 2 7 | integer, parameter :: SIN_RHS = 1 8 | integer, parameter :: RAND_RHS = 2 9 | integer, parameter :: DELTA_RHS = 3 10 | integer, parameter :: CONST_COEFFS = 1 11 | integer, parameter :: RAND_COEFFS = 2 12 | 13 | double precision, parameter :: L = 1.d0 14 | double precision, parameter :: pi = 4.d0*datan(1.d0) 15 | 16 | end module constants 17 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_F/inputs_fmg_lin_2d: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | max_boxsize = 32 4 | n_cells = 64 5 | dim = 2 6 | s1 = 2 7 | s2 = 2 8 | v_bot = 8 9 | fmg_bot = 40 10 | max_iter = 20 11 | cycle_type = 2 12 | eps = 1E-10 13 | interp_type = 2 14 | verbose = 1 15 | rhs_type = 2 16 | coeffs_type = 1 17 | 18 | / 19 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_F/inputs_fmg_lin_3d: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | max_boxsize = 32 4 | n_cells = 64 5 | dim = 3 6 | s1 = 2 7 | s2 = 2 8 | v_bot = 8 9 | fmg_bot = 40 10 | max_iter = 20 11 | cycle_type = 2 12 | eps = 1E-10 13 | interp_type = 2 14 | verbose = 1 15 | rhs_type = 2 16 | coeffs_type = 1 17 | 18 | / 19 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_F/inputs_fmg_pc_2d: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | max_boxsize = 32 4 | n_cells = 64 5 | dim = 2 6 | s1 = 2 7 | s2 = 2 8 | v_bot = 8 9 | fmg_bot = 40 10 | max_iter = 20 11 | cycle_type = 2 12 | eps = 1E-10 13 | interp_type = 1 14 | verbose = 1 15 | rhs_type = 2 16 | coeffs_type = 1 17 | 18 | / 19 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_F/inputs_fmg_pc_3d: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | max_boxsize = 32 4 | n_cells = 64 5 | dim = 3 6 | s1 = 2 7 | s2 = 2 8 | v_bot = 8 9 | fmg_bot = 40 10 | max_iter = 20 11 | cycle_type = 2 12 | eps = 1E-10 13 | interp_type = 1 14 | verbose = 1 15 | rhs_type = 2 16 | coeffs_type = 1 17 | 18 | / 19 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_F/inputs_v_lin_2d: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | max_boxsize = 32 4 | n_cells = 64 5 | dim = 2 6 | s1 = 2 7 | s2 = 2 8 | v_bot = 8 9 | fmg_bot = 40 10 | max_iter = 20 11 | cycle_type = 1 12 | eps = 1E-10 13 | interp_type = 2 14 | verbose = 1 15 | rhs_type = 2 16 | coeffs_type = 1 17 | 18 | / 19 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_F/inputs_v_lin_3d: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | max_boxsize = 32 4 | n_cells = 64 5 | dim = 3 6 | s1 = 2 7 | s2 = 2 8 | v_bot = 8 9 | fmg_bot = 40 10 | max_iter = 20 11 | cycle_type = 1 12 | eps = 1E-10 13 | interp_type = 2 14 | verbose = 1 15 | rhs_type = 2 16 | coeffs_type = 1 17 | 18 | / 19 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_F/inputs_v_pc_2d: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | max_boxsize = 32 4 | n_cells = 64 5 | dim = 2 6 | s1 = 2 7 | s2 = 2 8 | v_bot = 8 9 | fmg_bot = 40 10 | max_iter = 20 11 | cycle_type = 1 12 | eps = 1E-10 13 | interp_type = 1 14 | verbose = 1 15 | rhs_type = 2 16 | coeffs_type = 1 17 | 18 | / 19 | -------------------------------------------------------------------------------- /Tutorials/MultiGrid_F/inputs_v_pc_3d: -------------------------------------------------------------------------------- 1 | &PROBIN 2 | 3 | max_boxsize = 32 4 | n_cells = 64 5 | dim = 3 6 | s1 = 2 7 | s2 = 2 8 | v_bot = 8 9 | fmg_bot = 40 10 | max_iter = 20 11 | cycle_type = 1 12 | eps = 1E-10 13 | interp_type = 1 14 | verbose = 1 15 | rhs_type = 2 16 | coeffs_type = 1 17 | 18 | / 19 | -------------------------------------------------------------------------------- /Tutorials/PGAS_HEAT/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME = ../.. 4 | 5 | DEBUG = FALSE 6 | USE_MPI3 = TRUE 7 | USE_UPCXX = TRUE 8 | USE_OMP = FALSE 9 | PROFILE = FALSE 10 | COMP = g++ 11 | DIM = 3 12 | PRECISION = DOUBLE 13 | EBASE = Heat 14 | 15 | include ./Make.package 16 | 17 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 18 | 19 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 20 | 21 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 22 | -------------------------------------------------------------------------------- /Tutorials/PGAS_HEAT/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | CEXE_sources += writePlotFile.cpp 3 | 4 | CEXE_headers += writePlotFile.H 5 | 6 | f90EXE_sources += init_phi_$(DIM)d.f90 7 | f90EXE_sources += advance_$(DIM)d.f90 8 | -------------------------------------------------------------------------------- /Tutorials/PGAS_HEAT/inputs_3d: -------------------------------------------------------------------------------- 1 | nsteps = 100 2 | plot_int = -1 3 | n_cell = 64 4 | max_grid_size = 16 5 | verbose = 0 6 | 7 | ncomp = 1 8 | do_tiling = 1 9 | fabarray.mfiter_tile_size = 1024 4 4 10 | fabarray.comm_tile_size = 1024 8 8 11 | 12 | team.size = 1 13 | mpi.onesided = 0 14 | -------------------------------------------------------------------------------- /Tutorials/PGAS_HEAT/writePlotFile.H: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | void 11 | writePlotFile (const std::string& dir, 12 | const MultiFab& mf, 13 | const Geometry& geom); 14 | -------------------------------------------------------------------------------- /Tutorials/PIC_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | CEXE_sources += single_level.cpp 3 | CEXE_sources += two_level.cpp 4 | CEXE_sources += solve_for_accel.cpp 5 | CEXE_sources += solve_with_f90.cpp 6 | CEXE_sources += solve_with_hpgmg.cpp 7 | 8 | -------------------------------------------------------------------------------- /Tutorials/Random_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += main.f90 2 | -------------------------------------------------------------------------------- /Tutorials/Sidecar_EX1/InTransitAnalysis.H: -------------------------------------------------------------------------------- 1 | #ifndef INTRANSITANALYSIS_H 2 | #define INTRANSITANALYSIS_H 3 | 4 | class InTransitAnalysis 5 | { 6 | public: 7 | void Initialize (MultiFab&, Geometry&, int); 8 | void DoAnalysis (); 9 | void Finalize (); 10 | void PrintResults () const; 11 | 12 | private: 13 | MultiFab* mf; 14 | Geometry* geom; 15 | Real norm0; 16 | Real probsize; 17 | int time_step; 18 | }; 19 | 20 | #endif /* INTRANSITANALYSIS_H */ 21 | -------------------------------------------------------------------------------- /Tutorials/Sidecar_EX1/Make.package: -------------------------------------------------------------------------------- 1 | ifeq ($(EBASE),gridmovetest) 2 | CEXE_sources += GridMoveTest.cpp 3 | CEXE_sources += InTransitAnalysis.cpp 4 | endif 5 | ifeq ($(EBASE),sidecarresizetest) 6 | CEXE_sources += SidecarResizeTest.cpp 7 | endif 8 | ifeq ($(EBASE),destmftest) 9 | CEXE_sources += DestMFTest.cpp 10 | endif 11 | ifeq ($(EBASE),nsidecarstest) 12 | CEXE_sources += NSidecarsTest.cpp 13 | endif 14 | ifeq ($(EBASE),testranksets) 15 | CEXE_sources += TestRankSets.cpp 16 | endif 17 | -------------------------------------------------------------------------------- /Tutorials/Sidecar_EX1/inputs_3d: -------------------------------------------------------------------------------- 1 | maxGrid = 64 2 | nComp = 32 3 | nGhost = 0 4 | maxSize = 16 5 | -------------------------------------------------------------------------------- /Tutorials/Sidecar_EX1/inputs_sc: -------------------------------------------------------------------------------- 1 | nSidecars = 3 2 | maxGrid = 64 3 | nComp = 7 4 | nGhost = 0 5 | maxSize = 8 6 | nSteps = 5 7 | 8 | -------------------------------------------------------------------------------- /Tutorials/Sidecar_EX1/run.sh: -------------------------------------------------------------------------------- 1 | #PBS -N test_sidecar 2 | #PBS -l mppwidth=24 3 | #PBS -q debug 4 | #PBS -l walltime=00:29:59 5 | #PBS -j oe 6 | 7 | cd $PBS_O_WORKDIR 8 | 9 | WORKDIR=$SCRATCH/$PBS_JOBNAME.$PBS_JOBID 10 | 11 | mkdir -p $WORKDIR 12 | 13 | EXE=gridmovetest3d.Linux.g++.gfortran.MPI.ex 14 | INPUTS=inputs_3d 15 | 16 | cp $EXE $INPUTS $WORKDIR 17 | 18 | cd $WORKDIR 19 | 20 | aprun -n 24 ./$EXE $INPUTS 21 | -------------------------------------------------------------------------------- /Tutorials/Tiling_C/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME ?= ../../ 2 | 3 | DEBUG = FALSE 4 | DEBUG = TRUE 5 | 6 | DIM = 3 7 | 8 | COMP = gcc 9 | 10 | PRECISION = DOUBLE 11 | USE_MPI = FALSE 12 | USE_OMP = TRUE 13 | EBASE = main 14 | 15 | 16 | include ./Make.package 17 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 18 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 19 | 20 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 21 | -------------------------------------------------------------------------------- /Tutorials/Tiling_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | 3 | f90EXE_sources += work.f90 4 | 5 | -------------------------------------------------------------------------------- /Tutorials/Tiling_Heat_C/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | DEBUG = FALSE 6 | USE_MPI = FALSE 7 | USE_OMP = TRUE 8 | PROFILE = FALSE 9 | COMP = Intel 10 | DIM = 3 11 | PRECISION = DOUBLE 12 | EBASE = Heat 13 | 14 | include ./Make.package 15 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 16 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 17 | 18 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 19 | -------------------------------------------------------------------------------- /Tutorials/Tiling_Heat_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | CEXE_sources += writePlotFile.cpp 3 | 4 | CEXE_headers += writePlotFile.H 5 | 6 | f90EXE_sources += init_phi_$(DIM)d.f90 7 | f90EXE_sources += advance_$(DIM)d.f90 8 | -------------------------------------------------------------------------------- /Tutorials/Tiling_Heat_C/inputs_3d: -------------------------------------------------------------------------------- 1 | nsteps = 1000 2 | plot_int = -1 3 | n_cell = 128 4 | max_grid_size = 128 5 | verbose = 0 6 | 7 | ncomp = 1 8 | do_tiling = 1 9 | fabarray.mfiter_tile_size = 1024 4 4 10 | fabarray.comm_tile_size = 1024 8 8 11 | -------------------------------------------------------------------------------- /Tutorials/Tiling_Heat_C/writePlotFile.H: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | void 11 | writePlotFile (const std::string& dir, 12 | const MultiFab& mf, 13 | const Geometry& geom); 14 | -------------------------------------------------------------------------------- /Tutorials/Tiling_Heat_F/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | VPATH_LOCATIONS += . 16 | 17 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 18 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 19 | 20 | main.$(suf).exe: $(objects) 21 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 22 | 23 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 24 | -------------------------------------------------------------------------------- /Tutorials/Tiling_Heat_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += advance.f90 2 | f90sources += init_phi.f90 3 | f90sources += main.f90 4 | f90sources += write_plotfile.f90 5 | -------------------------------------------------------------------------------- /Tutorials/Tiling_Heat_F/inputs_3d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | dim = 3 4 | nsteps = 1000 5 | plot_int = 0 6 | n_cell = 128 7 | max_grid_size = 128 8 | 9 | / 10 | -------------------------------------------------------------------------------- /Tutorials/Tiling_Heat_F/results.txt: -------------------------------------------------------------------------------- 1 | num_threads tiled k loop level 2 | 1 92658.585 314277.383 3 | 2 45923.435 157088.589 4 | 8 11696.262 40962.681 5 | 30 3722.478 12076.729 6 | 60 1972.509 5803.831 7 | 120 1438.62 4318.860 8 | 240 1885.892 3860.656 9 | -------------------------------------------------------------------------------- /Tutorials/Tiling_Heat_F/results/babbage_omp.run: -------------------------------------------------------------------------------- 1 | #PBS -q regular 2 | #PBS -l nodes=1 3 | #PBS -l walltime=00:10:00 4 | #PBS -N my_job 5 | #PBS -e error.$PBS_JOBID.err 6 | #PBS -o output.$PBS_JOBID.out 7 | 8 | cd $PBS_O_WORKDIR 9 | 10 | setenv OMP_NUM_THREADS 240 11 | 12 | setenv KMP_AFFINITY balanced 13 | 14 | get_micfile 15 | 16 | mpirun.mic -n 1 -hostfile micfile.$PBS_JOBID -ppn 1 ./main.Linux.Intel.prof.mpi.omp.mic.exe inputs_3d 17 | -------------------------------------------------------------------------------- /Tutorials/Tiling_Heat_F/results/results.txt: -------------------------------------------------------------------------------- 1 | num_threads tiled k loop level 2 | 1 92658.585 314277.383 3 | 2 45923.435 157088.589 4 | 8 11696.262 40962.681 5 | 30 3722.478 12076.729 6 | 60 1972.509 5803.831 7 | 120 1438.62 4318.860 8 | 240 1885.892 3860.656 9 | -------------------------------------------------------------------------------- /Tutorials/TwoGrid_PIC_C/GNUmakefile: -------------------------------------------------------------------------------- 1 | BOXLIB_HOME ?= ../../ 2 | 3 | DEBUG = FALSE 4 | DEBUG = TRUE 5 | 6 | DIM = 3 7 | 8 | COMP = gcc 9 | 10 | USE_PARTICLES = TRUE 11 | 12 | PRECISION = DOUBLE 13 | USE_MPI = TRUE 14 | 15 | USE_OMP = FALSE 16 | 17 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 18 | 19 | include ./Make.package 20 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 21 | include $(BOXLIB_HOME)/Src/C_ParticleLib/Make.package 22 | include $(BOXLIB_HOME)/Src/C_BoundaryLib/Make.package 23 | include $(BOXLIB_HOME)/Src/LinearSolvers/C_to_F_MG/Make.package 24 | include $(BOXLIB_HOME)/Src/LinearSolvers/C_CellMG/Make.package 25 | include $(BOXLIB_HOME)/Src/LinearSolvers/F_MG/FParallelMG.mak 26 | include $(BOXLIB_HOME)/Src/F_BaseLib/FParallelMG.mak 27 | 28 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 29 | -------------------------------------------------------------------------------- /Tutorials/TwoGrid_PIC_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | CEXE_sources += solve_for_accel.cpp 3 | CEXE_sources += solve_with_f90.cpp 4 | CEXE_sources += split_boxes.cpp 5 | 6 | -------------------------------------------------------------------------------- /Tutorials/WaveEquation_C/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | DEBUG = FALSE 6 | USE_MPI = FALSE 7 | USE_OMP = FALSE 8 | PROFILE = FALSE 9 | COMP = g++ 10 | DIM = 2 11 | PRECISION = DOUBLE 12 | EBASE = main 13 | 14 | include ./Make.package 15 | include $(BOXLIB_HOME)/Tools/C_mk/Make.defs 16 | include $(BOXLIB_HOME)/Src/C_BaseLib/Make.package 17 | 18 | include $(BOXLIB_HOME)/Tools/C_mk/Make.rules 19 | -------------------------------------------------------------------------------- /Tutorials/WaveEquation_C/Make.package: -------------------------------------------------------------------------------- 1 | CEXE_sources += main.cpp 2 | CEXE_sources += writePlotFile.cpp 3 | 4 | CEXE_headers += writePlotFile.H 5 | 6 | f90EXE_sources += init_data_$(DIM)d.f90 7 | f90EXE_sources += advance_$(DIM)d.f90 8 | -------------------------------------------------------------------------------- /Tutorials/WaveEquation_C/init_data_2d.f90: -------------------------------------------------------------------------------- 1 | subroutine init_data(U, lo, hi, Ncomp, ng, & 2 | dx, prob_lo, prob_hi) bind(C, name="init_data") 3 | 4 | implicit none 5 | 6 | integer :: lo(2), hi(2), Ncomp, ng 7 | double precision :: U(lo(1)-ng:hi(1)+ng, lo(2)-ng:hi(2)+ng, Ncomp) 8 | double precision :: dx(2) 9 | double precision :: prob_lo(2) 10 | double precision :: prob_hi(2) 11 | 12 | integer :: i,j 13 | double precision :: x,y,r2 14 | 15 | do j = lo(2), hi(2) 16 | y = prob_lo(2) + (dble(j)+0.5d0) * dx(2) 17 | do i = lo(1), hi(1) 18 | x = prob_lo(1) + (dble(i)+0.5d0) * dx(1) 19 | r2 = (x*x + y*y) / 0.01 20 | 21 | U(i,j,1) = 0.d0 22 | U(i,j,2) = exp(-r2) 23 | 24 | end do 25 | end do 26 | 27 | end subroutine init_data 28 | -------------------------------------------------------------------------------- /Tutorials/WaveEquation_C/inputs_2d: -------------------------------------------------------------------------------- 1 | Nsteps = 1000 2 | 3 | plot_int = 100 4 | 5 | n_cell = 256 6 | 7 | max_grid_size = 64 8 | 9 | verbose = 1 10 | -------------------------------------------------------------------------------- /Tutorials/WaveEquation_C/inputs_3d: -------------------------------------------------------------------------------- 1 | Nsteps = 10 2 | 3 | plot_int = 1 4 | 5 | n_cell = 128 6 | 7 | max_grid_size = 32 8 | 9 | verbose = 1 10 | -------------------------------------------------------------------------------- /Tutorials/WaveEquation_C/writePlotFile.H: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | void 11 | writePlotFile (const std::string& dir, 12 | const MultiFab& mf, 13 | const Geometry& geom); 14 | -------------------------------------------------------------------------------- /Tutorials/WaveEquation_F/GNUmakefile: -------------------------------------------------------------------------------- 1 | # BOXLIB_HOME defines the directory in which we will find all the BoxLib code 2 | # If you set BOXLIB_HOME as an environment variable, this line will be ignored 3 | BOXLIB_HOME ?= ../.. 4 | 5 | NDEBUG := t 6 | MPI := 7 | OMP := 8 | PROF := 9 | COMP := gfortran 10 | MKVERBOSE := t 11 | 12 | include $(BOXLIB_HOME)/Tools/F_mk/GMakedefs.mak 13 | 14 | include ./GPackage.mak 15 | VPATH_LOCATIONS += . 16 | 17 | include $(BOXLIB_HOME)/Src/F_BaseLib/GPackage.mak 18 | VPATH_LOCATIONS += $(BOXLIB_HOME)/Src/F_BaseLib 19 | 20 | main.$(suf).exe: $(objects) 21 | $(LINK.f90) -o main.$(suf).exe $(objects) $(libraries) 22 | 23 | include $(BOXLIB_HOME)/Tools/F_mk/GMakerules.mak 24 | -------------------------------------------------------------------------------- /Tutorials/WaveEquation_F/GPackage.mak: -------------------------------------------------------------------------------- 1 | f90sources += advance.f90 2 | f90sources += init_data.f90 3 | f90sources += main.f90 4 | f90sources += write_plotfile.f90 5 | -------------------------------------------------------------------------------- /Tutorials/WaveEquation_F/inputs_2d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | dim = 2 4 | nsteps = 1000 5 | plot_int = 100 6 | n_cell = 256 7 | max_grid_size = 64 8 | verbose = 1 9 | 10 | / 11 | -------------------------------------------------------------------------------- /Tutorials/WaveEquation_F/inputs_3d: -------------------------------------------------------------------------------- 1 | &probin 2 | 3 | dim = 3 4 | nsteps = 10 5 | plot_int = 1 6 | n_cell = 128 7 | max_grid_size = 32 8 | verbose = 1 9 | 10 | / 11 | --------------------------------------------------------------------------------