diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..c8a6aa2245 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Microphysics"] + path = Microphysics + url = https://github.com/starkiller-astro/Microphysics.git diff --git a/CHANGES.md b/CHANGES.md index 4a994dffb5..c4156b3bc1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,26 @@ # 20.03 + * We have updated our workflow when it comes to Castro's microphysics. + Previously Castro shipped with it a minimal set of microphysics that + allowed basic problem setups like Sedov to compile, and more advanced + setups (like ones that include nuclear burning) required downloading + the starkiller-astro Microphysics repository as an additional step. + Now, that Microphysics repository is a requirement for using Castro. + If you are a current user of the Microphysics repository and prefer + the current workflow where you maintain Microphysics as a separate + installation from Castro, no change in your workflow is necessary: + if MICROPHYSICS_HOME is set as an environment variable, Castro will + use the Microphysics installation in that directory. However we have + also added Microphysics as a git submodule to Castro, which is now + the required path if you previously were not using the more advanced + microphysics (but is also a possibility for those previously using a + standalone Microphysics installation). To obtain this, you can use + git submodule update --init --recursive from the top-level directory + of Castro. The developer team ensures that the version of Microphysics + that you obtain this way is consistent with the current version of Castro. + Then, you can keep up to date with the code mostly as normal, except now + using git pull --recurse-submodules instead of git pull. (#760) + * The names of the conserved state variables in C++ (Density, Xmom, etc.) have been changed to match the names in Fortran (URHO, UMX, etc.). For user code, this will only affect problem-specific setup code diff --git a/Exec/Make.Castro b/Exec/Make.Castro index 91904b90a5..c865745a1e 100644 --- a/Exec/Make.Castro +++ b/Exec/Make.Castro @@ -9,11 +9,20 @@ BLAS_LIBRARY ?= -lopenblas TOP := $(CASTRO_HOME) +MICROPHYSICS_HOME ?= $(TOP)/Microphysics + +# Check to make sure that Microphysics actually exists, +# using an arbitrary file that must exist to check. +# Throw an error if we don't have Microphysics. +ifeq ("$(wildcard $(MICROPHYSICS_HOME)/Make.Microphysics)","") + $(error Microphysics has not been downloaded. Please run "git submodule update --init" from the top level of the code) +endif + # the Castro microphysics locations -EOS_HOME ?= $(TOP)/Microphysics/EOS -NETWORK_HOME ?= $(TOP)/Microphysics/networks -COND_HOME ?= $(TOP)/Microphysics/conductivity -VISC_HOME ?= $(TOP)/Microphysics/viscosity +EOS_HOME ?= $(MICROPHYSICS_HOME)/EOS +NETWORK_HOME ?= $(MICROPHYSICS_HOME)/networks +COND_HOME ?= $(MICROPHYSICS_HOME)/conductivity +VISC_HOME ?= $(MICROPHYSICS_HOME)/viscosity # default integrator INTEGRATOR_DIR ?= VODE90 @@ -163,6 +172,8 @@ ifeq ($(USE_DIFFUSION), TRUE) Bdirs += Source/diffusion DEFINES += -DDIFFUSION USE_MLMG = TRUE + USE_CONDUCTIVITY = TRUE + USE_VISCOSITY = TRUE endif ifeq ($(USE_HYBRID_MOMENTUM), TRUE) @@ -257,29 +268,10 @@ Bpack += $(foreach dir, $(Pdirs), $(AMREX_HOME)/Src/$(dir)/Make.package) # microphysics #------------------------------------------------------------------------------ -ifdef MICROPHYSICS_HOME - EOS_PATH := $(MICROPHYSICS_HOME)/EOS/$(strip $(EOS_DIR)) - NETWORK_PATH := $(MICROPHYSICS_HOME)/networks/$(strip $(NETWORK_DIR)) +EOS_PATH := $(MICROPHYSICS_HOME)/EOS/$(strip $(EOS_DIR)) +NETWORK_PATH := $(MICROPHYSICS_HOME)/networks/$(strip $(NETWORK_DIR)) ifeq ($(USE_DIFFUSION), TRUE) COND_PATH := $(MICROPHYSICS_HOME)/conductivity/$(strip $(CONDUCTIVITY_DIR)) -endif -endif - -# if the EOS / network / conductivity name exists in -# Castro/Microphysics, then use that version - -ifneq "$(wildcard $(EOS_HOME)/$(strip $(EOS_DIR)) )" "" - EOS_PATH := $(EOS_HOME)/$(strip $(EOS_DIR)) -endif - -ifneq "$(wildcard $(NETWORK_HOME)/$(strip $(NETWORK_DIR)) )" "" - NETWORK_PATH := $(NETWORK_HOME)/$(strip $(NETWORK_DIR)) -endif - -ifeq ($(USE_DIFFUSION), TRUE) -ifneq "$(wildcard $(COND_HOME)/$(strip $(CONDUCTIVITY_DIR)) )" "" - COND_PATH := $(COND_HOME)/$(strip $(CONDUCTIVITY_DIR)) -endif VISC_PATH := $(VISC_HOME)/constant endif @@ -290,7 +282,7 @@ ifndef GENERAL_NET_INPUTS ifneq "$(wildcard $(NETWORK_INPUTS))" "" GENERAL_NET_INPUTS := $(NETWORK_INPUTS) else - GENERAL_NET_INPUTS := $(CASTRO_HOME)/Microphysics/networks/general_null/$(NETWORK_INPUTS) + GENERAL_NET_INPUTS := $(MICROPHYSICS_HOME)/networks/general_null/$(NETWORK_INPUTS) endif endif @@ -313,15 +305,16 @@ EXTERN_CORE += $(NETWORK_PATH) # Network includes since it has actions that depend on variables set # there. -ifdef MICROPHYSICS_HOME - EXTERN_CORE += $(MICROPHYSICS_HOME)/EOS - EXTERN_CORE += $(MICROPHYSICS_HOME)/networks -endif +EXTERN_CORE += $(MICROPHYSICS_HOME)/EOS +EXTERN_CORE += $(MICROPHYSICS_HOME)/networks +EXTERN_CORE += $(MICROPHYSICS_HOME)/interfaces -ifeq ($(USE_DIFFUSION), TRUE) - EXTERN_CORE += $(TOP)/Microphysics/conductivity +ifeq ($(USE_CONDUCTIVITY), TRUE) EXTERN_CORE += $(COND_HOME) EXTERN_CORE += $(COND_PATH) +endif + +ifeq ($(USE_VISCOSITY), TRUE) EXTERN_CORE += $(VISC_PATH) endif @@ -329,7 +322,7 @@ ifeq ($(USE_RAD), TRUE) ifeq ($(Opacity_dir), null) $(error The null opacity directory has been removed, please update to rad_power_law) endif - OPAC_PATH := $(TOP)/Microphysics/opacity/$(Opacity_dir) + OPAC_PATH := $(MICROPHYSICS_HOME)/opacity/$(Opacity_dir) EXTERN_CORE += $(OPAC_PATH) endif @@ -408,9 +401,7 @@ EXTERN_TEMPLATE := $(TOP)/Source/driver/extern_probin.template # these are for finding runtime parameters EXTERN_SEARCH += $(EXTERN_CORE) $(TOP)/constants $(TOP)/Util/model_parser $(TOP)/Util/conservative_interpolate -ifdef MICROPHYSICS_HOME - EXTERN_SEARCH += $(MICROPHYSICS_HOME)/networks/ -endif +EXTERN_SEARCH += $(MICROPHYSICS_HOME)/networks/ EXTERN_PARAMETERS := $(shell $(AMREX_HOME)/Tools/F_scripts/findparams.py $(EXTERN_SEARCH)) diff --git a/Exec/gravity_tests/DustCollapse/GNUmakefile b/Exec/gravity_tests/DustCollapse/GNUmakefile index 74dd57db16..efa49af0d2 100644 --- a/Exec/gravity_tests/DustCollapse/GNUmakefile +++ b/Exec/gravity_tests/DustCollapse/GNUmakefile @@ -20,12 +20,12 @@ GPU_COMPATIBLE_PROBLEM = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in $(CASTRO_HOME)/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the EOS directory in $(CASTRO_HOME)/Networks +# This sets the EOS directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/ignition.net +NETWORK_INPUTS = ignition.net Bpack := ./Make.package Blocs := . diff --git a/Exec/gravity_tests/StarGrav/GNUmakefile b/Exec/gravity_tests/StarGrav/GNUmakefile index c07ca522f7..b2183b667f 100644 --- a/Exec/gravity_tests/StarGrav/GNUmakefile +++ b/Exec/gravity_tests/StarGrav/GNUmakefile @@ -16,20 +16,12 @@ USE_REACT = FALSE USE_PROB_PARAMS = TRUE -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz # This sets the network directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(MICROPHYSICS_HOME)/networks/$(NETWORK_DIR)/ignition_wdconvect.net - -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +NETWORK_INPUTS = ignition_wdconvect.net Bpack := ./Make.package Blocs := . diff --git a/Exec/gravity_tests/code_comp/GNUmakefile b/Exec/gravity_tests/code_comp/GNUmakefile index 241dd26162..2ae055389e 100644 --- a/Exec/gravity_tests/code_comp/GNUmakefile +++ b/Exec/gravity_tests/code_comp/GNUmakefile @@ -18,20 +18,12 @@ GPU_COMPATIBLE_PROBLEM = TRUE USE_PROB_PARAMS = TRUE -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := gamma_law_general # This sets the network directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = simple.net - -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +NETWORK_INPUTS = simple.net Bpack := ./Make.package Blocs := . diff --git a/Exec/gravity_tests/evrard_collapse/GNUmakefile b/Exec/gravity_tests/evrard_collapse/GNUmakefile index 5123de4f04..48d85378cc 100644 --- a/Exec/gravity_tests/evrard_collapse/GNUmakefile +++ b/Exec/gravity_tests/evrard_collapse/GNUmakefile @@ -26,16 +26,12 @@ USE_PROB_PARAMS = TRUE GPU_COMPATIBLE_PROBLEM = TRUE -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos - EOS_DIR := gamma_law_general -else - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) -endif - -# This sets the network directory in Castro/Networks +# This sets the EOS directory in $(MICROPHYSICS_HOME)/eos +EOS_DIR := gamma_law_general + +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack += $(TEST_DIR)/Make.package Blocs += $(TEST_DIR) diff --git a/Exec/gravity_tests/hydrostatic_adjust/GNUmakefile b/Exec/gravity_tests/hydrostatic_adjust/GNUmakefile index 99380e9a7c..69825cb346 100644 --- a/Exec/gravity_tests/hydrostatic_adjust/GNUmakefile +++ b/Exec/gravity_tests/hydrostatic_adjust/GNUmakefile @@ -15,20 +15,12 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz # This sets the EOS directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(MICROPHYSICS_HOME)/networks/$(NETWORK_DIR)/ignition.net - -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +NETWORK_INPUTS = ignition.net Bpack := ./Make.package Blocs := . diff --git a/Exec/gravity_tests/uniform_cube_sphere/GNUmakefile b/Exec/gravity_tests/uniform_cube_sphere/GNUmakefile index 9588a0a358..79b46e49dd 100644 --- a/Exec/gravity_tests/uniform_cube_sphere/GNUmakefile +++ b/Exec/gravity_tests/uniform_cube_sphere/GNUmakefile @@ -26,12 +26,12 @@ GPU_COMPATIBLE_PROBLEM = TRUE USE_PROB_PARAMS = TRUE -# This sets the EOS directory in $(CASTRO_HOME)/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHSICS_HOME)/Networks NETWORK_DIR ?= general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack += $(TEST_DIR)/Make.package Blocs += $(TEST_DIR) diff --git a/Exec/hydro_tests/HCBubble/GNUmakefile b/Exec/hydro_tests/HCBubble/GNUmakefile index 42eab4199f..cbc1fc41f4 100644 --- a/Exec/hydro_tests/HCBubble/GNUmakefile +++ b/Exec/hydro_tests/HCBubble/GNUmakefile @@ -15,19 +15,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos - EOS_DIR := gamma_law_general -else - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) -endif - -# This sets the EOS directory in Castro/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := gamma_law_general -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/KH/GNUmakefile b/Exec/hydro_tests/KH/GNUmakefile index 1cd570d509..cdc28f2264 100644 --- a/Exec/hydro_tests/KH/GNUmakefile +++ b/Exec/hydro_tests/KH/GNUmakefile @@ -24,12 +24,12 @@ USE_PROB_PARAMS = TRUE NUMADV := 1 -# This sets the EOS directory in Castro/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR ?= gamma_law -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR ?= general_null -GENERAL_NET_INPUTS ?= $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS ?= gammalaw.net Bpack += $(TEST_DIR)/Make.package Blocs += $(TEST_DIR)/. diff --git a/Exec/hydro_tests/Noh/GNUmakefile b/Exec/hydro_tests/Noh/GNUmakefile index 60e94b6e98..d21bf14a6d 100644 --- a/Exec/hydro_tests/Noh/GNUmakefile +++ b/Exec/hydro_tests/Noh/GNUmakefile @@ -20,11 +20,12 @@ COMP = gnu USE_MPI = TRUE USE_OMP = FALSE +# This sets the network directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack += $(TEST_DIR)/Make.package Blocs += $(TEST_DIR) diff --git a/Exec/hydro_tests/RT/GNUmakefile b/Exec/hydro_tests/RT/GNUmakefile index 75b07bd7e4..c66661b32f 100644 --- a/Exec/hydro_tests/RT/GNUmakefile +++ b/Exec/hydro_tests/RT/GNUmakefile @@ -17,12 +17,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in $(CASTRO_HOME)/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in $(CASTRO_HOME)/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/Sedov/GNUmakefile b/Exec/hydro_tests/Sedov/GNUmakefile index 86c5189b0c..108224266b 100644 --- a/Exec/hydro_tests/Sedov/GNUmakefile +++ b/Exec/hydro_tests/Sedov/GNUmakefile @@ -16,12 +16,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in Castro/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/Sod/GNUmakefile b/Exec/hydro_tests/Sod/GNUmakefile index d198d6cd52..38d66a7d37 100644 --- a/Exec/hydro_tests/Sod/GNUmakefile +++ b/Exec/hydro_tests/Sod/GNUmakefile @@ -18,12 +18,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in Castro/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/Sod_stellar/GNUmakefile b/Exec/hydro_tests/Sod_stellar/GNUmakefile index f460e8a4dd..556603bcdb 100644 --- a/Exec/hydro_tests/Sod_stellar/GNUmakefile +++ b/Exec/hydro_tests/Sod_stellar/GNUmakefile @@ -17,23 +17,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz # This sets the EOS directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(MICROPHYSICS_HOME)/networks/$(NETWORK_DIR)/ignition.net - -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - -# This sets the network directory in Castro/Networks - +NETWORK_INPUTS = ignition.net Bpack := ./Make.package #$(CASTRO_HOME)/Util/exact_riemann/Make.package diff --git a/Exec/hydro_tests/Vortices_LWAcoustics/GNUmakefile b/Exec/hydro_tests/Vortices_LWAcoustics/GNUmakefile index fab340ee1f..66c7e53980 100644 --- a/Exec/hydro_tests/Vortices_LWAcoustics/GNUmakefile +++ b/Exec/hydro_tests/Vortices_LWAcoustics/GNUmakefile @@ -16,16 +16,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos - EOS_DIR := gamma_law_general -else - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) -endif - -# This sets the network directory in Castro/Networks +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS +EOS_DIR := gamma_law_general + +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/acoustic_pulse/GNUmakefile b/Exec/hydro_tests/acoustic_pulse/GNUmakefile index c699f554a2..2db373a8a0 100644 --- a/Exec/hydro_tests/acoustic_pulse/GNUmakefile +++ b/Exec/hydro_tests/acoustic_pulse/GNUmakefile @@ -15,12 +15,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in Castro/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/acoustic_pulse_general/GNUmakefile b/Exec/hydro_tests/acoustic_pulse_general/GNUmakefile index b6a55513d1..cc7112072e 100644 --- a/Exec/hydro_tests/acoustic_pulse_general/GNUmakefile +++ b/Exec/hydro_tests/acoustic_pulse_general/GNUmakefile @@ -15,12 +15,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in Castro/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := helmholtz -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/double_bubble/GNUmakefile b/Exec/hydro_tests/double_bubble/GNUmakefile index 630307ba9b..201717d0d3 100644 --- a/Exec/hydro_tests/double_bubble/GNUmakefile +++ b/Exec/hydro_tests/double_bubble/GNUmakefile @@ -15,12 +15,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in $(CASTRO_HOME)/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := multigamma -# This sets the network directory in $(CASTRO_HOME)/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/simple3.net +NETWORK_INPUTS = simple3.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/double_mach_reflection/GNUmakefile b/Exec/hydro_tests/double_mach_reflection/GNUmakefile index c699f554a2..2db373a8a0 100644 --- a/Exec/hydro_tests/double_mach_reflection/GNUmakefile +++ b/Exec/hydro_tests/double_mach_reflection/GNUmakefile @@ -15,12 +15,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in Castro/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/gamma_law_bubble/GNUmakefile b/Exec/hydro_tests/gamma_law_bubble/GNUmakefile index 8b3ef3ad45..cfe352cb26 100644 --- a/Exec/hydro_tests/gamma_law_bubble/GNUmakefile +++ b/Exec/hydro_tests/gamma_law_bubble/GNUmakefile @@ -16,16 +16,12 @@ USE_PROB_PARAMS = TRUE USE_MAESTRO_INIT = FALSE -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos - EOS_DIR := gamma_law_general -else - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) -endif - -# This sets the network directory in $(CASTRO_HOME)/Networks +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS +EOS_DIR := gamma_law_general + +# This sets the network directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/gresho_vortex/GNUmakefile b/Exec/hydro_tests/gresho_vortex/GNUmakefile index e80851f798..ebee2ed1f3 100644 --- a/Exec/hydro_tests/gresho_vortex/GNUmakefile +++ b/Exec/hydro_tests/gresho_vortex/GNUmakefile @@ -20,12 +20,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in $(CASTRO_HOME)/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/heating_verification/GNUmakefile b/Exec/hydro_tests/heating_verification/GNUmakefile index 7d9da39059..c6b790cb3a 100644 --- a/Exec/hydro_tests/heating_verification/GNUmakefile +++ b/Exec/hydro_tests/heating_verification/GNUmakefile @@ -16,12 +16,12 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -# This sets the EOS directory in $(CASTRO_HOME)/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law_general -# This sets the network directory in $(CASTRO_HOME)/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/oddeven/GNUmakefile b/Exec/hydro_tests/oddeven/GNUmakefile index 34d21700b3..b4d18a51b7 100644 --- a/Exec/hydro_tests/oddeven/GNUmakefile +++ b/Exec/hydro_tests/oddeven/GNUmakefile @@ -16,12 +16,12 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -# This sets the EOS directory in $(CASTRO_HOME)/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in $(CASTRO_HOME)/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/riemann_test_zone/GNUmakefile b/Exec/hydro_tests/riemann_test_zone/GNUmakefile index 0d6fc36ecf..04376c5aab 100644 --- a/Exec/hydro_tests/riemann_test_zone/GNUmakefile +++ b/Exec/hydro_tests/riemann_test_zone/GNUmakefile @@ -15,12 +15,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in Castro/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/rotating_torus/GNUmakefile b/Exec/hydro_tests/rotating_torus/GNUmakefile index 71094e2ece..c58df32368 100644 --- a/Exec/hydro_tests/rotating_torus/GNUmakefile +++ b/Exec/hydro_tests/rotating_torus/GNUmakefile @@ -19,20 +19,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := polytrope # This sets the EOS directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(MICROPHYSICS_HOME)/networks/$(NETWORK_DIR)/ignition.net - -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +NETWORK_INPUTS = ignition.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/symmetry/GNUmakefile b/Exec/hydro_tests/symmetry/GNUmakefile index e5d4cb9299..5d9efa16bf 100644 --- a/Exec/hydro_tests/symmetry/GNUmakefile +++ b/Exec/hydro_tests/symmetry/GNUmakefile @@ -15,12 +15,12 @@ USE_PROB_PARAMS = TRUE # define the location of the CASTRO top directory CASTRO_HOME := ../../.. -# This sets the EOS directory in Castro/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law -# This sets the network directory in Castro/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/test_convect/GNUmakefile b/Exec/hydro_tests/test_convect/GNUmakefile index 7a0a42ec9f..e5fe2830dd 100644 --- a/Exec/hydro_tests/test_convect/GNUmakefile +++ b/Exec/hydro_tests/test_convect/GNUmakefile @@ -15,20 +15,12 @@ USE_REACT = FALSE USE_PROB_PARAMS = TRUE -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz # This sets the EOS directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(MICROPHYSICS_HOME)/networks/$(NETWORK_DIR)/ignition.net - -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +NETWORK_INPUTS = ignition.net Bpack := ./Make.package Blocs := . diff --git a/Exec/hydro_tests/toy_convect/GNUmakefile b/Exec/hydro_tests/toy_convect/GNUmakefile index e3fb2caab6..b3160b3232 100644 --- a/Exec/hydro_tests/toy_convect/GNUmakefile +++ b/Exec/hydro_tests/toy_convect/GNUmakefile @@ -15,20 +15,12 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz # This sets the EOS directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(MICROPHYSICS_HOME)/networks/$(NETWORK_DIR)/hotcno.net - -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +NETWORK_INPUTS = hotcno.net Bpack := ./Make.package Blocs := . diff --git a/Exec/reacting_tests/bubble_convergence/GNUmakefile b/Exec/reacting_tests/bubble_convergence/GNUmakefile index 5a08b10ae3..28cf2abc1e 100644 --- a/Exec/reacting_tests/bubble_convergence/GNUmakefile +++ b/Exec/reacting_tests/bubble_convergence/GNUmakefile @@ -15,20 +15,12 @@ USE_MAESTRO_INIT = FALSE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz # This sets the EOS directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := triple_alpha_plus_cago -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - Bpack := ./Make.package Blocs := . diff --git a/Exec/reacting_tests/nse_test/GNUmakefile b/Exec/reacting_tests/nse_test/GNUmakefile index a872f14b68..71d3ef8f4f 100644 --- a/Exec/reacting_tests/nse_test/GNUmakefile +++ b/Exec/reacting_tests/nse_test/GNUmakefile @@ -15,8 +15,6 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz @@ -25,12 +23,6 @@ NETWORK_DIR := aprox19 INTEGRATOR_DIR := VODE90 -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - Bpack := ./Make.package Blocs := . diff --git a/Exec/reacting_tests/reacting_bubble/GNUmakefile b/Exec/reacting_tests/reacting_bubble/GNUmakefile index 77a9d44e79..c557644e5b 100644 --- a/Exec/reacting_tests/reacting_bubble/GNUmakefile +++ b/Exec/reacting_tests/reacting_bubble/GNUmakefile @@ -15,20 +15,12 @@ USE_MAESTRO_INIT = FALSE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz # This sets the EOS directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := ignition_simple -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - Bpack := ./Make.package Blocs := . diff --git a/Exec/reacting_tests/toy_flame/GNUmakefile b/Exec/reacting_tests/toy_flame/GNUmakefile index 1985ebd570..f78c0d4baa 100644 --- a/Exec/reacting_tests/toy_flame/GNUmakefile +++ b/Exec/reacting_tests/toy_flame/GNUmakefile @@ -17,19 +17,11 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME +# This sets the EOS directory in $(MICROPHYSICS_HOME)/eos +EOS_DIR := gamma_law_general - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos - EOS_DIR := gamma_law_general - - # This sets the network directory in $(MICROPHYSICS_HOME)/networks - NETWORK_DIR := powerlaw - -else - - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +# This sets the network directory in $(MICROPHYSICS_HOME)/networks +NETWORK_DIR := powerlaw CONDUCTIVITY_DIR := constant diff --git a/Exec/science/Detonation/GNUmakefile b/Exec/science/Detonation/GNUmakefile index afd81471cd..0a7649fa11 100644 --- a/Exec/science/Detonation/GNUmakefile +++ b/Exec/science/Detonation/GNUmakefile @@ -17,21 +17,12 @@ CASTRO_HOME = ../../.. GPU_COMPATIBLE_PROBLEM = TRUE -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz # This sets the EOS directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := aprox19 - -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - Bpack := ./Make.package Blocs := . diff --git a/Exec/science/bwp-rad/GNUmakefile b/Exec/science/bwp-rad/GNUmakefile index 4ae9d90f25..7d619b62c5 100644 --- a/Exec/science/bwp-rad/GNUmakefile +++ b/Exec/science/bwp-rad/GNUmakefile @@ -19,8 +19,6 @@ USE_REACT = FALSE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME - #This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := gamma_law_general @@ -28,13 +26,6 @@ EOS_DIR := gamma_law_general NETWORK_DIR := general_null NETWORK_INPUTS := H_He.net -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - - # power-law opacity Opacity_dir := rad_power_law diff --git a/Exec/science/convective_flame/GNUmakefile b/Exec/science/convective_flame/GNUmakefile index 6ff839652f9..95bffe3e10 100644 --- a/Exec/science/convective_flame/GNUmakefile +++ b/Exec/science/convective_flame/GNUmakefile @@ -19,19 +19,11 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME +# This sets the EOS directory in $(MICROPHYSICS_HOME)/eos +EOS_DIR := gamma_law_general - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos - EOS_DIR := gamma_law_general - - # This sets the network directory in $(MICROPHYSICS_HOME)/networks - NETWORK_DIR := powerlaw - -else - - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +# This sets the network directory in $(MICROPHYSICS_HOME)/networks +NETWORK_DIR := powerlaw CONDUCTIVITY_DIR := constant diff --git a/Exec/science/flame/GNUmakefile b/Exec/science/flame/GNUmakefile index 5f845d882e..43c2f1ee71 100644 --- a/Exec/science/flame/GNUmakefile +++ b/Exec/science/flame/GNUmakefile @@ -17,19 +17,11 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME +# This sets the EOS directory in $(MICROPHYSICS_HOME)/eos +EOS_DIR := helmholtz - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos - EOS_DIR := helmholtz - - # This sets the network directory in $(MICROPHYSICS_HOME)/networks - NETWORK_DIR := aprox13 - -else - - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +# This sets the network directory in $(MICROPHYSICS_HOME)/networks +NETWORK_DIR := aprox13 #Conductivity_dir := constant_opacity CONDUCTIVITY_DIR := stellar diff --git a/Exec/science/flame_wave/GNUmakefile b/Exec/science/flame_wave/GNUmakefile index 8f27785e9e..325d851680 100644 --- a/Exec/science/flame_wave/GNUmakefile +++ b/Exec/science/flame_wave/GNUmakefile @@ -22,20 +22,13 @@ GPU_COMPATIBLE_PROBLEM = TRUE USE_PROB_PARAMS = TRUE -ifdef MICROPHYSICS_HOME +# This sets the EOS directory in $(MICROPHYSICS_HOME)/eos +EOS_DIR := helmholtz - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos - EOS_DIR := helmholtz +# This sets the network directory in $(MICROPHYSICS_HOME)/networks +NETWORK_DIR := aprox13 - # This sets the network directory in $(MICROPHYSICS_HOME)/networks - NETWORK_DIR := aprox13 - - INTEGRATOR_DIR := VODE90 -else - - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +INTEGRATOR_DIR := VODE90 CONDUCTIVITY_DIR := stellar diff --git a/Exec/science/nova/GNUmakefile b/Exec/science/nova/GNUmakefile index ba52d52635..83ba3d119e 100644 --- a/Exec/science/nova/GNUmakefile +++ b/Exec/science/nova/GNUmakefile @@ -15,21 +15,12 @@ USE_REACT = TRUE USE_PROB_PARAMS = TRUE -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz # This sets the EOS directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := nova - -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - Bpack := ./Make.package Blocs := . diff --git a/Exec/science/planet/GNUmakefile b/Exec/science/planet/GNUmakefile index a07c7ab9dd..264f2edec4 100644 --- a/Exec/science/planet/GNUmakefile +++ b/Exec/science/planet/GNUmakefile @@ -25,8 +25,6 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME - #This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := gamma_law_general @@ -34,13 +32,6 @@ EOS_DIR := gamma_law_general NETWORK_DIR := general_null NETWORK_INPUTS := ./taeho.net -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - - # power-law opacity Opacity_dir := rad_power_law diff --git a/Exec/science/rotating_star/GNUmakefile b/Exec/science/rotating_star/GNUmakefile index 9b3f9ac20b..943e2256ec 100644 --- a/Exec/science/rotating_star/GNUmakefile +++ b/Exec/science/rotating_star/GNUmakefile @@ -16,20 +16,13 @@ USE_REACT = TRUE USE_PROB_PARAMS = TRUE -ifdef MICROPHYSICS_HOME +# This sets the EOS directory in $(MICROPHYSICS_HOME)/eos +EOS_DIR := helmholtz - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos - EOS_DIR := helmholtz +# This sets the network directory in $(MICROPHYSICS_HOME)/networks +NETWORK_DIR := aprox21 - # This sets the network directory in $(MICROPHYSICS_HOME)/networks - NETWORK_DIR := aprox21 - - INTEGRATOR_DIR := VODE90 -else - - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +INTEGRATOR_DIR := VODE90 Bpack := ./Make.package Blocs := . diff --git a/Exec/science/subchandra/GNUmakefile b/Exec/science/subchandra/GNUmakefile index 89fb8e0ddf..4695e498de 100644 --- a/Exec/science/subchandra/GNUmakefile +++ b/Exec/science/subchandra/GNUmakefile @@ -16,20 +16,13 @@ USE_REACT = TRUE USE_PROB_PARAMS = TRUE -ifdef MICROPHYSICS_HOME +# This sets the EOS directory in $(MICROPHYSICS_HOME)/eos +EOS_DIR := helmholtz - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos - EOS_DIR := helmholtz +# This sets the network directory in $(MICROPHYSICS_HOME)/networks +NETWORK_DIR := subch - # This sets the network directory in $(MICROPHYSICS_HOME)/networks - NETWORK_DIR := subch - - INTEGRATOR_DIR := VODE90 -else - - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif +INTEGRATOR_DIR := VODE90 Bpack := ./Make.package Blocs := . diff --git a/Exec/science/wdmerger/GNUmakefile b/Exec/science/wdmerger/GNUmakefile index 6c8d674668..1105aa8db5 100644 --- a/Exec/science/wdmerger/GNUmakefile +++ b/Exec/science/wdmerger/GNUmakefile @@ -32,10 +32,6 @@ INTEGRATOR_DIR ?= VODE90 COMP ?= gnu -ifndef MICROPHYSICS_HOME - $(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) -endif - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR ?= helmholtz @@ -47,7 +43,7 @@ NETWORK_DIR ?= aprox13 # If using general_null, make sure we have a reasonable set of isotopes. ifeq ($(NETWORK_DIR), general_null) - GENERAL_NET_INPUTS = $(MICROPHYSICS_HOME)/networks/$(NETWORK_DIR)/aprox13.net + NETWORK_INPUTS = aprox13.net endif # Location where the source files are coming from. diff --git a/Exec/science/xrb_mixed/GNUmakefile b/Exec/science/xrb_mixed/GNUmakefile index 8c68a5cc4c..ca77b512f0 100644 --- a/Exec/science/xrb_mixed/GNUmakefile +++ b/Exec/science/xrb_mixed/GNUmakefile @@ -15,20 +15,12 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz # This sets the EOS directory in $(MICROPHYSICS_HOME)/networks NETWORK_DIR := rprox -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - Bpack := ./Make.package Blocs := . diff --git a/Exec/unit_tests/diffusion_test/GNUmakefile b/Exec/unit_tests/diffusion_test/GNUmakefile index 295964732c..f2ce194613 100644 --- a/Exec/unit_tests/diffusion_test/GNUmakefile +++ b/Exec/unit_tests/diffusion_test/GNUmakefile @@ -18,14 +18,14 @@ GPU_COMPATIBLE_PROBLEM = TRUE CASTRO_HOME := ../../.. -# This sets the EOS directory in $(CASTRO_HOME)/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law_general CONDUCTIVITY_DIR = constant -# This sets the network directory in $(CASTRO_HOME)/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/unit_tests/model_burner/GNUmakefile b/Exec/unit_tests/model_burner/GNUmakefile index 3be3c484b2..3776acd744 100644 --- a/Exec/unit_tests/model_burner/GNUmakefile +++ b/Exec/unit_tests/model_burner/GNUmakefile @@ -23,8 +23,6 @@ USE_PROB_PARAMS = TRUE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz @@ -34,12 +32,6 @@ NETWORK_DIR := aprox21 # This sets the integrator directory in $(MICROPHYSICS_HOME)/integration INTEGRATOR_DIR := VODE90 -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - Bpack := ./Make.package Blocs := . diff --git a/Exec/unit_tests/particles_test/GNUmakefile b/Exec/unit_tests/particles_test/GNUmakefile index 43e367a3d6..0021749ec1 100644 --- a/Exec/unit_tests/particles_test/GNUmakefile +++ b/Exec/unit_tests/particles_test/GNUmakefile @@ -17,14 +17,14 @@ USE_POST_SIM = TRUE CASTRO_HOME := ../../.. -# This sets the EOS directory in $(CASTRO_HOME)/EOS +# This sets the EOS directory in $(MICROPHYSICS_HOME)/EOS EOS_DIR := gamma_law_general CONDUCTIVITY_DIR = constant -# This sets the network directory in $(CASTRO_HOME)/Networks +# This sets the network directory in $(MICROPHYSICS_HOME)/Networks NETWORK_DIR := general_null -GENERAL_NET_INPUTS = $(CASTRO_HOME)/Microphysics/networks/$(NETWORK_DIR)/gammalaw.net +NETWORK_INPUTS = gammalaw.net Bpack := ./Make.package Blocs := . diff --git a/Exec/unit_tests/reactions_driver_test/GNUmakefile b/Exec/unit_tests/reactions_driver_test/GNUmakefile index 0b3053b0f1..b1949c83c6 100644 --- a/Exec/unit_tests/reactions_driver_test/GNUmakefile +++ b/Exec/unit_tests/reactions_driver_test/GNUmakefile @@ -21,8 +21,6 @@ USE_MAESTRO_INIT = FALSE CASTRO_HOME = ../../.. -ifdef MICROPHYSICS_HOME - # This sets the EOS directory in $(MICROPHYSICS_HOME)/eos EOS_DIR := helmholtz @@ -32,12 +30,6 @@ NETWORK_DIR := ignition_simple # This sets the integrator directory in $(MICROPHYSICS_HOME)/integration INTEGRATOR_DIR := VODE90 -else - -$(error Error: This problem requires the Microphysics repository. Please ensure that you have downloaded it and set $$MICROPHYSICS_HOME appropriately) - -endif - Bpack := ./Make.package Blocs := . diff --git a/Microphysics b/Microphysics new file mode 160000 index 0000000000..a34f0df949 --- /dev/null +++ b/Microphysics @@ -0,0 +1 @@ +Subproject commit a34f0df949cfcbe528d2710a08ac249c1328852d diff --git a/Microphysics/EOS/Make.package b/Microphysics/EOS/Make.package deleted file mode 100644 index e86a627a8a..0000000000 --- a/Microphysics/EOS/Make.package +++ /dev/null @@ -1,4 +0,0 @@ -F90EXE_sources += eos.F90 -F90EXE_sources += composition.F90 -F90EXE_sources += eos_type.F90 -F90EXE_sources += eos_override.F90 diff --git a/Microphysics/EOS/README b/Microphysics/EOS/README deleted file mode 100644 index c695746ae4..0000000000 --- a/Microphysics/EOS/README +++ /dev/null @@ -1,16 +0,0 @@ -This directory contains a basic gamma law equation of state. -More advanced equation of state routines can be found in our -Microphysics repository. - -gamma_law: - - A simple gamma-law EOS. This computes the mean molecular - weight from the mass fractions and the species properties defined - in the network module. - - NOTE: this simple version of the EOS does not compute all of the - thermodynamic variables defined in the eos_type, but only those - needed for Castro's execution. - - A full implementation of the gamma_law EOS is available as - gamma_law_general in the Microphysics/ repo \ No newline at end of file diff --git a/Microphysics/EOS/_parameters b/Microphysics/EOS/_parameters deleted file mode 100644 index fe8d1ba1d0..0000000000 --- a/Microphysics/EOS/_parameters +++ /dev/null @@ -1,2 +0,0 @@ -# Force the EOS output quantities to match input -- we override the value from the helmholtz StarKiller here -eos_input_is_constant logical .true. 10000 diff --git a/Microphysics/EOS/composition.F90 b/Microphysics/EOS/composition.F90 deleted file mode 100644 index 515f4ef313..0000000000 --- a/Microphysics/EOS/composition.F90 +++ /dev/null @@ -1,86 +0,0 @@ -module eos_composition_module - - use eos_type_module, only : eos_t - use network, only: nspec - use amrex_fort_module, only : rt => amrex_real - - implicit none - - type :: eos_xderivs_t - real(rt) :: dedX(nspec) - real(rt) :: dpdX(nspec) - real(rt) :: dhdX(nspec) - end type eos_xderivs_t - -contains - - ! Given a set of mass fractions, calculate quantities that depend - ! on the composition like abar and zbar. - - subroutine composition(state) - - !$acc routine seq - - use amrex_constants_module, only: ONE - use network, only: aion_inv, zion - - implicit none - - type (eos_t), intent(inout) :: state - - !$gpu - - ! Calculate abar, the mean nucleon number, - ! zbar, the mean proton number, - ! mu, the mean molecular weight, - ! mu_e, the mean number of nucleons per electron, and - ! y_e, the electron fraction. - - state % mu_e = ONE / (sum(state % xn(:) * zion(:) * aion_inv(:))) - state % y_e = ONE / state % mu_e - - state % abar = ONE / (sum(state % xn(:) * aion_inv(:))) - state % zbar = state % abar / state % mu_e - - end subroutine composition - - - ! Compute thermodynamic derivatives with respect to xn(:) - - subroutine composition_derivatives(state, state_xderivs) - - !$acc routine seq - - use amrex_constants_module, only: ZERO - use network, only: aion, aion_inv, zion - - implicit none - - type (eos_t), intent(in) :: state - type (eos_xderivs_t), intent(out) :: state_xderivs - - !$gpu - -#ifdef EXTRA_THERMO - state_xderivs % dpdX(:) = state % dpdA * (state % abar * aion_inv(:)) & - * (aion(:) - state % abar) & - + state % dpdZ * (state % abar * aion_inv(:)) & - * (zion(:) - state % zbar) - - state_xderivs % dEdX(:) = state % dedA * (state % abar * aion_inv(:)) & - * (aion(:) - state % abar) & - + state % dedZ * (state % abar * aion_inv(:)) & - * (zion(:) - state % zbar) - - if (state % dPdr .ne. ZERO) then - - state_xderivs % dhdX(:) = state_xderivs % dedX(:) & - + (state % p / state % rho**2 - state % dedr) & - * state_xderivs % dPdX(:) / state % dPdr - - endif -#endif - - end subroutine composition_derivatives - -end module eos_composition_module diff --git a/Microphysics/EOS/eos.F90 b/Microphysics/EOS/eos.F90 deleted file mode 100644 index be21c9eb32..0000000000 --- a/Microphysics/EOS/eos.F90 +++ /dev/null @@ -1,660 +0,0 @@ -module eos_module - - implicit none - - public eos_init, eos - - logical, save :: initialized = .false. - -contains - - ! EOS initialization routine: read in general EOS parameters, then - ! call any specific initialization used by the EOS. - - subroutine eos_init(small_temp, small_dens) - - use amrex_fort_module, only: rt => amrex_real - use castro_error_module - use amrex_paralleldescriptor_module, only : amrex_pd_ioprocessor - use eos_type_module, only: mintemp, mindens, maxtemp, maxdens, & - minx, maxx, minye, maxye, mine, maxe, & - minp, maxp, mins, maxs, minh, maxh - use actual_eos_module, only: actual_eos_init - - implicit none - - real(rt), optional :: small_temp - real(rt), optional :: small_dens - - ! Allocate and set default values - - allocate(mintemp) - allocate(maxtemp) - allocate(mindens) - allocate(maxdens) - allocate(minx) - allocate(maxx) - allocate(minye) - allocate(maxye) - allocate(mine) - allocate(maxe) - allocate(minp) - allocate(maxp) - allocate(mins) - allocate(maxs) - allocate(minh) - allocate(maxh) - - mintemp = 1.d-200 - maxtemp = 1.d200 - mindens = 1.d-200 - maxdens = 1.d200 - minx = 1.d-200 - maxx = 1.d0 + 1.d-12 - minye = 1.d-200 - maxye = 1.d0 + 1.d-12 - mine = 1.d-200 - maxe = 1.d200 - minp = 1.d-200 - maxp = 1.d200 - mins = 1.d-200 - maxs = 1.d200 - minh = 1.d-200 - maxh = 1.d200 - - ! Set up any specific parameters or initialization steps required by the EOS we are using. - - call actual_eos_init - - ! If they exist, save the minimum permitted user temperature and density. - ! These are only relevant to this module if they are larger than the minimum - ! possible EOS quantities. We will reset them to be equal to the EOS minimum - ! if they are smaller than that. - - ! Note that in this routine we use the Fortran-based parallel_IOProcessor() - ! command rather than the C++-based version used elsewhere in Castro; this - ! ensures compatibility with Fortran-based test programs. - - if (present(small_temp)) then - if (small_temp < mintemp) then - if (amrex_pd_ioprocessor()) then - call bl_warning('EOS: small_temp cannot be less than the mintemp allowed by the EOS. Resetting small_temp to mintemp.') - endif - small_temp = mintemp - else - mintemp = small_temp - endif - endif - - if (present(small_dens)) then - if (small_dens < mindens) then - if (amrex_pd_ioprocessor()) then - call bl_warning('EOS: small_dens cannot be less than the mindens allowed by the EOS. Resetting small_dens to mindens.') - endif - small_dens = mindens - else - mindens = small_dens - endif - endif - - initialized = .true. - - !$acc update & - !$acc device(mintemp, maxtemp, mindens, maxdens, minx, maxx, minye, maxye) & - !$acc device(mine, maxe, minp, maxp, mins, maxs, minh, maxh) - - end subroutine eos_init - - - subroutine eos_finalize() - - use actual_eos_module, only: actual_eos_finalize - - implicit none - - call actual_eos_finalize() - - end subroutine eos_finalize - - - subroutine eos(input, state) - - !$acc routine seq - - use eos_type_module, only: eos_t - use eos_composition_module, only : composition - use actual_eos_module, only: actual_eos - use eos_override_module, only: eos_override -#if (!(defined(AMREX_USE_CUDA) || defined(AMREX_USE_ACC))) - use castro_error_module, only: castro_error -#endif - - implicit none - - ! Input arguments - - integer, intent(in ) :: input - type (eos_t), intent(inout) :: state - - logical :: has_been_reset - - !$gpu - - ! Local variables - -#if (!(defined(AMREX_USE_CUDA) || defined(AMREX_USE_ACC))) - if (.not. initialized) call castro_error('EOS: not initialized') -#endif - - ! Get abar, zbar, etc. - - call composition(state) - - ! Force the inputs to be valid. - - has_been_reset = .false. - call reset_inputs(input, state, has_been_reset) - - ! Allow the user to override any details of the - ! EOS state. This should generally occur right - ! before the actual_eos call. - - call eos_override(state) - - ! Call the EOS. - - if (.not. has_been_reset) then - call actual_eos(input, state) - endif - - end subroutine eos - - - -#ifdef AMREX_USE_GPU - attributes(global) subroutine launch_eos(input, state) - - use eos_type_module, only: eos_t - - implicit none - - integer, intent(in ) :: input - type (eos_t), intent(inout) :: state - - ! Wrapper kernel for calling the device EOS. - -#ifdef AMREX_GPU_PRAGMA_NO_HOST - call eos(input, state) -#else - call eos_device(input, state) -#endif - - end subroutine launch_eos -#endif - - - - subroutine eos_on_host(input, state) - - use eos_type_module, only: eos_t - -#ifdef AMREX_USE_CUDA - use cudafor, only: cudaDeviceSynchronize -#endif - - implicit none - - integer, intent(in ) :: input - type (eos_t), intent(inout) :: state - -#ifdef AMREX_USE_CUDA - integer, device :: input_device - type (eos_t), device :: state_device -#endif - - ! Evaluate the EOS on a single thread on the GPU. - ! If we're in a CPU-only build, fall back to the - ! normal EOS call. - -#ifdef AMREX_USE_CUDA - input_device = input - state_device = state - - call launch_eos<<<1,1>>>(input_device, state_device) - - state = state_device -#else - call eos(input, state) -#endif - - end subroutine eos_on_host - - - - subroutine reset_inputs(input, state, has_been_reset) - - !$acc routine seq - - use eos_type_module, only: eos_t, & - eos_input_rt, eos_input_re, eos_input_rh, eos_input_tp, & - eos_input_rp, eos_input_th, eos_input_ph, eos_input_ps - - implicit none - - integer, intent(in ) :: input - type (eos_t), intent(inout) :: state - logical, intent(inout) :: has_been_reset - - !$gpu - - ! Reset the input quantities to valid values. For inputs other than rho and T, - ! this will evolve an EOS call, which will negate the need to do the main EOS call. - - if (input .eq. eos_input_rt) then - - call reset_rho(state, has_been_reset) - call reset_T(state, has_been_reset) - - elseif (input .eq. eos_input_rh) then - - call reset_rho(state, has_been_reset) - call reset_h(state, has_been_reset) - - elseif (input .eq. eos_input_tp) then - - call reset_T(state, has_been_reset) - call reset_p(state, has_been_reset) - - elseif (input .eq. eos_input_rp) then - - call reset_rho(state, has_been_reset) - call reset_p(state, has_been_reset) - - elseif (input .eq. eos_input_re) then - - call reset_rho(state, has_been_reset) - call reset_e(state, has_been_reset) - - elseif (input .eq. eos_input_ps) then - - call reset_p(state, has_been_reset) - call reset_s(state, has_been_reset) - - elseif (input .eq. eos_input_ph) then - - call reset_p(state, has_been_reset) - call reset_h(state, has_been_reset) - - elseif (input .eq. eos_input_th) then - - call reset_t(state, has_been_reset) - call reset_h(state, has_been_reset) - - endif - - end subroutine reset_inputs - - - - ! For density, just ensure that it is within mindens and maxdens. - - subroutine reset_rho(state, has_been_reset) - - !$acc routine seq - - use eos_type_module, only: eos_t, mindens, maxdens - - implicit none - - type (eos_t), intent(inout) :: state - logical, intent(inout) :: has_been_reset - - !$gpu - - state % rho = min(maxdens, max(mindens, state % rho)) - - end subroutine reset_rho - - - - ! For temperature, just ensure that it is within mintemp and maxtemp. - - subroutine reset_T(state, has_been_reset) - - !$acc routine seq - - use eos_type_module, only: eos_t, mintemp, maxtemp - - implicit none - - type (eos_t), intent(inout) :: state - logical, intent(inout) :: has_been_reset - - !$gpu - - state % T = min(maxtemp, max(mintemp, state % T)) - - end subroutine reset_T - - - - subroutine reset_e(state, has_been_reset) - - !$acc routine seq - - use eos_type_module, only: eos_t, mine, maxe - - implicit none - - type (eos_t), intent(inout) :: state - logical, intent(inout) :: has_been_reset - - !$gpu - - if (state % e .lt. mine .or. state % e .gt. maxe) then - call eos_reset(state, has_been_reset) - endif - - end subroutine reset_e - - - - subroutine reset_h(state, has_been_reset) - - !$acc routine seq - - use eos_type_module, only: eos_t, minh, maxh - - implicit none - - type (eos_t), intent(inout) :: state - logical, intent(inout) :: has_been_reset - - !$gpu - - if (state % h .lt. minh .or. state % h .gt. maxh) then - call eos_reset(state, has_been_reset) - endif - - end subroutine reset_h - - - - subroutine reset_s(state, has_been_reset) - - !$acc routine seq - - use eos_type_module, only: eos_t, mins, maxs - - implicit none - - type (eos_t), intent(inout) :: state - logical, intent(inout) :: has_been_reset - - !$gpu - - if (state % s .lt. mins .or. state % s .gt. maxs) then - call eos_reset(state, has_been_reset) - endif - - end subroutine reset_s - - - - subroutine reset_p(state, has_been_reset) - - !$acc routine seq - - use eos_type_module, only: eos_t, minp, maxp - - implicit none - - type (eos_t), intent(inout) :: state - logical, intent(inout) :: has_been_reset - - !$gpu - - if (state % p .lt. minp .or. state % p .gt. maxp) then - call eos_reset(state, has_been_reset) - endif - - end subroutine reset_p - - - - ! Given an EOS state, ensure that rho and T are - ! valid, then call with eos_input_rt. - - subroutine eos_reset(state, has_been_reset) - - !$acc routine seq - - use eos_type_module, only: eos_t, eos_input_rt, mintemp, maxtemp, mindens, maxdens - use actual_eos_module, only: actual_eos - - implicit none - - type (eos_t), intent(inout) :: state - logical, intent(inout) :: has_been_reset - - !$gpu - - state % T = min(maxtemp, max(mintemp, state % T)) - state % rho = min(maxdens, max(mindens, state % rho)) - - call actual_eos(eos_input_rt, state) - - has_been_reset = .true. - - end subroutine eos_reset - - - -#if (!(defined(AMREX_USE_CUDA) || defined(AMREX_USE_ACC))) - subroutine check_inputs(input, state) - - use castro_error_module - use network, only: nspec - use eos_type_module, only: eos_t, print_state, minx, maxx, minye, maxye, & - eos_input_rt, eos_input_re, eos_input_rp, eos_input_rh, & - eos_input_th, eos_input_tp, eos_input_ph, eos_input_ps - - implicit none - - integer, intent(in ) :: input - type (eos_t), intent(inout) :: state - - integer :: n - - ! Check the inputs for validity. - - do n = 1, nspec - if (state % xn(n) .lt. minx) then - call print_state(state) - call castro_error('EOS: mass fraction less than minimum possible mass fraction.') - else if (state % xn(n) .gt. maxx) then - call print_state(state) - call castro_error('EOS: mass fraction more than maximum possible mass fraction.') - endif - enddo - - if (state % y_e .lt. minye) then - call print_state(state) - call castro_error('EOS: y_e less than minimum possible electron fraction.') - else if (state % y_e .gt. maxye) then - call print_state(state) - call castro_error('EOS: y_e greater than maximum possible electron fraction.') - endif - - if (input .eq. eos_input_rt) then - - call check_rho(state) - call check_T(state) - - elseif (input .eq. eos_input_rh) then - - call check_rho(state) - call check_h(state) - - elseif (input .eq. eos_input_tp) then - - call check_T(state) - call check_p(state) - - elseif (input .eq. eos_input_rp) then - - call check_rho(state) - call check_p(state) - - elseif (input .eq. eos_input_re) then - - call check_rho(state) - call check_e(state) - - elseif (input .eq. eos_input_ps) then - - call check_p(state) - call check_s(state) - - elseif (input .eq. eos_input_ph) then - - call check_p(state) - call check_h(state) - - elseif (input .eq. eos_input_th) then - - call check_t(state) - call check_h(state) - - endif - - end subroutine check_inputs - - - - subroutine check_rho(state) - - use castro_error_module - use eos_type_module, only: eos_t, mindens, maxdens, print_state - - implicit none - - type (eos_t), intent(in) :: state - - if (state % rho .lt. mindens) then - call print_state(state) - call castro_error('EOS: rho smaller than mindens.') - else if (state % rho .gt. maxdens) then - call print_state(state) - call castro_error('EOS: rho greater than maxdens.') - endif - - end subroutine check_rho - - - - subroutine check_T(state) - - use castro_error_module - use eos_type_module, only: eos_t, mintemp, maxtemp, print_state - - implicit none - - type (eos_t), intent(in) :: state - - if (state % T .lt. mintemp) then - call print_state(state) - call castro_error('EOS: T smaller than mintemp.') - else if (state % T .gt. maxtemp) then - call print_state(state) - call castro_error('EOS: T greater than maxtemp.') - endif - - end subroutine check_T - - - - subroutine check_e(state) - - use castro_error_module - use eos_type_module, only: eos_t, mine, maxe, print_state - - implicit none - - type (eos_t), intent(in) :: state - - if (state % e .lt. mine) then - call print_state(state) - call castro_error('EOS: e smaller than mine.') - else if (state % e .gt. maxe) then - call print_state(state) - call castro_error('EOS: e greater than maxe.') - endif - - end subroutine check_e - - - - subroutine check_h(state) - - use castro_error_module - use eos_type_module, only: eos_t, minh, maxh, print_state - - implicit none - - type (eos_t), intent(in) :: state - - if (state % h .lt. minh) then - call print_state(state) - call castro_error('EOS: h smaller than minh.') - else if (state % h .gt. maxh) then - call print_state(state) - call castro_error('EOS: h greater than maxh.') - endif - - end subroutine check_h - - - - subroutine check_s(state) - - use castro_error_module - use eos_type_module, only: eos_t, mins, maxs, print_state - - implicit none - - type (eos_t), intent(in) :: state - - if (state % s .lt. mins) then - call print_state(state) - call castro_error('EOS: s smaller than mins.') - else if (state % s .gt. maxs) then - call print_state(state) - call castro_error('EOS: s greater than maxs.') - endif - - end subroutine check_s - - - - subroutine check_p(state) - - use castro_error_module - use eos_type_module, only: eos_t, minp, maxp, print_state - - implicit none - - type (eos_t), intent(in) :: state - - if (state % p .lt. minp) then - call print_state(state) - call castro_error('EOS: p smaller than minp.') - else if (state % p .gt. maxp) then - call print_state(state) - call castro_error('EOS: p greater than maxp.') - endif - - end subroutine check_p -#endif - -end module eos_module diff --git a/Microphysics/EOS/eos_override.F90 b/Microphysics/EOS/eos_override.F90 deleted file mode 100644 index 2fe2e5ef73..0000000000 --- a/Microphysics/EOS/eos_override.F90 +++ /dev/null @@ -1,25 +0,0 @@ -module eos_override_module - - implicit none - - public eos_override - -contains - - ! This is a user hook to override the details of the EOS state. - - subroutine eos_override(state) - - !$acc routine seq - - use eos_type_module, only: eos_t - - implicit none - - type (eos_t) :: state - - !$gpu - - end subroutine eos_override - -end module eos_override_module diff --git a/Microphysics/EOS/eos_type.F90 b/Microphysics/EOS/eos_type.F90 deleted file mode 100644 index ae6a7f2aaa..0000000000 --- a/Microphysics/EOS/eos_type.F90 +++ /dev/null @@ -1,431 +0,0 @@ -module eos_type_module - - use castro_error_module, only: castro_error - use amrex_fort_module, only : rt => amrex_real - use network, only: nspec, naux - - implicit none - - private :: rt, nspec, naux - - integer, parameter :: eos_input_rt = 1 ! rho, T are inputs - integer, parameter :: eos_input_rh = 2 ! rho, h are inputs - integer, parameter :: eos_input_tp = 3 ! T, p are inputs - integer, parameter :: eos_input_rp = 4 ! rho, p are inputs - integer, parameter :: eos_input_re = 5 ! rho, e are inputs - integer, parameter :: eos_input_ps = 6 ! p, s are inputs - integer, parameter :: eos_input_ph = 7 ! p, h are inputs - integer, parameter :: eos_input_th = 8 ! T, h are inputs - - ! these are used to allow for a generic interface to the - ! root finding - integer, parameter :: itemp = 1 - integer, parameter :: idens = 2 - integer, parameter :: iener = 3 - integer, parameter :: ienth = 4 - integer, parameter :: ientr = 5 - integer, parameter :: ipres = 6 - - ! error codes - integer, parameter :: ierr_general = 1 - integer, parameter :: ierr_input = 2 - integer, parameter :: ierr_iter_conv = 3 - integer, parameter :: ierr_neg_e = 4 - integer, parameter :: ierr_neg_p = 5 - integer, parameter :: ierr_neg_h = 6 - integer, parameter :: ierr_neg_s = 7 - integer, parameter :: ierr_iter_var = 8 - integer, parameter :: ierr_init = 9 - integer, parameter :: ierr_init_xn = 10 - integer, parameter :: ierr_out_of_bounds = 11 - integer, parameter :: ierr_not_implemented = 12 - - ! Minimum and maximum thermodynamic quantities permitted by the EOS. - - real(rt), allocatable :: mintemp - real(rt), allocatable :: maxtemp - real(rt), allocatable :: mindens - real(rt), allocatable :: maxdens - real(rt), allocatable :: minx - real(rt), allocatable :: maxx - real(rt), allocatable :: minye - real(rt), allocatable :: maxye - real(rt), allocatable :: mine - real(rt), allocatable :: maxe - real(rt), allocatable :: minp - real(rt), allocatable :: maxp - real(rt), allocatable :: mins - real(rt), allocatable :: maxs - real(rt), allocatable :: minh - real(rt), allocatable :: maxh - - !$acc declare & - !$acc create(mintemp, maxtemp, mindens, maxdens, minx, maxx, minye, maxye) & - !$acc create(mine, maxe, minp, maxp, mins, maxs, minh, maxh) - -#ifdef AMREX_USE_CUDA - attributes(managed) :: mintemp - attributes(managed) :: maxtemp - attributes(managed) :: mindens - attributes(managed) :: maxdens - attributes(managed) :: minx - attributes(managed) :: maxx - attributes(managed) :: minye - attributes(managed) :: maxye - attributes(managed) :: mine - attributes(managed) :: maxe - attributes(managed) :: minp - attributes(managed) :: maxp - attributes(managed) :: mins - attributes(managed) :: maxs - attributes(managed) :: minh - attributes(managed) :: maxh -#endif - - ! A generic structure holding thermodynamic quantities and their derivatives, - ! plus some other quantities of interest. - - ! rho -- mass density (g/cm**3) - ! T -- temperature (K) - ! xn -- the mass fractions of the individual isotopes - ! p -- the pressure (dyn/cm**2) - ! h -- the enthalpy (erg/g) - ! e -- the internal energy (erg/g) - ! s -- the entropy (erg/g/K) - ! c_v -- specific heat at constant volume - ! c_p -- specific heat at constant pressure - ! ne -- number density of electrons + positrons - ! np -- number density of positrons only - ! eta -- degeneracy parameter - ! pele -- electron pressure + positron pressure - ! ppos -- position pressure only - ! mu -- mean molecular weight - ! mu_e -- mean number of nucleons per electron - ! y_e -- electron fraction == 1 / mu_e - ! dPdT -- d pressure/ d temperature - ! dPdr -- d pressure/ d density - ! dedT -- d energy/ d temperature - ! dedr -- d energy/ d density - ! dsdT -- d entropy/ d temperature - ! dsdr -- d entropy/ d density - ! dhdT -- d enthalpy/ d temperature - ! dhdr -- d enthalpy/ d density - ! gam1 -- first adiabatic index (d log P/ d log rho) |_s - ! cs -- sound speed - ! abar -- average atomic number ( sum_k {X_k} ) / ( sum_k {X_k/A_k} ) - ! zbar -- average proton number ( sum_k {Z_k X_k/ A_k} ) / ( sum_k {X_k/A_k} ) - ! dpdA -- d pressure/ d abar - ! dpdZ -- d pressure/ d zbar - ! dedA -- d energy/ d abar - ! dedZ -- d energy/ d zbar - ! dpde -- d pressure / d energy |_rho - ! dpdr_e -- d pressure / d rho |_energy - ! conductivity -- thermal conductivity (in erg/cm/K/sec) - - type :: eos_t - - real(rt) :: rho - real(rt) :: T - real(rt) :: p - real(rt) :: e - real(rt) :: h - real(rt) :: s - real(rt) :: xn(nspec) - real(rt) :: aux(naux) - - real(rt) :: dpdT - real(rt) :: dpdr - real(rt) :: dedT - real(rt) :: dedr - real(rt) :: dhdT - real(rt) :: dhdr - real(rt) :: dsdT - real(rt) :: dsdr - real(rt) :: dpde - real(rt) :: dpdr_e - - real(rt) :: cv - real(rt) :: cp - real(rt) :: xne - real(rt) :: xnp - real(rt) :: eta - real(rt) :: pele - real(rt) :: ppos - real(rt) :: mu - real(rt) :: mu_e - real(rt) :: y_e - real(rt) :: gam1 - real(rt) :: cs - - real(rt) :: abar - real(rt) :: zbar - -#ifdef EXTRA_THERMO - real(rt) :: dpdA - real(rt) :: dpdZ - real(rt) :: dedA - real(rt) :: dedZ -#endif - - real(rt) :: conductivity - - end type eos_t - -contains - - ! Provides a copy subroutine for the eos_t type to - ! avoid derived type assignment (OpenACC and CUDA can't handle that) - subroutine copy_eos_t(to_eos, from_eos) - - implicit none - - type(eos_t) :: to_eos, from_eos - - !$gpu - - to_eos % rho = from_eos % rho - to_eos % T = from_eos % T - to_eos % p = from_eos % p - to_eos % e = from_eos % e - to_eos % h = from_eos % h - to_eos % s = from_eos % s - to_eos % xn(:) = from_eos % xn(:) - to_eos % aux(:) = from_eos % aux(:) - - to_eos % dpdT = from_eos % dpdT - to_eos % dpdr = from_eos % dpdr - to_eos % dedT = from_eos % dedT - to_eos % dedr = from_eos % dedr - to_eos % dhdT = from_eos % dhdT - to_eos % dhdr = from_eos % dhdr - to_eos % dsdT = from_eos % dsdT - to_eos % dsdr = from_eos % dsdr - to_eos % dpde = from_eos % dpde - to_eos % dpdr_e = from_eos % dpdr_e - - to_eos % cv = from_eos % cv - to_eos % cp = from_eos % cp - to_eos % xne = from_eos % xne - to_eos % xnp = from_eos % xnp - to_eos % eta = from_eos % eta - to_eos % pele = from_eos % pele - to_eos % ppos = from_eos % ppos - to_eos % mu = from_eos % mu - to_eos % mu_e = from_eos % mu_e - to_eos % y_e = from_eos % y_e - - to_eos % gam1 = from_eos % gam1 - to_eos % cs = from_eos % cs - - to_eos % abar = from_eos % abar - to_eos % zbar = from_eos % zbar - -#ifdef EXTRA_THERMO - to_eos % dpdA = from_eos % dpdA - to_eos % dpdZ = from_eos % dpdZ - to_eos % dedA = from_eos % dedA - to_eos % dedZ = from_eos % dedZ -#endif - - to_eos % conductivity = from_eos % conductivity - - end subroutine copy_eos_t - - - ! Normalize the mass fractions: they must be individually positive - ! and less than one, and they must all sum to unity. - - subroutine normalize_abundances(state) - - !$acc routine seq - - use amrex_constants_module, only: ONE - use extern_probin_module, only: small_x - - implicit none - - type (eos_t), intent(inout) :: state - - !$gpu - - state % xn = max(small_x, min(ONE, state % xn)) - - state % xn = state % xn / sum(state % xn) - - end subroutine normalize_abundances - - - ! Ensure that inputs are within reasonable limits. - - subroutine clean_state(state) - - !$acc routine seq - - implicit none - - type (eos_t), intent(inout) :: state - - !$gpu - - state % T = min(maxtemp, max(mintemp, state % T)) - state % rho = min(maxdens, max(mindens, state % rho)) - - end subroutine clean_state - - - - ! Print out details of the state. - - subroutine print_state(state) - - implicit none - - type (eos_t), intent(in) :: state - - print *, 'DENS = ', state % rho - print *, 'TEMP = ', state % T - print *, 'X = ', state % xn - print *, 'Y_E = ', state % y_e - - end subroutine print_state - - - subroutine eos_get_small_temp(small_temp_out) - - implicit none - - real(rt), intent(out) :: small_temp_out - - !$gpu - - small_temp_out = mintemp - - end subroutine eos_get_small_temp - - - - subroutine eos_get_small_dens(small_dens_out) - - implicit none - - real(rt), intent(out) :: small_dens_out - - !$gpu - - small_dens_out = mindens - - end subroutine eos_get_small_dens - - - - subroutine eos_get_max_temp(max_temp_out) - - implicit none - - real(rt), intent(out) :: max_temp_out - - !$gpu - - max_temp_out = maxtemp - - end subroutine eos_get_max_temp - - - - subroutine eos_get_max_dens(max_dens_out) - - implicit none - - real(rt), intent(out) :: max_dens_out - - !$gpu - - max_dens_out = maxdens - - end subroutine eos_get_max_dens - - - ! Check to see if variable ivar is a valid - ! independent variable for the given input - function eos_input_has_var(input, ivar) result(has) - - implicit none - - integer, intent(in) :: input, ivar - logical :: has - - !$gpu - - has = .false. - - select case (ivar) - - case (itemp) - - if (input == eos_input_rt .or. & - input == eos_input_tp .or. & - input == eos_input_th) then - - has = .true. - - endif - - case (idens) - - if (input == eos_input_rt .or. & - input == eos_input_rh .or. & - input == eos_input_rp .or. & - input == eos_input_re) then - - has = .true. - - endif - - case (iener) - - if (input == eos_input_re) then - - has = .true. - - endif - - case (ienth) - - if (input == eos_input_rh .or. & - input == eos_input_ph .or. & - input == eos_input_th) then - - has = .true. - - endif - - case (ientr) - - if (input == eos_input_ps) then - - has = .true. - - endif - - case (ipres) - - if (input == eos_input_tp .or. & - input == eos_input_rp .or. & - input == eos_input_ps .or. & - input == eos_input_ph) then - - has = .true. - - endif - - case default - -#ifndef AMREX_USE_CUDA - call castro_error("EOS: invalid independent variable") -#endif - - end select - - end function eos_input_has_var - -end module eos_type_module diff --git a/Microphysics/EOS/gamma_law/Make.package b/Microphysics/EOS/gamma_law/Make.package deleted file mode 100644 index 444bc128ff..0000000000 --- a/Microphysics/EOS/gamma_law/Make.package +++ /dev/null @@ -1 +0,0 @@ -F90EXE_sources += gamma_law.F90 diff --git a/Microphysics/EOS/gamma_law/_parameters b/Microphysics/EOS/gamma_law/_parameters deleted file mode 100644 index d7f9a4be9c..0000000000 --- a/Microphysics/EOS/gamma_law/_parameters +++ /dev/null @@ -1,2 +0,0 @@ -eos_gamma real 5.d0/3.d0 -eos_assume_neutral logical .true. diff --git a/Microphysics/EOS/gamma_law/gamma_law.F90 b/Microphysics/EOS/gamma_law/gamma_law.F90 deleted file mode 100644 index e518e6eefc..0000000000 --- a/Microphysics/EOS/gamma_law/gamma_law.F90 +++ /dev/null @@ -1,178 +0,0 @@ -! This is a constant gamma equation of state, using an ideal gas. -! -! This a simplified version of the more general eos_gamma_general. -! - -module actual_eos_module - - use amrex_fort_module, only : rt => amrex_real - use castro_error_module - use amrex_constants_module - use eos_type_module - - implicit none - - character (len=64) :: eos_name = "gamma_law" - - double precision, allocatable, save :: gamma_const - - logical, allocatable, save :: assume_neutral - -#ifdef AMREX_USE_CUDA - attributes(managed) :: gamma_const, assume_neutral -#endif - - !$acc declare create(gamma_const, assume_neutral) - -contains - - subroutine actual_eos_init - - use extern_probin_module, only: eos_gamma, eos_assume_neutral - - implicit none - - allocate(gamma_const) - allocate(assume_neutral) - - ! constant ratio of specific heats - if (eos_gamma .gt. 0.d0) then - gamma_const = eos_gamma - else - call castro_error("gamma_const cannot be < 0") - end if - - assume_neutral = eos_assume_neutral - - !$acc update device(gamma_const, assume_neutral) - - end subroutine actual_eos_init - - subroutine actual_eos_finalize() - - implicit none - - end subroutine actual_eos_finalize - - subroutine actual_eos(input, state) - - !$acc routine seq - - use fundamental_constants_module, only: k_B, n_A - use network, only: aion, zion - - implicit none - - integer, intent(in ) :: input - type (eos_t), intent(inout) :: state - - double precision, parameter :: R = k_B*n_A - - double precision :: poverrho - - !$gpu - - ! Calculate mu. - - if (assume_neutral) then - state % mu = state % abar - else - state % mu = ONE / sum( (ONE + zion(:)) * state % xn(:) / aion(:) ) - endif - - select case (input) - - case (eos_input_rt) - - ! dens, temp and xmass are inputs - state % cv = R / (state % mu * (gamma_const-ONE)) - state % e = state % cv * state % T - state % p = (gamma_const-ONE) * state % rho * state % e - state % gam1 = gamma_const - - case (eos_input_rh) - - ! dens, enthalpy, and xmass are inputs - -#if (!(defined(AMREX_USE_ACC) || defined(AMREX_USE_CUDA))) - call castro_error('EOS: eos_input_rh is not supported in this EOS.') -#endif - - case (eos_input_tp) - - ! temp, pres, and xmass are inputs - -#if (!(defined(AMREX_USE_ACC) || defined(AMREX_USE_CUDA))) - call castro_error('EOS: eos_input_tp is not supported in this EOS.') -#endif - - case (eos_input_rp) - - ! dens, pres, and xmass are inputs - - poverrho = state % p / state % rho - state % T = poverrho * state % mu * (ONE/R) - state % e = poverrho * (ONE/(gamma_const-ONE)) - state % gam1 = gamma_const - - case (eos_input_re) - - ! dens, energy, and xmass are inputs - - poverrho = (gamma_const - ONE) * state % e - - state % p = poverrho * state % rho - state % T = poverrho * state % mu * (ONE/R) - state % gam1 = gamma_const - - ! sound speed - state % cs = sqrt(gamma_const * poverrho) - - state % dpdr_e = poverrho - state % dpde = (gamma_const-ONE) * state % rho - - ! Try to avoid the expensive log function. Since we don't need entropy - ! in hydro solver, set it to an invalid but "nice" value for the plotfile. - state % s = ONE - - case (eos_input_ps) - - ! pressure entropy, and xmass are inputs - -#if (!(defined(AMREX_USE_ACC) || defined(AMREX_USE_CUDA))) - call castro_error('EOS: eos_input_ps is not supported in this EOS.') -#endif - - case (eos_input_ph) - - ! pressure, enthalpy and xmass are inputs - -#if (!(defined(AMREX_USE_ACC) || defined(AMREX_USE_CUDA))) - call castro_error('EOS: eos_input_ph is not supported in this EOS.') -#endif - - case (eos_input_th) - - ! temperature, enthalpy and xmass are inputs - - ! This system is underconstrained. - -#if (!(defined(AMREX_USE_ACC) || defined(AMREX_USE_CUDA))) - call castro_error('EOS: eos_input_th is not a valid input for the gamma law EOS.') -#endif - - case default - -#if (!(defined(AMREX_USE_ACC) || defined(AMREX_USE_CUDA))) - call castro_error('EOS: invalid input.') -#endif - - end select - - ! Give dpdr a value for the purposes of the composition_derivatives routine. - - state % dPdr = ZERO - - end subroutine actual_eos - -end module actual_eos_module diff --git a/Microphysics/EOS/rad_power_law/Make.package b/Microphysics/EOS/rad_power_law/Make.package deleted file mode 100644 index c5a98f836f..0000000000 --- a/Microphysics/EOS/rad_power_law/Make.package +++ /dev/null @@ -1 +0,0 @@ -F90EXE_sources += rad_power_law.F90 diff --git a/Microphysics/EOS/rad_power_law/_parameters b/Microphysics/EOS/rad_power_law/_parameters deleted file mode 100644 index 586cf8acee..0000000000 --- a/Microphysics/EOS/rad_power_law/_parameters +++ /dev/null @@ -1,3 +0,0 @@ -eos_const_c_v real -1.d0 -eos_c_v_exp_m real 0.d0 -eos_c_v_exp_n real 0.d0 diff --git a/Microphysics/EOS/rad_power_law/rad_power_law.F90 b/Microphysics/EOS/rad_power_law/rad_power_law.F90 deleted file mode 100644 index bec128a075..0000000000 --- a/Microphysics/EOS/rad_power_law/rad_power_law.F90 +++ /dev/null @@ -1,118 +0,0 @@ -! This is an artificial equation of state used primarily for radiation tests. -! -! It is defined by the relationship: -! c_v = K * rho**m * T**(-n) -! where K, m, and n are user-defined constant parameters. -! -! Ignoring the integration constant, we thus have the relationships: -! e = K * rho**m * T**(1-n) / (1 - n) -! T = ((1 - n) * e * rho**(-m) / K)**(1/(1-n)) -! -! Consequently the only input modes supported are eos_input_rt and eos_input_re. -! Pressure and Gamma_1 are not defined, so this EOS cannot be used for hydro. - -module actual_eos_module - - use amrex_fort_module, only: rt => amrex_real - use eos_type_module, only: eos_t, eos_input_rt, eos_input_re - - implicit none - - character (len=64) :: eos_name = "rad_power_law" - - real(rt), allocatable, save :: const_c_v, c_v_exp_m, c_v_exp_n - -#ifdef AMREX_USE_CUDA - attributes(managed) :: const_c_v, c_v_exp_m, c_v_exp_n -#endif - -contains - - subroutine actual_eos_init - - use extern_probin_module, only: eos_const_c_v, eos_c_v_exp_m, eos_c_v_exp_n - use castro_error_module, only: castro_error - - implicit none - - allocate(const_c_v) - allocate(c_v_exp_m) - allocate(c_v_exp_n) - - const_c_v = eos_const_c_v - c_v_exp_m = eos_c_v_exp_m - c_v_exp_n = eos_c_v_exp_n - - if (const_c_v .le. 0.e0_rt) then - call castro_error("eos_const_c_v must be > 0") - end if - - if (c_v_exp_n .eq. 1.0e0_rt) then - call castro_error("eos_c_v_exp_n == 1 is unsupported") - end if - - end subroutine actual_eos_init - - - - subroutine actual_eos_finalize() - - implicit none - - deallocate(const_c_v) - deallocate(c_v_exp_m) - deallocate(c_v_exp_n) - - end subroutine actual_eos_finalize - - - - subroutine actual_eos(input, state) - -#ifndef AMREX_USE_GPU - use castro_error_module, only: castro_error -#endif - - implicit none - - integer, intent(in ) :: input - type (eos_t), intent(inout) :: state - - !$gpu - - select case (input) - - case (eos_input_rt) - - state % cv = const_c_v * state % rho**c_v_exp_m * state % T**(-c_v_exp_n) - state % e = const_c_v * state % rho**c_v_exp_m * state % T**(1 - c_v_exp_n) / (1 - c_v_exp_n) - - case (eos_input_re) - - state % T = ((1 - c_v_exp_n) * state % e * state % rho**(-c_v_exp_m) / const_c_v)**(1 / (1 - c_v_exp_n)) - state % cv = const_c_v * state % rho**c_v_exp_m * state % T**(-c_v_exp_n) - - case default - -#ifndef AMREX_USE_GPU - call castro_error('EOS: invalid input.') -#endif - - end select - - ! Set some data to nonsense values so that things intentionally go wrong - ! if this EOS is somehow used for hydro. - - state % p = -1.e0_rt - state % gam1 = -1.e0_rt - state % cs = -1.e0_rt - state % s = -1.e0_rt - state % h = -1.e0_rt - - ! Give dpdr a value for the purposes of the composition_derivatives routine. - - state % dPdr = 0.e0_rt - - end subroutine actual_eos - -end module actual_eos_module diff --git a/Microphysics/conductivity/Make.package b/Microphysics/conductivity/Make.package deleted file mode 100644 index 37b0c72a9d..0000000000 --- a/Microphysics/conductivity/Make.package +++ /dev/null @@ -1 +0,0 @@ -F90EXE_sources += conductivity.F90 diff --git a/Microphysics/conductivity/conductivity.F90 b/Microphysics/conductivity/conductivity.F90 deleted file mode 100644 index 88301ec8cd..0000000000 --- a/Microphysics/conductivity/conductivity.F90 +++ /dev/null @@ -1,64 +0,0 @@ -module conductivity_module - ! the general interface to thermal conductivities - - use amrex_fort_module, only : rt => amrex_real - - implicit none - - logical, save :: initialized = .false. - -contains - - ! do any conductivity initialization (e.g. table reading, ...) - - subroutine conductivity_init() - - use actual_conductivity_module, only : actual_conductivity_init - - implicit none - - call actual_conductivity_init() - - initialized = .true. - - end subroutine conductivity_init - - - ! a generic wrapper that calls the EOS and then the conductivity - - subroutine conducteos(input, state) - - use actual_conductivity_module - use eos_type_module, only : eos_t - use eos_module - - implicit none - - integer , intent(in ) :: input - type (eos_t) , intent(inout) :: state - - !$gpu - - ! call the EOS, passing through the arguments we called conducteos with - call eos(input, state) - - call actual_conductivity(state) - - end subroutine conducteos - - subroutine conductivity(state) - - use actual_conductivity_module - use eos_type_module, only : eos_t - - implicit none - - !$gpu - - type (eos_t) , intent(inout) :: state - - call actual_conductivity(state) - - end subroutine conductivity - -end module conductivity_module diff --git a/Microphysics/conductivity/constant/Make.package b/Microphysics/conductivity/constant/Make.package deleted file mode 100644 index 1abbe1e247..0000000000 --- a/Microphysics/conductivity/constant/Make.package +++ /dev/null @@ -1 +0,0 @@ -F90EXE_sources += constant_conductivity.F90 diff --git a/Microphysics/conductivity/constant/_parameters b/Microphysics/conductivity/constant/_parameters deleted file mode 100644 index 8886d1c21d..0000000000 --- a/Microphysics/conductivity/constant/_parameters +++ /dev/null @@ -1,5 +0,0 @@ -const_conductivity real 1.0d0 - - - - diff --git a/Microphysics/conductivity/constant/constant_conductivity.F90 b/Microphysics/conductivity/constant/constant_conductivity.F90 deleted file mode 100644 index 93739b8364..0000000000 --- a/Microphysics/conductivity/constant/constant_conductivity.F90 +++ /dev/null @@ -1,30 +0,0 @@ -module actual_conductivity_module - - use amrex_fort_module, only : rt => amrex_real - use eos_type_module, only : eos_t - - implicit none - -contains - - subroutine actual_conductivity_init() - - implicit none - - end subroutine actual_conductivity_init - - subroutine actual_conductivity(eos_state) - - use extern_probin_module, only: const_conductivity - - implicit none - - !$gpu - - type (eos_t), intent(inout) :: eos_state - - eos_state % conductivity = const_conductivity - - end subroutine actual_conductivity - -end module actual_conductivity_module diff --git a/Microphysics/conductivity/constant_opacity/Make.package b/Microphysics/conductivity/constant_opacity/Make.package deleted file mode 100644 index a6e6eafa2e..0000000000 --- a/Microphysics/conductivity/constant_opacity/Make.package +++ /dev/null @@ -1,2 +0,0 @@ -F90EXE_sources += constant_conductive_opacity.F90 - diff --git a/Microphysics/conductivity/constant_opacity/_parameters b/Microphysics/conductivity/constant_opacity/_parameters deleted file mode 100644 index e069b77252..0000000000 --- a/Microphysics/conductivity/constant_opacity/_parameters +++ /dev/null @@ -1,4 +0,0 @@ -const_opacity real 7.0d-2 - - - diff --git a/Microphysics/conductivity/constant_opacity/constant_conductive_opacity.F90 b/Microphysics/conductivity/constant_opacity/constant_conductive_opacity.F90 deleted file mode 100644 index a8fb5e5c95..0000000000 --- a/Microphysics/conductivity/constant_opacity/constant_conductive_opacity.F90 +++ /dev/null @@ -1,29 +0,0 @@ -module actual_conductivity_module - - use amrex_fort_module, only : rt => amrex_real - use eos_type_module, only : eos_t - use fundamental_constants_module - - implicit none - -contains - - subroutine actual_conductivity_init() - - implicit none - - end subroutine actual_conductivity_init - - subroutine actual_conductivity(eos_state) - - use extern_probin_module, only: const_opacity - - type (eos_t), intent(inout) :: eos_state - - !$gpu - - eos_state % conductivity = (16*sigma_SB*(eos_state%T)**3)/(3*const_opacity*eos_state%rho) - - end subroutine actual_conductivity - -end module actual_conductivity_module diff --git a/Microphysics/conductivity/powerlaw/Make.package b/Microphysics/conductivity/powerlaw/Make.package deleted file mode 100644 index d64b50ad8d..0000000000 --- a/Microphysics/conductivity/powerlaw/Make.package +++ /dev/null @@ -1,2 +0,0 @@ -F90EXE_sources += powerlaw_conductivity.F90 - diff --git a/Microphysics/conductivity/powerlaw/_parameters b/Microphysics/conductivity/powerlaw/_parameters deleted file mode 100644 index b7a7938eea..0000000000 --- a/Microphysics/conductivity/powerlaw/_parameters +++ /dev/null @@ -1,5 +0,0 @@ -cond_coeff real 1.0 -cond_exponent real 1.0 - - - diff --git a/Microphysics/conductivity/powerlaw/powerlaw_conductivity.F90 b/Microphysics/conductivity/powerlaw/powerlaw_conductivity.F90 deleted file mode 100644 index a5e67072c1..0000000000 --- a/Microphysics/conductivity/powerlaw/powerlaw_conductivity.F90 +++ /dev/null @@ -1,29 +0,0 @@ -module actual_conductivity_module - - use amrex_fort_module, only : rt => amrex_real - use eos_type_module, only : eos_t - use fundamental_constants_module - - implicit none - -contains - - subroutine actual_conductivity_init() - - implicit none - - end subroutine actual_conductivity_init - - subroutine actual_conductivity(eos_state) - - use extern_probin_module, only: cond_coeff, cond_exponent - - type (eos_t), intent(inout) :: eos_state - - !$gpu - - eos_state % conductivity = cond_coeff * eos_state % T**cond_exponent - - end subroutine actual_conductivity - -end module actual_conductivity_module diff --git a/Microphysics/networks/Make.package b/Microphysics/networks/Make.package deleted file mode 100644 index 95f7cc35cd..0000000000 --- a/Microphysics/networks/Make.package +++ /dev/null @@ -1,9 +0,0 @@ -F90EXE_sources += network.F90 - -ifeq ($(USE_REACT),TRUE) -F90EXE_sources += burner.F90 -F90EXE_sources += burn_type.F90 -ifeq ($(USE_SIMPLIFIED_SDC), TRUE) -F90EXE_sources += sdc_type.F90 -endif -endif diff --git a/Microphysics/networks/_parameters b/Microphysics/networks/_parameters deleted file mode 100644 index f4495dc990..0000000000 --- a/Microphysics/networks/_parameters +++ /dev/null @@ -1,6 +0,0 @@ -# cutoff for species mass fractions -small_x real 1.d-30 - -# override the Microphysics default -- this enables use_retry to take -# action for burn failures -abort_on_failure logical .false. 100 diff --git a/Microphysics/networks/burn_type.F90 b/Microphysics/networks/burn_type.F90 deleted file mode 100644 index ebc986bd01..0000000000 --- a/Microphysics/networks/burn_type.F90 +++ /dev/null @@ -1,226 +0,0 @@ -module burn_type_module - -#ifdef REACT_SPARSE_JACOBIAN - use actual_network, only: nspec, nspec_evolve, naux, NETWORK_SPARSE_JAC_NNZ -#else - use actual_network, only: nspec, nspec_evolve, naux -#endif - - use amrex_fort_module, only : rt => amrex_real - - implicit none - - ! A generic structure holding data necessary to do a nuclear burn. - - ! Set the number of independent variables -- this should be - ! temperature, enuc + the number of species which participate - ! in the evolution equations. - - integer, parameter :: neqs = 2 + nspec_evolve - - ! for dimensioning the Jacobian - -#ifdef REACT_SPARSE_JACOBIAN - integer, parameter :: njrows = NETWORK_SPARSE_JAC_NNZ - integer, parameter :: njcols = 1 -#else - integer, parameter :: njrows = neqs - integer, parameter :: njcols = neqs -#endif - - - ! Indices of the temperature and energy variables in the work arrays. - - integer, parameter :: net_itemp = nspec_evolve + 1 - integer, parameter :: net_ienuc = nspec_evolve + 2 - - type :: burn_t - - real(rt) :: rho - real(rt) :: T - real(rt) :: e - real(rt) :: xn(nspec) -#if naux > 0 - real(rt) :: aux(naux) -#endif - - real(rt) :: cv - real(rt) :: cp - real(rt) :: y_e - real(rt) :: eta - real(rt) :: cs - real(rt) :: dx - real(rt) :: abar - real(rt) :: zbar - - ! Last temperature we evaluated the EOS at - real(rt) :: T_old - - ! Temperature derivatives of specific heat - real(rt) :: dcvdT - real(rt) :: dcpdT - - - ! Whether we are self-heating or not. - - logical :: self_heat - - ! Zone index information. - - integer :: i - integer :: j - integer :: k - - ! diagnostics - integer :: n_rhs - integer :: n_jac - - ! Integration time. - - real(rt) :: time - - ! Was the burn successful? - - logical :: success - - end type burn_t - -contains - - ! Implement a manual copy routine since CUDA Fortran doesn't - ! (yet) support derived type copying on the device. - subroutine copy_burn_t(to_state, from_state) - - implicit none - - type (burn_t), intent(in ) :: from_state - type (burn_t), intent( out) :: to_state - - !$gpu - - to_state % rho = from_state % rho - to_state % T = from_state % T - to_state % e = from_state % e - to_state % xn(1:nspec) = from_state % xn(1:nspec) - -#if naux > 0 - to_state % aux(1:naux) = from_state % aux(1:naux) -#endif - - to_state % cv = from_state % cv - to_state % cp = from_state % cp - to_state % y_e = from_state % y_e - to_state % eta = from_state % eta - to_state % cs = from_state % cs - to_state % dx = from_state % dx - - to_state % abar = from_state % abar - to_state % zbar = from_state % zbar - - to_state % T_old = from_state % T_old - - to_state % dcvdT = from_state % dcvdT - to_state % dcpdT = from_state % dcpdT - - to_state % self_heat = from_state % self_heat - - to_state % i = from_state % i - to_state % j = from_state % j - to_state % k = from_state % k - - to_state % n_rhs = from_state % n_rhs - to_state % n_jac = from_state % n_jac - - to_state % time = from_state % time - - to_state % success = from_state % success - - end subroutine copy_burn_t - - - ! Given an eos type, copy the data relevant to the burn type. - - subroutine eos_to_burn(eos_state, burn_state) - - !$acc routine seq - - use eos_type_module, only: eos_t - - implicit none - - type (eos_t) :: eos_state - type (burn_t) :: burn_state - - !$gpu - - burn_state % rho = eos_state % rho - burn_state % T = eos_state % T - burn_state % e = eos_state % e - burn_state % xn = eos_state % xn -#if naux > 0 - burn_state % aux = eos_state % aux -#endif - burn_state % cv = eos_state % cv - burn_state % cp = eos_state % cp - burn_state % y_e = eos_state % y_e - burn_state % eta = eos_state % eta - burn_state % cs = eos_state % cs - burn_state % abar = eos_state % abar - burn_state % zbar = eos_state % zbar - - end subroutine eos_to_burn - - - - ! Given a burn type, copy the data relevant to the eos type. - - subroutine burn_to_eos(burn_state, eos_state) - - !$acc routine seq - - use eos_type_module, only: eos_t - - implicit none - - type (burn_t) :: burn_state - type (eos_t) :: eos_state - - !$gpu - - eos_state % rho = burn_state % rho - eos_state % T = burn_state % T - eos_state % e = burn_state % e - eos_state % xn = burn_state % xn -#if naux > 0 - eos_state % aux = burn_state % aux -#endif - eos_state % cv = burn_state % cv - eos_state % cp = burn_state % cp - eos_state % y_e = burn_state % y_e - eos_state % eta = burn_state % eta - eos_state % cs = burn_state % cs - eos_state % abar = burn_state % abar - eos_state % zbar = burn_state % zbar - - end subroutine burn_to_eos - - - subroutine normalize_abundances_burn(state) - - !$acc routine seq - - use amrex_constants_module, only: ONE - use extern_probin_module, only: small_x - - implicit none - - type (burn_t), intent(inout) :: state - - !$gpu - - state % xn(:) = max(small_x, min(ONE, state % xn(:))) - state % xn(:) = state % xn(:) / sum(state % xn(:)) - - end subroutine normalize_abundances_burn - -end module burn_type_module diff --git a/Microphysics/networks/burner.F90 b/Microphysics/networks/burner.F90 deleted file mode 100644 index fbba6ce205..0000000000 --- a/Microphysics/networks/burner.F90 +++ /dev/null @@ -1,65 +0,0 @@ -module burner_module - - use amrex_fort_module, only : rt => amrex_real - use amrex_constants_module - use network - use eos_module -#ifndef SIMPLIFIED_SDC - use actual_burner_module -#else - use integrator_module -#endif - use burn_type_module - - logical :: burner_initialized = .false. - -contains - - subroutine burner_init() bind(C, name="burner_init") - - implicit none - -#ifdef SIMPLIFIED_SDC - call integrator_init() -#else - call actual_burner_init() -#endif - - burner_initialized = .true. - - end subroutine burner_init - - - -#ifndef SIMPLIFIED_SDC - subroutine burner(state_in, state_out, dt, time) - - !$gpu - - use castro_error_module - - implicit none - - type (burn_t), intent(inout) :: state_in - type (burn_t), intent(inout) :: state_out - double precision, intent(in) :: dt, time - - ! Make sure the network and burner have been initialized. - -#if !(defined(ACC)||defined(AMREX_USE_CUDA)) - if (.NOT. network_initialized) then - call castro_error("ERROR in burner: must initialize network first.") - endif - - if (.NOT. burner_initialized) then - call castro_error("ERROR in burner: must initialize burner first.") - endif -#endif - - ! Do the burning. - call actual_burner(state_in, state_out, dt, time) - - end subroutine burner -#endif - -end module burner_module diff --git a/Microphysics/networks/general_null/H_He.net b/Microphysics/networks/general_null/H_He.net deleted file mode 100644 index a0620b6e44..0000000000 --- a/Microphysics/networks/general_null/H_He.net +++ /dev/null @@ -1,5 +0,0 @@ -# Simple network containing just H and He - -# name short name aion zion - hydrogen-1 H1 1.0 1.0 - helium-4 He4 4.0 2.0 diff --git a/Microphysics/networks/general_null/H_core.net b/Microphysics/networks/general_null/H_core.net deleted file mode 100644 index d3073958ad..0000000000 --- a/Microphysics/networks/general_null/H_core.net +++ /dev/null @@ -1,19 +0,0 @@ -# this is the null description for the H_core network -# - -# name short-name aion zion - hydrogen-1 H1 1.0 1.0 - helium-3 He3 3.0 2.0 - helium-4 He4 4.0 2.0 - carbon-12 C12 12.0 6.0 - nitrogen-14 N14 14.0 7.0 - oxygen-16 O16 16.0 8.0 - neon-20 Ne20 20.0 10.0 - magnesium-24 Mg24 24.0 12.0 - silicon-28 Si28 28.0 14.0 - sulfur-32 S32 32.0 16.0 - argon-36 Ar36 36.0 18.0 - calcium-40 Ca40 40.0 20.0 - titanium-44 Ti44 44.0 22.0 - chromium-48 Cr48 48.0 24.0 - iron-54 Fe54 54.0 26.0 diff --git a/Microphysics/networks/general_null/Make.package b/Microphysics/networks/general_null/Make.package deleted file mode 100644 index 9ac20b3653..0000000000 --- a/Microphysics/networks/general_null/Make.package +++ /dev/null @@ -1,30 +0,0 @@ -F90EXE_sources += actual_network.F90 -CEXE_headers += network_properties.H - -ifeq ($(USE_REACT),TRUE) -ifneq ($(USE_SIMPLIFIED_SDC), TRUE) -f90EXE_sources += actual_burner.f90 -endif -f90EXE_sources += actual_rhs.f90 -endif - - -network_properties.H: actual_network.F90 - -# actual_network.F90 is created at build time for this network -actual_network.F90: $(GENERAL_NET_INPUTS) $(CASTRO_HOME)/Microphysics/networks/general_null/network.template - @echo " " - @echo "---------------------------------------------------------------------------" - @echo "WRITING actual_network.F90 and network_properties.H:" - $(CASTRO_HOME)/Microphysics/networks/general_null/write_network.py \ - -t $(CASTRO_HOME)/Microphysics/networks/general_null/network.template \ - -s $(GENERAL_NET_INPUTS) \ - -o actual_network.F90 \ - --header_template $(CASTRO_HOME)/Microphysics/networks/general_null/network_header.template \ - --header_output network_properties.H - @echo "---------------------------------------------------------------------------" - @echo " " - -# remove actual_network.F90 for 'make clean' and therefore 'make realclean' -clean:: - $(RM) actual_network.F90 actual_network.f90 network_properties.H diff --git a/Microphysics/networks/general_null/README b/Microphysics/networks/general_null/README deleted file mode 100644 index a8f2c5d399..0000000000 --- a/Microphysics/networks/general_null/README +++ /dev/null @@ -1,3 +0,0 @@ -general_null is a generalized null network. It provides the ability -to define the species at compile-time and writes the network module -that incorporates these as non-reacting passively advecting species. diff --git a/Microphysics/networks/general_null/actual_burner.f90 b/Microphysics/networks/general_null/actual_burner.f90 deleted file mode 100644 index 9e671fc4dc..0000000000 --- a/Microphysics/networks/general_null/actual_burner.f90 +++ /dev/null @@ -1,29 +0,0 @@ -module actual_burner_module - - use amrex_fort_module, only : rt => amrex_real - use amrex_constants_module - use network - use burn_type_module - -contains - - subroutine actual_burner_init() - - ! Do nothing in this burner. - - end subroutine actual_burner_init - - - subroutine actual_burner(state_in, state_out, dt, time) - - implicit none - - type (burn_t), intent(in) :: state_in - type (burn_t), intent(inout) :: state_out - double precision, intent(in) :: dt, time - - ! Do nothing in this burner. - - end subroutine actual_burner - -end module actual_burner_module diff --git a/Microphysics/networks/general_null/actual_rhs.f90 b/Microphysics/networks/general_null/actual_rhs.f90 deleted file mode 100644 index fad43ef1ed..0000000000 --- a/Microphysics/networks/general_null/actual_rhs.f90 +++ /dev/null @@ -1,59 +0,0 @@ -module actual_rhs_module - - implicit none - -contains - - subroutine actual_rhs_init() - - implicit none - - end subroutine actual_rhs_init - - - - subroutine actual_rhs(state) - - use burn_type_module, only: burn_t - use amrex_constants_module, only: ZERO - - implicit none - - type (burn_t) :: state - - ! Do nothing in this RHS. - - state % ydot = ZERO - - end subroutine actual_rhs - - - - subroutine actual_jac(state) - - use burn_type_module, only: burn_t - use amrex_constants_module, only: ZERO - - implicit none - - type (burn_t) :: state - - ! Do nothing in this RHS. - - state % jac(:,:) = ZERO - - end subroutine actual_jac - - - - subroutine update_unevolved_species(state) - - use burn_type_module, only: burn_t - - implicit none - - type (burn_t) :: state - - end subroutine update_unevolved_species - -end module actual_rhs_module diff --git a/Microphysics/networks/general_null/aprox13.net b/Microphysics/networks/general_null/aprox13.net deleted file mode 100644 index 6875f9cfa5..0000000000 --- a/Microphysics/networks/general_null/aprox13.net +++ /dev/null @@ -1,16 +0,0 @@ -# This is a null network corresponding to the aprox13 burner. - -# name short name aion zion - helium-4 He4 4.0 2.0 - carbon-12 C12 12.0 6.0 - oxygen-16 O16 16.0 8.0 - neon-20 Ne20 20.0 10.0 - magnesium-24 Mg24 24.0 12.0 - silicon-28 Si28 28.0 14.0 - sulfur-32 S32 32.0 16.0 - argon-36 Ar36 36.0 18.0 - calcium-40 Ca40 40.0 20.0 - titanium-44 Ti44 44.0 22.0 - chromium-48 Cr48 48.0 24.0 - iron-52 Fe52 52.0 26.0 - nickel-56 Ni56 56.0 28.0 diff --git a/Microphysics/networks/general_null/gammalaw.net b/Microphysics/networks/general_null/gammalaw.net deleted file mode 100644 index e3c41183e5..0000000000 --- a/Microphysics/networks/general_null/gammalaw.net +++ /dev/null @@ -1,5 +0,0 @@ -# this is the null description for a network containing H only -# - -# name short-name aion zion - X X 1.0 1.0 diff --git a/Microphysics/networks/general_null/gammalaw_aux.net b/Microphysics/networks/general_null/gammalaw_aux.net deleted file mode 100644 index ce80b63b01..0000000000 --- a/Microphysics/networks/general_null/gammalaw_aux.net +++ /dev/null @@ -1,8 +0,0 @@ -# this is the null description for a network containing H only -# - -# name short-name aion zion - X X 1.0 1.0 - -# auxillary variables -__aux_Ye diff --git a/Microphysics/networks/general_null/hotcno.net b/Microphysics/networks/general_null/hotcno.net deleted file mode 100644 index 6554f18e63..0000000000 --- a/Microphysics/networks/general_null/hotcno.net +++ /dev/null @@ -1,26 +0,0 @@ -# this is the null description for the H_core network -# - -# name short-name aion zion - hydrogen-1 H1 1.0 1.0 - helium-4 He4 4.0 2.0 - carbon-12 C12 12.0 6.0 - carbon-13 C13 13.0 6.0 - nitrogen-13 N13 13.0 7.0 - nitrogen-14 N14 14.0 7.0 - nitrogen-15 N15 15.0 7.0 - oxygen-14 O14 14.0 8.0 - oxygen-15 O15 15.0 8.0 - oxygen-16 O16 16.0 8.0 - oxygen-17 O17 17.0 8.0 - oxygen-18 O18 18.0 8.0 - fluorine-17 F17 17.0 9.0 - fluorine-18 F18 18.0 9.0 - fluorine-19 F19 19.0 9.0 - neon-18 Ne18 18.0 10.0 - neon-19 Ne19 19.0 10.0 - neon-20 Ne20 20.0 10.0 - magnesium-22 Mg22 22.0 12.0 - sulfur-30 S30 30.0 16.0 - nickel-56 Ni56 56.0 28.0 - diff --git a/Microphysics/networks/general_null/ignition.net b/Microphysics/networks/general_null/ignition.net deleted file mode 100644 index 0034679ad2..0000000000 --- a/Microphysics/networks/general_null/ignition.net +++ /dev/null @@ -1,8 +0,0 @@ -# The ignition network is used for non-reacting white dwarf problems. It defines -# C-12, O-16, and Mg-24 - -# name short name aion zion - carbon-12 C12 12.0 6.0 - oxygen-16 O16 16.0 8.0 - magnesium-24 Mg24 24.0 12.0 - diff --git a/Microphysics/networks/general_null/ignition_wdconvect.net b/Microphysics/networks/general_null/ignition_wdconvect.net deleted file mode 100644 index 9234fb3c12..0000000000 --- a/Microphysics/networks/general_null/ignition_wdconvect.net +++ /dev/null @@ -1,7 +0,0 @@ -# The ignition network is used for wdconvect with the ignition_chamulak burner. - -# name short name aion zion - carbon-12 C12 12.0 6.0 - oxygen-16 O16 16.0 8.0 - ash ash 18.0 8.8 - diff --git a/Microphysics/networks/general_null/network.template b/Microphysics/networks/general_null/network.template deleted file mode 100644 index ec38806b73..0000000000 --- a/Microphysics/networks/general_null/network.template +++ /dev/null @@ -1,78 +0,0 @@ -! DO NOT EDIT THIS FILE!!! -! -! This file is automatically generated by write_network.py at -! compile-time. -! -! To modify the species carried by the network, edit the appropriate inputs -! file. - -! An automatically generated "null" network. This provides the properties -! of a set of non-reacting species. -! -! nspec -- the number of species -! naux -- the number of auxiliary variables -! -! aion -- atomic number -! zion -- proton number -! -! spec_names -- the name of the isotope -! short_spec_names -- an abbreviated form of the species name -! -! aux_names -- the name of the auxiliary variable -! short_aux_names -- an abbreviated form of the auxiliary variable - - -module actual_network - - use amrex_fort_module, only : rt => amrex_real - - implicit none - - integer, parameter :: nspec = @@NSPEC@@ - integer, parameter :: nspec_evolve = @@NSPEC@@ - integer, parameter :: naux = @@NAUX@@ - - character (len=16), save :: spec_names(nspec) - character (len= 5), save :: short_spec_names(nspec) - character (len=16), save :: aux_names(naux) - character (len= 5), save :: short_aux_names(naux) - - double precision, allocatable, save :: aion(:), zion(:) - - integer, parameter :: nrates = 1 - integer, parameter :: num_rate_groups = 1 - -#ifdef AMREX_USE_CUDA - attributes(managed) :: aion, zion -#endif - -contains - - subroutine actual_network_init - - @@SPEC_NAMES@@ - - @@SHORT_SPEC_NAMES@@ - - allocate(aion(nspec)) - allocate(zion(nspec)) - - @@AION@@ - - @@ZION@@ - - @@AUX_NAMES@@ - - end subroutine actual_network_init - - subroutine actual_network_finalize - - implicit none - - deallocate(aion) - deallocate(zion) - - end subroutine actual_network_finalize - - -end module actual_network diff --git a/Microphysics/networks/general_null/network_header.template b/Microphysics/networks/general_null/network_header.template deleted file mode 100644 index ce5ab99963..0000000000 --- a/Microphysics/networks/general_null/network_header.template +++ /dev/null @@ -1,10 +0,0 @@ -/* Do not edit -- this is automatically generated by write_network.py - at compile time */ - -#ifndef _network_size_H_ -#define _network_size_H_ - -const int NumSpec = @@NSPEC@@; -const int NumAux = @@NAUX@@; - -#endif diff --git a/Microphysics/networks/general_null/pphotcno.net b/Microphysics/networks/general_null/pphotcno.net deleted file mode 100644 index 448c7f95bc..0000000000 --- a/Microphysics/networks/general_null/pphotcno.net +++ /dev/null @@ -1,31 +0,0 @@ -# this is the null description for the H_core network -# - -# name short-name aion zion - hydrogen-1 H1 1.0 1.0 - hydrogen-2 H2 2.0 1.0 - helium-3 He3 3.0 2.0 - helium-4 He4 4.0 2.0 - lithium-7 Li7 7.0 3.0 - beryllium-7 Be7 7.0 4.0 - boron-8 B8 8.0 5.0 - carbon-12 C12 12.0 6.0 - carbon-13 C13 13.0 6.0 - nitrogen-13 N13 13.0 7.0 - nitrogen-14 N14 14.0 7.0 - nitrogen-15 N15 15.0 7.0 - oxygen-14 O14 14.0 8.0 - oxygen-15 O15 15.0 8.0 - oxygen-16 O16 16.0 8.0 - oxygen-17 O17 17.0 8.0 - oxygen-18 O18 18.0 8.0 - fluorine-17 F17 17.0 9.0 - fluorine-18 F18 18.0 9.0 - fluorine-19 F19 19.0 9.0 - neon-18 Ne18 18.0 10.0 - neon-19 Ne19 19.0 10.0 - neon-20 Ne20 20.0 10.0 - magnesium-22 Mg22 22.0 12.0 - sulfur-30 S30 30.0 16.0 - nickel-56 Ni56 56.0 28.0 - diff --git a/Microphysics/networks/general_null/simple.net b/Microphysics/networks/general_null/simple.net deleted file mode 100644 index afb58049d2..0000000000 --- a/Microphysics/networks/general_null/simple.net +++ /dev/null @@ -1,7 +0,0 @@ -# The simple network is used for 2-fluid problems. Fluids 'A' and 'B' -# have the same properties, but are named differently so we can keep -# track of them independently. - -# name short name aion zion - A A 1.0 1.0 - B B 1.0 1.0 diff --git a/Microphysics/networks/general_null/simple3.net b/Microphysics/networks/general_null/simple3.net deleted file mode 100644 index c5a884dd9d..0000000000 --- a/Microphysics/networks/general_null/simple3.net +++ /dev/null @@ -1,8 +0,0 @@ -# The simple network is used for 3-fluid problems. Fluids 'A', 'B', and 'C' -# have the same properties, but are named differently so we can keep -# track of them independently. - -# name short name aion zion - A A 1.0 1.0 - B B 1.0 1.0 - C C 1.0 1.0 diff --git a/Microphysics/networks/general_null/triple_alpha_plus_o.net b/Microphysics/networks/general_null/triple_alpha_plus_o.net deleted file mode 100644 index e8b98b221e..0000000000 --- a/Microphysics/networks/general_null/triple_alpha_plus_o.net +++ /dev/null @@ -1,12 +0,0 @@ -# This is a null network corresponding to the triple_alpha_plus_cago burner. - -# name short name aion zion - helium-4 He4 4.0 2.0 - carbon-12 C12 12.0 6.0 - oxygen-16 O16 16.0 8.0 - iron-56 Fe56 56.0 26.0 - - - - - diff --git a/Microphysics/networks/general_null/write_network.py b/Microphysics/networks/general_null/write_network.py deleted file mode 100755 index 461cc08438..0000000000 --- a/Microphysics/networks/general_null/write_network.py +++ /dev/null @@ -1,256 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import argparse - -class Species: - """the species class holds the properties of a single species""" - def __init__(self): - self.name = "" - self.short_name = "" - self.A = -1 - self.Z = -1 - - def __str__(self): - return "species {}, (A,Z) = {},{}".format(self.name, self.A, self.Z) - -class AuxVar: - """convenience class for an auxilliary variable""" - def __init__(self): - self.name = "" - - def __str__(self): - return "auxillary variable {}".format(self.name) - - -def get_next_line(fin): - """get_next_line returns the next, non-blank line, with comments - stripped""" - line = fin.readline() - - pos = str.find(line, "#") - - while (pos == 0 or str.strip(line) == "") and line: - line = fin.readline() - pos = str.find(line, "#") - - line = line[:pos] - - return line - - -def get_object_index(objs, name): - """look through the list and returns the index corresponding to the - network object (species or auxvar) specified by name - - """ - - index = -1 - - for n, o in enumerate(objs): - if o.name == name: - index = n - break - - return index - - -def parse_net_file(species, aux_vars, net_file): - """parse_net_file read all the species listed in a given network - inputs file and adds the valid species to the species list - - """ - - err = 0 - - try: - f = open(net_file, "r") - except IOError: - sys.exit("write_network.py: ERROR: file "+str(net_file)+" does not exist") - - - print("write_network.py: working on network file "+str(net_file)+"...") - - line = get_next_line(f) - - while line and not err: - - fields = line.split() - - # read the species or auxiliary variable from the line - net_obj, err = parse_network_object(fields) - if net_obj is None: - return err - - objs = species - if isinstance(net_obj, AuxVar): - objs = aux_vars - - # check to see if this species/auxvar is defined in the current list - index = get_object_index(objs, net_obj.name) - - if index >= 0: - print("write_network.py: ERROR: {} already defined.".format(net_obj)) - err = 1 - # add the species or auxvar to the appropriate list - objs.append(net_obj) - - line = get_next_line(f) - - return err - - -def parse_network_object(fields): - """parse the fields in a line of the network file for either species - or auxiliary variables. Aux variables are prefixed by '__aux_' in - the network file - - """ - - err = 0 - - # check for aux variables first - if fields[0].startswith("__aux_"): - ret = AuxVar() - ret.name = fields[0][6:] - - # check for missing fields in species definition - elif not len(fields) == 4: - print(" ".join(fields)) - print("write_network.py: ERROR: missing one or more fields in species definition.") - ret = None - err = 1 - else: - ret = Species() - - ret.name = fields[0] - ret.short_name = fields[1] - ret.A = fields[2] - ret.Z = fields[3] - - return ret, err - - -def abort(outfile): - """exit when there is an error. A dummy stub file is written out, - which will cause a compilation failure - - """ - - fout = open(outfile, "w") - fout.write("There was an error parsing the network files") - fout.close() - sys.exit(1) - - - -def write_network(network_template, header_template, - net_file, - network_file, header_file): - """read through the list of species and output the new out_file - - """ - - species = [] - aux_vars = [] - - - #------------------------------------------------------------------------- - # read the species defined in the net_file - #------------------------------------------------------------------------- - err = parse_net_file(species, aux_vars, net_file) - - if err: - abort(out_file) - - - #------------------------------------------------------------------------- - # write out the Fortran and C++ files based on the templates - #------------------------------------------------------------------------- - templates = [(network_template, network_file), (header_template, header_file)] - - for tmp, out_file in templates: - - print("writing {}".format(out_file)) - - # read the template - try: - template = open(tmp, "r") - except IOError: - sys.exit("write_network.py: ERROR: file {} does not exist".format(tmp)) - else: - template_lines = template.readlines() - template.close() - - # output the new file, inserting the species info in between the @@...@@ - fout = open(out_file, "w") - - for line in template_lines: - - index = line.find("@@") - - if index >= 0: - index2 = line.rfind("@@") - - keyword = line[index+len("@@"):index2] - indent = index*" " - - if keyword == "NSPEC": - fout.write(line.replace("@@NSPEC@@", str(len(species)))) - - elif keyword == "NAUX": - fout.write(line.replace("@@NAUX@@", str(len(aux_vars)))) - - elif keyword == "SPEC_NAMES": - for n, spec in enumerate(species): - fout.write("{}spec_names({}) = \"{}\"\n".format(indent, n+1, spec.name)) - - elif keyword == "SHORT_SPEC_NAMES": - for n, spec in enumerate(species): - fout.write("{}short_spec_names({}) = \"{}\"\n".format(indent, n+1, spec.short_name)) - - elif keyword == "AION": - for n, spec in enumerate(species): - fout.write("{}aion({}) = {}\n".format(indent, n+1, spec.A)) - - elif keyword == "ZION": - for n, spec in enumerate(species): - fout.write("{}zion({}) = {}\n".format(indent, n+1, spec.Z)) - - elif keyword == "AUX_NAMES": - for n, aux in enumerate(aux_vars): - fout.write("{}aux_names({}) = \"{}\"\n".format(indent, n+1, aux.name)) - fout.write("{}short_aux_names({}) = \"{}\"\n".format(indent, n+1, aux.name)) - - else: - fout.write(line) - - print(" ") - fout.close() - - -def main(): - - parser = argparse.ArgumentParser() - parser.add_argument("-t", type=str, default="", - help="fortran template for the network") - parser.add_argument("-o", type=str, default="", - help="fortran module output file name") - parser.add_argument("--header_template", type=str, default="", - help="C++ header template file name") - parser.add_argument("--header_output", type=str, default="", - help="C++ header output file name") - parser.add_argument("-s", type=str, default="", - help="network file name") - - args = parser.parse_args() - - if args.t == "" or args.o == "": - sys.exit("write_network.py: ERROR: invalid calling sequence") - - write_network(args.t, args.header_template, - args.s, - args.o, args.header_output) - -if __name__ == "__main__": - main() diff --git a/Microphysics/networks/network.F90 b/Microphysics/networks/network.F90 deleted file mode 100644 index 8587fa1970..0000000000 --- a/Microphysics/networks/network.F90 +++ /dev/null @@ -1,101 +0,0 @@ -! the network module provides the information about the species we are -! advecting: -! -! nspec -- the number of species -! -! aion -- atomic number -! zion -- proton number -! -! aion_inv -- 1/aion -! -! spec_names -- the name of the isotope -! short_spec_names -- the abbreviated name of the isotope -! -! This module contains the following routines: -! -! network_init -- initialize the isotope properties -! -! network_species_index -- return the index of the species given its name -! -! network_finalize -- do any network cleanup - -module network - - use amrex_fort_module, only : rt => amrex_real - use actual_network - - implicit none - - logical :: network_initialized = .false. - - ! this will be computed here, not in the actual network - real(rt), allocatable :: aion_inv(:) - - !$acc declare create(aion_inv) - -#ifdef AMREX_USE_CUDA - attributes(managed) :: aion_inv -#endif - -contains - - subroutine network_init() - - use castro_error_module, only : castro_error - use amrex_constants_module, only : ONE - - implicit none - - allocate(aion_inv(nspec)) - - ! First, we call the specific network initialization. - ! This should set the number of species and number of - ! aux variables, and the components of the species. - ! Note that the network MUST define nspec and naux - ! as parameters, or else the compiler will throw an error. - - call actual_network_init() - - ! Check to make sure, and if not, throw an error. - - if ( nspec .le. 0 ) then - call castro_error("Network cannot have a negative number of species.") - endif - - if ( naux .lt. 0 ) then - call castro_error("Network cannot have a negative number of auxiliary variables.") - endif - - aion_inv(:) = ONE/aion(:) - - !$acc update device(aion_inv) - - network_initialized = .true. - - end subroutine network_init - - - function network_species_index(name) result(r) - - character(len=*) :: name - integer :: r, n - - r = -1 - - do n = 1, nspec - if (name == spec_names(n) .or. name == short_spec_names(n)) then - r = n - return - endif - enddo - - end function network_species_index - - subroutine network_finalize() - implicit none - - call actual_network_finalize() - - end subroutine network_finalize - -end module network diff --git a/Microphysics/networks/sdc_type.F90 b/Microphysics/networks/sdc_type.F90 deleted file mode 100644 index efc04d8b26..0000000000 --- a/Microphysics/networks/sdc_type.F90 +++ /dev/null @@ -1,45 +0,0 @@ -module sdc_type_module - - use amrex_fort_module, only : rt => amrex_real - use actual_network, only: nspec - - implicit none - - ! A generic structure holding data necessary to do a nuclear burn - ! in the SDC formalism. - - ! these indicies represent the order that the conserved state comes - ! into the ODE integration from the hydro code. - ! - ! they also represent the order of the advective sources - integer, parameter :: SEDEN = 1 - integer, parameter :: SEINT = 2 - integer, parameter :: SFS = 3 - integer, parameter :: SRHO = SFS + nspec - integer, parameter :: SMX = SRHO + 1 - integer, parameter :: SMY = SRHO + 2 - integer, parameter :: SMZ = SRHO + 3 - - integer, parameter :: SVAR = SMZ - integer, parameter :: SVAR_EVOLVE = SRHO - 1 - - type :: sdc_t - - real(rt) :: y(SVAR) - real(rt) :: ydot_a(SVAR) - - logical :: T_from_eden - - integer :: i - integer :: j - integer :: k - - integer :: n_rhs - integer :: n_jac - - integer :: sdc_iter - - logical :: success - end type sdc_t - -end module sdc_type_module diff --git a/Microphysics/opacity/Readme b/Microphysics/opacity/Readme deleted file mode 100644 index 86a5463972..0000000000 --- a/Microphysics/opacity/Readme +++ /dev/null @@ -1,14 +0,0 @@ - -An opacity module must include - -* subroutine init_opacity_table() - -* module opacity_table_module - that must include the following subroutines (which -** subroutine get_opacities() - for photon simulations -** subroutines get_opacity_emissivity() & prep_opacity() - for neutrino simulations - -Note that these subroutines could be empty if they are not being used. -But they must be there, otherwise the code won't compile. diff --git a/Microphysics/opacity/breakout/Make.package b/Microphysics/opacity/breakout/Make.package deleted file mode 100644 index 19f45e2472..0000000000 --- a/Microphysics/opacity/breakout/Make.package +++ /dev/null @@ -1 +0,0 @@ -F90EXE_sources += opacity_table_module.F90 diff --git a/Microphysics/opacity/breakout/opacity_table_module.F90 b/Microphysics/opacity/breakout/opacity_table_module.F90 deleted file mode 100644 index 7be42a6354..0000000000 --- a/Microphysics/opacity/breakout/opacity_table_module.F90 +++ /dev/null @@ -1,93 +0,0 @@ -module opacity_table_module - - implicit none - -contains - -! ============================================ -! -! opacity for a given temperature and density -! -! input: nu - radiation frequency (Hz) -! temp - temperature (K) -! rhoYe - rho*Ye -! rho - density (g cm^-3) -! output: kp - Planck mean opacity (1/cm) -! kr - Rosseland mean opacity (1/cm) - - subroutine get_opacities(kp, kr, rho, temp, rhoYe, nu, get_Planck_mean, get_Rosseland_mean) - - implicit none - - logical, intent(in) :: get_Planck_mean, get_Rosseland_mean - double precision, intent(in) :: rho, temp, rhoYe, nu - double precision, intent(out) :: kp, kr - - double precision, parameter :: Ksc = 0.4d0 ! Thomson scattering - double precision, parameter :: fac = 1.d-4 ! Planck mean is assumed to be fac*Ksc - - !$gpu - - if (get_planck_mean) then - kp = rhoYe*Ksc * fac - end if - - if (get_Rosseland_mean) then - kr = rhoYe*Ksc - end if - - end subroutine get_opacities - - -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - - ! dummies - - subroutine get_opacity_emissivity( & - ab, sc, delta, eta, & - rho, rdummy, temp, nu, idummy, comp_ab, comp_sc, ldummy) - - implicit none - - integer, intent(in) :: idummy - logical, intent(in) :: comp_ab, comp_sc, ldummy - double precision, intent(in) :: rho, rdummy, temp, nu - double precision, intent(out) :: ab, sc, delta, eta - - !$gpu - - ab = 0.d0 - sc = 0.d0 - delta = 0.d0 - eta = 0.d0 - - end subroutine get_opacity_emissivity - - - subroutine prep_opacity(g, inu, er, der) - - implicit none - - integer, intent(in) :: g - integer, intent(out) :: inu - double precision, intent(out) :: er, der - - inu = -1 - er = 0.d0 - der = 0.d0 - - end subroutine prep_opacity - -end module opacity_table_module - - -! dummy -subroutine init_opacity_table(iverb) - - implicit none - - integer :: iverb - -end subroutine init_opacity_table - - diff --git a/Microphysics/opacity/rad_power_law/Make.package b/Microphysics/opacity/rad_power_law/Make.package deleted file mode 100644 index 19f45e2472..0000000000 --- a/Microphysics/opacity/rad_power_law/Make.package +++ /dev/null @@ -1 +0,0 @@ -F90EXE_sources += opacity_table_module.F90 diff --git a/Microphysics/opacity/rad_power_law/_parameters b/Microphysics/opacity/rad_power_law/_parameters deleted file mode 100644 index 1a42db8ca4..0000000000 --- a/Microphysics/opacity/rad_power_law/_parameters +++ /dev/null @@ -1,41 +0,0 @@ -# Opacity constant (Planck) -const_kappa_p real -1.0d0 - -# Density exponent (Planck) -kappa_p_exp_m real 0.0d0 - -# Temperature exponent (Planck) -kappa_p_exp_n real 0.0d0 - -# Frequency exponent (Planck) -kappa_p_exp_p real 0.0d0 - -# Opacity constant (Rosseland) -const_kappa_r real -1.0d0 - -# Density exponent (Rosseland) -kappa_r_exp_m real 0.0d0 - -# Temperature exponent (Rosseland) -kappa_r_exp_n real 0.0d0 - -# Frequency exponent (Rosseland) -kappa_r_exp_p real 0.0d0 - -# Opacity constant (scattering) -const_scatter real 0.0d0 - -# Density exponent (scattering) -scatter_exp_m real 0.0d0 - -# Temperature exponent (scattering) -scatter_exp_n real 0.0d0 - -# Frequency exponent (scattering) -scatter_exp_p real 0.0d0 - -# Opacity floor -kappa_floor real 0.0d0 - -# Temperature floor -rad_temp_floor real 1.d-10 diff --git a/Microphysics/opacity/rad_power_law/opacity_table_module.F90 b/Microphysics/opacity/rad_power_law/opacity_table_module.F90 deleted file mode 100644 index 7800ef6a66..0000000000 --- a/Microphysics/opacity/rad_power_law/opacity_table_module.F90 +++ /dev/null @@ -1,128 +0,0 @@ -! This is an artificial opacity designed for use with radiation -! testing problems. - -module opacity_table_module - - use amrex_fort_module, only: rt => amrex_real - use extern_probin_module, only: const_kappa_p, kappa_p_exp_m, kappa_p_exp_n, kappa_p_exp_p, & - const_kappa_r, kappa_r_exp_m, kappa_r_exp_n, kappa_r_exp_p, & - const_scatter, scatter_exp_m, scatter_exp_n, scatter_exp_p, & - kappa_floor, rad_temp_floor - - implicit none - - real(rt), parameter, private :: tiny = 1.e-50_rt - -contains - - ! ============================================ - ! - ! opacity for a given temperature and density - ! - ! input: nu - radiation frequency (Hz) - ! temp - temperature (K) - ! rho - density (g cm^-3) - ! rhoYe - rho*Ye - ! output: kp - Planck mean opacity (1/cm) - ! kr - Rosseland mean opacity (1/cm) - - subroutine get_opacities(kp, kr, rho, temp, rhoYe, nu, get_Planck_mean, get_Rosseland_mean) - -#ifndef AMREX_USE_GPU - use castro_error_module, only: castro_error -#endif - - implicit none - - logical, intent(in ) :: get_Planck_mean, get_Rosseland_mean - real(rt), intent(in ) :: rho, temp, rhoYe, nu - real(rt), intent(inout) :: kp, kr - - real(rt) :: teff, nup_kpp, nup_kpr, nup_kps, ks - - !$gpu - - nup_kpp = nu**kappa_p_exp_p - nup_kpr = nu**kappa_r_exp_p - nup_kps = nu**scatter_exp_p - - teff = max(temp, tiny) - teff = teff + rad_temp_floor * exp(-teff / (rad_temp_floor + tiny)) - - ks = const_scatter * (rho**scatter_exp_m) * (teff**(-scatter_exp_n)) * nup_kps - - if (get_Planck_mean) then -#ifndef AMREX_USE_GPU - if (const_kappa_p < 0.0_rt) then - call castro_error("Must set Planck opacity constant") - end if -#endif - kp = const_kappa_p * (rho**kappa_p_exp_m) * (teff**(-kappa_p_exp_n)) * nup_kpp - kp = max(kp, kappa_floor) - end if - - if (get_Rosseland_mean) then -#ifndef AMREX_USE_GPU - if (const_kappa_r < 0.0_rt) then - call castro_error("Must set Rosseland opacity constant") - end if -#endif - kr = const_kappa_r * (rho**kappa_r_exp_m) * (teff**(-kappa_r_exp_n)) * nup_kpr - kr = max(kr + ks, kappa_floor) - end if - - end subroutine get_opacities - - - - ! dummies - - subroutine get_opacity_emissivity( & - ab, sc, delta, eta, & - rho, rdummy, temp, nu, idummy, comp_ab, comp_sc, ldummy) - - implicit none - - integer, intent(in ) :: idummy - logical, intent(in ) :: comp_ab, comp_sc, ldummy - real(rt), intent(in ) :: rho, rdummy, temp, nu - real(rt), intent(inout) :: ab, sc, delta, eta - - !$gpu - - ab = 0.d0 - sc = 0.d0 - delta = 0.d0 - eta = 0.d0 - - end subroutine get_opacity_emissivity - - - - subroutine prep_opacity(g, inu, er, der) - - implicit none - - integer, intent(in ) :: g - integer, intent(inout) :: inu - real(rt), intent(inout) :: er, der - - inu = -1 - er = 0.d0 - der = 0.d0 - - end subroutine prep_opacity - -end module opacity_table_module - - - -subroutine init_opacity_table(iverb) - - use opacity_table_module - - implicit none - - integer :: iverb - -end subroutine init_opacity_table diff --git a/Microphysics/viscosity/constant/Make.package b/Microphysics/viscosity/constant/Make.package deleted file mode 100644 index 325d838a25..0000000000 --- a/Microphysics/viscosity/constant/Make.package +++ /dev/null @@ -1,2 +0,0 @@ -f90EXE_sources += constant_viscosity.f90 - diff --git a/Microphysics/viscosity/constant/_parameters b/Microphysics/viscosity/constant/_parameters deleted file mode 100644 index d4fa2c999d..0000000000 --- a/Microphysics/viscosity/constant/_parameters +++ /dev/null @@ -1,3 +0,0 @@ -const_viscosity real 1.0d-4 - - diff --git a/Microphysics/viscosity/constant/constant_viscosity.f90 b/Microphysics/viscosity/constant/constant_viscosity.f90 deleted file mode 100644 index e4eeaa63ca..0000000000 --- a/Microphysics/viscosity/constant/constant_viscosity.f90 +++ /dev/null @@ -1,23 +0,0 @@ -module viscosity_module - - use amrex_fort_module, only : rt => amrex_real - use network - use eos_type_module - use eos_module - - implicit none - -contains - - subroutine viscous_coeff(eos_state, visc_coeff) - - use extern_probin_module, only: const_viscosity - - type (eos_t), intent(in) :: eos_state - real (rt), intent(inout) :: visc_coeff - - visc_coeff = const_viscosity - - end subroutine viscous_coeff - -end module viscosity_module diff --git a/sphinx_docs/source/getting_started.rst b/sphinx_docs/source/getting_started.rst index 86043f9caf..057f411927 100644 --- a/sphinx_docs/source/getting_started.rst +++ b/sphinx_docs/source/getting_started.rst @@ -45,26 +45,44 @@ is installed on your machine—we recommend version 1.7.x or higher. #. Clone/fork the Castro repository from the same github organization as above, using either HTTP access:: - git clone https://github.com/AMReX-Astro/Castro.git + git clone --recursive https://github.com/AMReX-Astro/Castro.git or SSH access if you have it enabled:: - git clone git@github.com:AMReX-Astro/Castro.git + git clone --recursive git@github.com:AMReX-Astro/Castro.git As with AMReX, development on Castro is done in the ``development`` branch, so you should work there if you want the latest source. + The ``--recursive`` option to ``git clone`` is used to ensure + that all of Castro's dependencies are downloaded. Currently this + requirement is for the Microphysics repository from the starkiller-astro + organization on GitHub. This adds the equations of state, reaction + networks, and other microphysics needed to run Castro. If you forget + to do a recursive clone, you can rectify the situation by running + the following from the top-level of the Castro directory:: + + git submodule update --init --recursive + #. We recommend setting the ``CASTRO_HOME`` environment variable to point to the path name where you have put Castro. Add the following to your .bashrc:: export CASTRO_HOME="/path/to/Castro/" -#. (optional) An additional repository, Microphysics, is - available at the starkiller-astro github page. This add - additional reaction networks and EOSes and can be cloned following - the same procedure as above [1]_:: +#. You can keep the code up to date with:: + + git pull --recurse-submodules + + The recommended frequency for doing this is monthly, if you want the + stable version of the code; we issue a new release of the code at the + beginning of each month. For more frequent updates, you may work on + the ``development`` branch, at the risk of a less stable codebase. + +#. (optional, for developers) If you prefer, you can maintain Microphysics + as a standalone repository rather than a git submodule. To do so, you can + clone it from GitHub using:: git clone https://github.com/starkiller-astro/Microphysics.git @@ -72,8 +90,9 @@ is installed on your machine—we recommend version 1.7.x or higher. git clone git@github.com:/starkiller-astro/Microphysics.git - To access the Microphysics routines, set the ``MICROPHYSICS_HOME`` - environment variable to point to the ``Microphysics/`` directory. + Then, set the ``MICROPHYSICS_HOME`` environment variable to point to + the ``Microphysics/`` directory, and Castro will look there instead + of in its local ``Microphysics/`` subdirectory. Building the Code =================