Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .clang-format-ignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ src/clib/grackle_units.c
src/clib/index_helper.c
src/clib/index_helper.h
src/clib/initialize_UVbackground_data.c
src/clib/initialize_chemistry_data.c
src/clib/initialize_chemistry_data.cpp
src/clib/initialize_cloudy_data.c
src/clib/initialize_dust_yields.c
src/clib/initialize_metal_chemistry_rates.c
src/clib/initialize_rates.c
src/clib/initialize_dust_yields.cpp
src/clib/initialize_metal_chemistry_rates.cpp
src/clib/initialize_rates.cpp
src/clib/internal_types.hpp
src/clib/internal_units.h
src/clib/interp_table_utils.h
Expand Down
8 changes: 4 additions & 4 deletions src/clib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -90,17 +90,13 @@ add_library(Grackle_Grackle
dynamic_api.c
grackle_units.c
index_helper.c
initialize_chemistry_data.c
initialize_cloudy_data.c initialize_cloudy_data.h
initialize_rates.c initialize_rates.h
initialize_UVbackground_data.c initialize_UVbackground_data.h
rate_functions.c
set_default_chemistry_parameters.c
solve_chemistry.c
status_reporting.c status_reporting.h
update_UVbackground_rates.c
initialize_dust_yields.c initialize_dust_yields.h
initialize_metal_chemistry_rates.c initialize_metal_chemistry_rates.h
rate_utils.c
utils.c

Expand All @@ -114,6 +110,10 @@ add_library(Grackle_Grackle
calc_temp_cloudy_g.cpp calc_temp_cloudy_g.h
cool_multi_time_g.cpp cool_multi_time_g.h
dust_props.hpp
initialize_chemistry_data.cpp
initialize_dust_yields.cpp initialize_dust_yields.hpp
initialize_rates.cpp initialize_rates.hpp
initialize_metal_chemistry_rates.cpp initialize_metal_chemistry_rates.hpp
internal_types.cpp internal_types.hpp
scale_fields.hpp
solve_rate_cool_g-cpp.cpp solve_rate_cool_g-cpp.h
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
#include "auto_general.h"
#include "interp_table_utils.h" // free_interp_grid_
#include "initialize_cloudy_data.h"
#include "initialize_dust_yields.h"
#include "initialize_metal_chemistry_rates.h"
#include "initialize_rates.h"
#include "initialize_dust_yields.hpp" // free_dust_yields
#include "initialize_metal_chemistry_rates.hpp" // free_metal_chemistry_rates
#include "initialize_rates.hpp"
#include "initialize_UVbackground_data.h"
#include "phys_constants.h"

Expand All @@ -35,7 +35,7 @@
#error "Sanity check failure: GR_SUCCESS must be consistent with SUCCESS and GR_FAIL must be consistent with FAIL"
#endif

void show_parameters(FILE *fp, chemistry_data *my_chemistry);
static void show_parameters(FILE *fp, chemistry_data *my_chemistry);

static void show_version(FILE *fp)
{
Expand Down Expand Up @@ -65,7 +65,7 @@ static void initialize_empty_interp_grid_(gr_interp_grid* grid)
/**
* Initializes an empty #chemistry_data_storage struct with zeros and NULLs.
*/
void initialize_empty_chemistry_data_storage_struct(chemistry_data_storage *my_rates)
static void initialize_empty_chemistry_data_storage_struct(chemistry_data_storage *my_rates)
{

my_rates->k1 = NULL;
Expand Down Expand Up @@ -315,9 +315,9 @@ void initialize_empty_chemistry_data_storage_struct(chemistry_data_storage *my_r
my_rates->cloudy_data_new = -1;
}

int local_initialize_chemistry_data(chemistry_data *my_chemistry,
chemistry_data_storage *my_rates,
code_units *my_units)
extern "C" int local_initialize_chemistry_data(chemistry_data *my_chemistry,
chemistry_data_storage *my_rates,
code_units *my_units)
{

/* Better safe than sorry: Initialize everything to NULL/0 */
Expand Down Expand Up @@ -492,7 +492,8 @@ int local_initialize_chemistry_data(chemistry_data *my_chemistry,
}

//* Call initialise_rates to compute rate tables.
initialize_rates(my_chemistry, my_rates, my_units, co_length_units, co_density_units);
grackle::impl::initialize_rates(
my_chemistry, my_rates, my_units, co_length_units, co_density_units);

/* Initialize Cloudy cooling. */
my_rates->cloudy_data_new = 1;
Expand Down Expand Up @@ -573,7 +574,7 @@ int local_initialize_chemistry_data(chemistry_data *my_chemistry,
return GR_SUCCESS;
}

int initialize_chemistry_data(code_units *my_units)
extern "C" int initialize_chemistry_data(code_units *my_units)
{
if (local_initialize_chemistry_data(grackle_data, &grackle_rates,
my_units) == GR_FAIL) {
Expand All @@ -586,31 +587,31 @@ int initialize_chemistry_data(code_units *my_units)
// Define helpers for the show_parameters function
// NOTE: it's okay that these functions all begin with an underscore since they
// each have internal linkage (i.e. they are each declared static)
static void _show_field_INT(FILE *fp, const char* field, int val)
static void show_field_INT(FILE *fp, const char* field, int val)
{ fprintf(fp, "%-33s = %d\n", field, val); }
static void _show_field_DOUBLE(FILE *fp, const char* field, double val)
static void show_field_DOUBLE(FILE *fp, const char* field, double val)
{ fprintf(fp, "%-33s = %g\n", field, val); }
static void _show_field_STRING(FILE *fp, const char* field, const char* val)
static void show_field_STRING(FILE *fp, const char* field, const char* val)
{ fprintf(fp, "%-33s = %s\n", field, val); }

// this function writes each field of my_chemistry to fp
void show_parameters(FILE *fp, chemistry_data *my_chemistry){
static void show_parameters(FILE *fp, chemistry_data *my_chemistry){
#define ENTRY(FIELD, TYPE, DEFAULT_VAL) \
_show_field_ ## TYPE (fp, #FIELD, my_chemistry->FIELD);
show_field_ ## TYPE (fp, #FIELD, my_chemistry->FIELD);
#include "grackle_chemistry_data_fields.def"
#undef ENTRY
}

int free_chemistry_data(void){
extern "C" int free_chemistry_data(void){
if (local_free_chemistry_data(grackle_data, &grackle_rates) == GR_FAIL) {
fprintf(stderr, "Error in local_free_chemistry_data.\n");
return GR_FAIL;
}
return GR_SUCCESS;
}

int local_free_chemistry_data(chemistry_data *my_chemistry,
chemistry_data_storage *my_rates) {
extern "C" int local_free_chemistry_data(chemistry_data *my_chemistry,
chemistry_data_storage *my_rates) {
if (my_chemistry->primordial_chemistry > 0) {
GRACKLE_FREE(my_rates->ceHI);
GRACKLE_FREE(my_rates->ceHeI);
Expand Down Expand Up @@ -722,20 +723,20 @@ int local_free_chemistry_data(chemistry_data *my_chemistry,
GRACKLE_FREE(my_rates->UVbackground_table.crsHeI);
}

if (local_free_metal_chemistry_rates(my_chemistry, my_rates) == FAIL) {
fprintf(stderr, "Error in local_free_metal_chemistry_rates.\n");
if (grackle::impl::free_metal_chemistry_rates(my_chemistry, my_rates) == FAIL) {
fprintf(stderr, "Error in free_metal_chemistry_rates.\n");
return FAIL;
}

if (local_free_dust_yields(my_chemistry, my_rates) == FAIL) {
if (grackle::impl::free_dust_yields(my_chemistry, my_rates) == FAIL) {
fprintf(stderr, "Error in local_free_dust_yields.\n");
return FAIL;
}

return GR_SUCCESS;
}

int grimpl_check_consistency_(int gr_float_hdrsize) {
extern "C" int grimpl_check_consistency_(int gr_float_hdrsize) {
if (gr_float_hdrsize != ((int)sizeof(gr_float))) {
fprintf(stderr, "ERROR: Inconsistent floating-point precisions.\n"
" size of gr_float in the headers used during compilation = %d\n"
Expand Down
2 changes: 1 addition & 1 deletion src/clib/initialize_cloudy_data.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ void initialize_empty_cloudy_data_struct(cloudy_data *my_cloudy)
// initialize cloudy cooling data
int initialize_cloudy_data(chemistry_data *my_chemistry,
chemistry_data_storage *my_rates,
cloudy_data *my_cloudy, char *group_name,
cloudy_data *my_cloudy, const char *group_name,
code_units *my_units, int read_data)
{

Expand Down
2 changes: 1 addition & 1 deletion src/clib/initialize_cloudy_data.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ void initialize_empty_cloudy_data_struct(cloudy_data* my_cloudy);
// initialize cloudy cooling data
int initialize_cloudy_data(chemistry_data* my_chemistry,
chemistry_data_storage* my_rates,
cloudy_data* my_cloudy, char* group_name,
cloudy_data* my_cloudy, const char* group_name,
code_units* my_units, int read_data);

int free_cloudy_data(cloudy_data* my_cloudy, chemistry_data* my_chemistry,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,25 @@
//===----------------------------------------------------------------------===//
//
// See the LICENSE file for license and copyright information
// SPDX-License-Identifier: NCSA AND BSD-3-Clause
//
//===----------------------------------------------------------------------===//
///
/// @file
/// Implements the functions to initialize the dust yields
///
//===----------------------------------------------------------------------===//

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "grackle_macros.h"
#include "grackle_chemistry_data.h"
#include "initialize_dust_yields.hpp" // forward declarations

// forward declare some functions

namespace { // stuff inside an anonymous namespace is local to this file

int calc_rates_dust_loc(int iSN, chemistry_data *my_chemistry, chemistry_data_storage *my_rates);
int calc_rates_dust_C13(int iSN, chemistry_data *my_chemistry, chemistry_data_storage *my_rates);
Expand All @@ -17,11 +34,13 @@ int calc_rates_dust_P170(int iSN, chemistry_data *my_chemistry, chemistry_data_s
int calc_rates_dust_P200(int iSN, chemistry_data *my_chemistry, chemistry_data_storage *my_rates);
int calc_rates_dust_Y19(int iSN, chemistry_data *my_chemistry, chemistry_data_storage *my_rates);

} // anonymous namespace

typedef int calc_yield_rate_fn(int, chemistry_data*, chemistry_data_storage*);

int initialize_dust_yields(chemistry_data *my_chemistry,
chemistry_data_storage *my_rates,
code_units *my_units)
int grackle::impl::initialize_dust_yields(chemistry_data *my_chemistry,
chemistry_data_storage *my_rates,
code_units *my_units)
{

if (my_chemistry->metal_chemistry == 0)
Expand Down Expand Up @@ -50,35 +69,35 @@ int initialize_dust_yields(chemistry_data *my_chemistry,
NSN = 12;
my_rates->SN0_N = NSN;

my_rates->SN0_XC = malloc(NSN * sizeof(double));
my_rates->SN0_XO = malloc(NSN * sizeof(double));
my_rates->SN0_XMg = malloc(NSN * sizeof(double));
my_rates->SN0_XAl = malloc(NSN * sizeof(double));
my_rates->SN0_XSi = malloc(NSN * sizeof(double));
my_rates->SN0_XS = malloc(NSN * sizeof(double));
my_rates->SN0_XFe = malloc(NSN * sizeof(double));

my_rates->SN0_fC = malloc(NSN * sizeof(double));
my_rates->SN0_fO = malloc(NSN * sizeof(double));
my_rates->SN0_fMg = malloc(NSN * sizeof(double));
my_rates->SN0_fAl = malloc(NSN * sizeof(double));
my_rates->SN0_fSi = malloc(NSN * sizeof(double));
my_rates->SN0_fS = malloc(NSN * sizeof(double));
my_rates->SN0_fFe = malloc(NSN * sizeof(double));

my_rates->SN0_fSiM = malloc(NSN * sizeof(double));
my_rates->SN0_fFeM = malloc(NSN * sizeof(double));
my_rates->SN0_fMg2SiO4 = malloc(NSN * sizeof(double));
my_rates->SN0_fMgSiO3 = malloc(NSN * sizeof(double));
my_rates->SN0_fFe3O4 = malloc(NSN * sizeof(double));
my_rates->SN0_fAC = malloc(NSN * sizeof(double));
my_rates->SN0_fSiO2D = malloc(NSN * sizeof(double));
my_rates->SN0_fMgO = malloc(NSN * sizeof(double));
my_rates->SN0_fFeS = malloc(NSN * sizeof(double));
my_rates->SN0_fAl2O3 = malloc(NSN * sizeof(double));
my_rates->SN0_freforg = malloc(NSN * sizeof(double));
my_rates->SN0_fvolorg = malloc(NSN * sizeof(double));
my_rates->SN0_fH2Oice = malloc(NSN * sizeof(double));
my_rates->SN0_XC = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_XO = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_XMg = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_XAl = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_XSi = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_XS = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_XFe = (double*)malloc(NSN * sizeof(double));

my_rates->SN0_fC = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fO = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fMg = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fAl = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fSi = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fS = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fFe = (double*)malloc(NSN * sizeof(double));

my_rates->SN0_fSiM = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fFeM = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fMg2SiO4 = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fMgSiO3 = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fFe3O4 = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fAC = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fSiO2D = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fMgO = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fFeS = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fAl2O3 = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_freforg = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fvolorg = (double*)malloc(NSN * sizeof(double));
my_rates->SN0_fH2Oice = (double*)malloc(NSN * sizeof(double));

for(iSN = 0; iSN < NSN; iSN++) {
my_rates->SN0_XC [iSN] = 0.0;
Expand Down Expand Up @@ -112,19 +131,19 @@ int initialize_dust_yields(chemistry_data *my_chemistry,
my_rates->SN0_fH2Oice [iSN] = 0.0;
}

my_rates->SN0_r0SiM = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0FeM = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0Mg2SiO4 = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0MgSiO3 = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0Fe3O4 = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0AC = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0SiO2D = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0MgO = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0FeS = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0Al2O3 = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0reforg = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0volorg = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0H2Oice = malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0SiM = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0FeM = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0Mg2SiO4 = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0MgSiO3 = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0Fe3O4 = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0AC = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0SiO2D = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0MgO = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0FeS = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0Al2O3 = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0reforg = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0volorg = (double*)malloc(NSN * 3 * sizeof(double));
my_rates->SN0_r0H2Oice = (double*)malloc(NSN * 3 * sizeof(double));

itab = 0;
for(iSN = 0; iSN < NSN; iSN++) {
Expand All @@ -151,27 +170,27 @@ int initialize_dust_yields(chemistry_data *my_chemistry,
dTd = 0.1000000;
Nmom = 4;

my_rates->gr_Td = malloc(NTd * Nmom * sizeof(double));
my_rates->gr_Td = (double*)malloc(NTd * Nmom * sizeof(double));
my_rates->gr_Size = NTd * Nmom;
my_rates->gr_N[0] = Nmom;
my_rates->gr_N[1] = NTd;
my_rates->gr_dT = dTd;
for(iTd = 0; iTd < NTd; iTd++)
my_rates->gr_Td[iTd] = Td0 + (double)iTd * dTd;

my_rates->SN0_kpSiM = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpFeM = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpMg2SiO4 = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpMgSiO3 = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpFe3O4 = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpAC = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpSiO2D = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpMgO = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpFeS = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpAl2O3 = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpreforg = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpvolorg = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpH2Oice = malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpSiM = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpFeM = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpMg2SiO4 = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpMgSiO3 = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpFe3O4 = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpAC = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpSiO2D = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpMgO = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpFeS = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpAl2O3 = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpreforg = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpvolorg = (double*)malloc(NSN * Nmom * NTd * sizeof(double));
my_rates->SN0_kpH2Oice = (double*)malloc(NSN * Nmom * NTd * sizeof(double));

itab = 0;
for(iSN = 0; iSN < NSN; iSN++) {
Expand Down Expand Up @@ -212,8 +231,8 @@ int initialize_dust_yields(chemistry_data *my_chemistry,
return SUCCESS;
}

int local_free_dust_yields(chemistry_data *my_chemistry,
chemistry_data_storage *my_rates)
int grackle::impl::free_dust_yields(chemistry_data *my_chemistry,
chemistry_data_storage *my_rates)
{

if (my_chemistry->metal_chemistry == 0)
Expand Down Expand Up @@ -282,6 +301,8 @@ int local_free_dust_yields(chemistry_data *my_chemistry,
return SUCCESS;
}

namespace { // stuff inside an anonymous namespace is local to this file

int calc_rates_dust_loc(int iSN, chemistry_data *my_chemistry, chemistry_data_storage *my_rates)
{

Expand Down Expand Up @@ -4367,3 +4388,5 @@ int calc_rates_dust_Y19(int iSN, chemistry_data *my_chemistry, chemistry_data_st

return SUCCESS;
}

} // anonymous namespace
Loading