diff --git a/src/hydro/Default/hydro_io.h b/src/hydro/Default/hydro_io.h index 8c12f015bd69dc917a80c564422676a85ffcfb3b..c057886ea6dd4900949a87de35055351326a00fe 100644 --- a/src/hydro/Default/hydro_io.h +++ b/src/hydro/Default/hydro_io.h @@ -32,8 +32,6 @@ void hydro_read_particles(struct part* parts, struct io_props* list, int* num_fields) { - *num_fields = 8; - /* List what we want to read */ list[0] = io_make_input_field("Coordinates", DOUBLE, 3, COMPULSORY, UNIT_CONV_LENGTH, parts, x); @@ -51,6 +49,13 @@ void hydro_read_particles(struct part* parts, struct io_props* list, UNIT_CONV_ACCELERATION, parts, a_hydro); list[7] = io_make_input_field("Density", FLOAT, 1, OPTIONAL, UNIT_CONV_DENSITY, parts, rho); + *num_fields = 8; + list += *num_fields; + + /* Read in chemistry information */ + const int num_chem_fields = chemistry_read_particles(parts, list); + *num_fields += num_chem_fields; + list += num_chem_fields; } void convert_part_pos(const struct engine* e, const struct part* p, @@ -77,8 +82,6 @@ void convert_part_pos(const struct engine* e, const struct part* p, void hydro_write_particles(struct part* parts, struct io_props* list, int* num_fields) { - *num_fields = 8; - /* List what we want to write */ list[0] = io_make_output_field_convert_part( "Coordinates", DOUBLE, 3, UNIT_CONV_LENGTH, parts, convert_part_pos); @@ -96,6 +99,14 @@ void hydro_write_particles(struct part* parts, struct io_props* list, UNIT_CONV_ACCELERATION, parts, a_hydro); list[7] = io_make_output_field("Density", FLOAT, 1, UNIT_CONV_DENSITY, parts, rho); + + *num_fields = 8; + list += *num_fields; + + /* Write some chemistry information */ + const int num_chem_fields = chemistry_write_particles(parts, list); + *num_fields += num_chem_fields; + list += num_chem_fields; } /** diff --git a/src/hydro/Default/hydro_part.h b/src/hydro/Default/hydro_part.h index 5d2f76ab298cdd6199d95abe1e4435321302689e..042fa2aee4e972c245a8390759f9765a71b20279 100644 --- a/src/hydro/Default/hydro_part.h +++ b/src/hydro/Default/hydro_part.h @@ -46,6 +46,12 @@ struct xpart { /* Data of a single particle. */ struct part { + /* Particle ID. */ + long long id; + + /* Pointer to corresponding gravity part. */ + struct gpart* gpart; + /* Particle position. */ double x[3]; @@ -116,11 +122,8 @@ struct part { /* Particle mass. */ float mass; - /* Particle ID. */ - long long id; - - /* Pointer to corresponding gravity part. */ - struct gpart* gpart; + /* Chemistry information */ + struct chemistry_part_data chemistry_data; /* Particle time-bin */ timebin_t time_bin; diff --git a/src/hydro/Gizmo/hydro_io.h b/src/hydro/Gizmo/hydro_io.h index 9d6acf4155f02dc8caaa92be5366389ebb5ecaef..4c4b9e45d307c88097001bff18cd8034d4246c86 100644 --- a/src/hydro/Gizmo/hydro_io.h +++ b/src/hydro/Gizmo/hydro_io.h @@ -41,8 +41,6 @@ void hydro_read_particles(struct part* parts, struct io_props* list, int* num_fields) { - *num_fields = 8; - /* List what we want to read */ list[0] = io_make_input_field("Coordinates", DOUBLE, 3, COMPULSORY, UNIT_CONV_LENGTH, parts, x); @@ -61,6 +59,14 @@ void hydro_read_particles(struct part* parts, struct io_props* list, UNIT_CONV_ACCELERATION, parts, a_hydro); list[7] = io_make_input_field("Density", FLOAT, 1, OPTIONAL, UNIT_CONV_DENSITY, parts, primitives.rho); + + *num_fields = 8; + list += *num_fields; + + /* Read in chemistry information */ + const int num_chem_fields = chemistry_read_particles(parts, list); + *num_fields += num_chem_fields; + list += num_chem_fields; } /** @@ -131,8 +137,6 @@ void convert_part_pos(const struct engine* e, const struct part* p, void hydro_write_particles(struct part* parts, struct io_props* list, int* num_fields) { - *num_fields = 10; - /* List what we want to write */ list[0] = io_make_output_field_convert_part( "Coordinates", DOUBLE, 3, UNIT_CONV_LENGTH, parts, convert_part_pos); @@ -155,6 +159,14 @@ void hydro_write_particles(struct part* parts, struct io_props* list, parts, primitives.P); list[9] = io_make_output_field_convert_part( "TotEnergy", FLOAT, 1, UNIT_CONV_ENERGY, parts, convert_Etot); + + *num_fields = 10; + list += *num_fields; + + /* Write some chemistry information */ + const int num_chem_fields = chemistry_write_particles(parts, list); + *num_fields += num_chem_fields; + list += num_chem_fields; } /** diff --git a/src/hydro/Gizmo/hydro_part.h b/src/hydro/Gizmo/hydro_part.h index f13da395bb8dfe0ccc04e7fb823c47c1f2db4b02..76527f47b2a549d0cdac2f589adfff26cbb589c2 100644 --- a/src/hydro/Gizmo/hydro_part.h +++ b/src/hydro/Gizmo/hydro_part.h @@ -188,6 +188,9 @@ struct part { } gravity; + /* Chemistry information */ + struct chemistry_part_data chemistry_data; + /* Time-step length */ timebin_t time_bin; diff --git a/src/hydro/Minimal/hydro_io.h b/src/hydro/Minimal/hydro_io.h index 771e4ac2d066ea098edb8b2f11d7afd550783347..3d7333b8c3dda686087a05827138abd8a30fe614 100644 --- a/src/hydro/Minimal/hydro_io.h +++ b/src/hydro/Minimal/hydro_io.h @@ -48,8 +48,6 @@ void hydro_read_particles(struct part* parts, struct io_props* list, int* num_fields) { - *num_fields = 8; - /* List what we want to read */ list[0] = io_make_input_field("Coordinates", DOUBLE, 3, COMPULSORY, UNIT_CONV_LENGTH, parts, x); @@ -67,6 +65,13 @@ void hydro_read_particles(struct part* parts, struct io_props* list, UNIT_CONV_ACCELERATION, parts, a_hydro); list[7] = io_make_input_field("Density", FLOAT, 1, OPTIONAL, UNIT_CONV_DENSITY, parts, rho); + *num_fields = 8; + list += *num_fields; + + /* Read in chemistry information */ + const int num_chem_fields = chemistry_read_particles(parts, list); + *num_fields += num_chem_fields; + list += num_chem_fields; } void convert_S(const struct engine* e, const struct part* p, float* ret) { @@ -103,8 +108,6 @@ void convert_part_pos(const struct engine* e, const struct part* p, void hydro_write_particles(struct part* parts, struct io_props* list, int* num_fields) { - *num_fields = 10; - /* List what we want to write */ list[0] = io_make_output_field_convert_part( "Coordinates", DOUBLE, 3, UNIT_CONV_LENGTH, parts, convert_part_pos); @@ -126,6 +129,14 @@ void hydro_write_particles(struct part* parts, struct io_props* list, "Entropy", FLOAT, 1, UNIT_CONV_ENTROPY_PER_UNIT_MASS, parts, convert_S); list[9] = io_make_output_field_convert_part( "Pressure", FLOAT, 1, UNIT_CONV_PRESSURE, parts, convert_P); + + *num_fields = 10; + list += *num_fields; + + /* Write some chemistry information */ + const int num_chem_fields = chemistry_write_particles(parts, list); + *num_fields += num_chem_fields; + list += num_chem_fields; } /** diff --git a/src/hydro/Minimal/hydro_part.h b/src/hydro/Minimal/hydro_part.h index e9289c099a8a4ee698b016036e4e3d4dad481768..3ecf97e9246c60a223743ce54d4dc45b33e4250c 100644 --- a/src/hydro/Minimal/hydro_part.h +++ b/src/hydro/Minimal/hydro_part.h @@ -149,6 +149,9 @@ struct part { } force; }; + /* Chemistry information */ + struct chemistry_part_data chemistry_data; + /*! Time-step length */ timebin_t time_bin; diff --git a/src/hydro/PressureEntropy/hydro_io.h b/src/hydro/PressureEntropy/hydro_io.h index d3780261ba587cfac92ec44a65b13f0a4344b3c3..3d414c6a2603fd981ed48ea10824872c7622f00f 100644 --- a/src/hydro/PressureEntropy/hydro_io.h +++ b/src/hydro/PressureEntropy/hydro_io.h @@ -45,8 +45,6 @@ void hydro_read_particles(struct part* parts, struct io_props* list, int* num_fields) { - *num_fields = 8; - /* List what we want to read */ list[0] = io_make_input_field("Coordinates", DOUBLE, 3, COMPULSORY, UNIT_CONV_LENGTH, parts, x); @@ -65,6 +63,14 @@ void hydro_read_particles(struct part* parts, struct io_props* list, UNIT_CONV_ACCELERATION, parts, a_hydro); list[7] = io_make_input_field("Density", FLOAT, 1, OPTIONAL, UNIT_CONV_DENSITY, parts, rho); + + *num_fields = 8; + list += *num_fields; + + /* Read in chemistry information */ + const int num_chem_fields = chemistry_read_particles(parts, list); + *num_fields += num_chem_fields; + list += num_chem_fields; } void convert_u(const struct engine* e, const struct part* p, float* ret) { @@ -101,8 +107,6 @@ void convert_part_pos(const struct engine* e, const struct part* p, void hydro_write_particles(struct part* parts, struct io_props* list, int* num_fields) { - *num_fields = 11; - /* List what we want to write */ list[0] = io_make_output_field_convert_part( "Coordinates", DOUBLE, 3, UNIT_CONV_LENGTH, parts, convert_part_pos); @@ -127,6 +131,14 @@ void hydro_write_particles(struct part* parts, struct io_props* list, "Pressure", FLOAT, 1, UNIT_CONV_PRESSURE, parts, convert_P); list[10] = io_make_output_field("WeightedDensity", FLOAT, 1, UNIT_CONV_DENSITY, parts, rho_bar); + + *num_fields = 11; + list += *num_fields; + + /* Write some chemistry information */ + const int num_chem_fields = chemistry_write_particles(parts, list); + *num_fields += num_chem_fields; + list += num_chem_fields; } /** diff --git a/src/hydro/PressureEntropy/hydro_part.h b/src/hydro/PressureEntropy/hydro_part.h index 6cb6fe87393e376dc189150286079faa9f41cb68..4f7f85e28fc94cb31ab4b3089f1f93a513aff97f 100644 --- a/src/hydro/PressureEntropy/hydro_part.h +++ b/src/hydro/PressureEntropy/hydro_part.h @@ -138,6 +138,9 @@ struct part { } force; }; + /* Chemistry information */ + struct chemistry_part_data chemistry_data; + /* Time-step length */ timebin_t time_bin; diff --git a/src/hydro/Shadowswift/hydro_io.h b/src/hydro/Shadowswift/hydro_io.h index f6f6fcc6c070b0add8e2b97678e5ef1ada636bfd..2c19dded539cffc22eeb90bc70c15760e0d57b5c 100644 --- a/src/hydro/Shadowswift/hydro_io.h +++ b/src/hydro/Shadowswift/hydro_io.h @@ -35,8 +35,6 @@ void hydro_read_particles(struct part* parts, struct io_props* list, int* num_fields) { - *num_fields = 8; - /* List what we want to read */ list[0] = io_make_input_field("Coordinates", DOUBLE, 3, COMPULSORY, UNIT_CONV_LENGTH, parts, x); @@ -55,6 +53,13 @@ void hydro_read_particles(struct part* parts, struct io_props* list, UNIT_CONV_ACCELERATION, parts, a_hydro); list[7] = io_make_input_field("Density", FLOAT, 1, OPTIONAL, UNIT_CONV_DENSITY, parts, primitives.rho); + *num_fields = 8; + list += *num_fields; + + /* Read in chemistry information */ + const int num_chem_fields = chemistry_read_particles(parts, list); + *num_fields += num_chem_fields; + list += num_chem_fields; } /** @@ -128,8 +133,6 @@ void convert_part_pos(const struct engine* e, const struct part* p, void hydro_write_particles(struct part* parts, struct io_props* list, int* num_fields) { - *num_fields = 13; - /* List what we want to write */ list[0] = io_make_output_field_convert_part( "Coordinates", DOUBLE, 3, UNIT_CONV_LENGTH, parts, convert_part_pos); @@ -158,6 +161,14 @@ void hydro_write_particles(struct part* parts, struct io_props* list, parts, primitives.P); list[12] = io_make_output_field_convert_part( "TotEnergy", FLOAT, 1, UNIT_CONV_ENERGY, parts, convert_Etot); + + *num_fields = 13; + list += *num_fields; + + /* Write some chemistry information */ + const int num_chem_fields = chemistry_write_particles(parts, list); + *num_fields += num_chem_fields; + list += num_chem_fields; } /** diff --git a/src/hydro/Shadowswift/hydro_part.h b/src/hydro/Shadowswift/hydro_part.h index e25400e905b893d13ffb552da42d3fbf96d71fde..ae30ecca74cebe7df3057f7508d6d6aa04ddbfa6 100644 --- a/src/hydro/Shadowswift/hydro_part.h +++ b/src/hydro/Shadowswift/hydro_part.h @@ -169,6 +169,9 @@ struct part { } force; + /* Chemistry information */ + struct chemistry_part_data chemistry_data; + /* Time-step length */ timebin_t time_bin;