SWIFTSIM / SWIFT

Modern astrophysics and cosmology particle-based code. Mirror of gitlab developments at https://gitlab.cosma.dur.ac.uk/swift/swiftsim
http://www.swiftsim.com
GNU Lesser General Public License v3.0
88 stars 58 forks source link

Unable to build with EAGLE cooling #9

Closed mmlinford closed 5 years ago

mmlinford commented 5 years ago

Hello!

I was trying to run the SmallCosmoVolume_cooling example and got a message that cooling was not enabled when I compiled SWIFT, so I tried to do that with the EAGLE option (which I chose arbitrarily because I don't yet know what I'm doing 😄)

When I tried to configure with

./configure --with-cooling=EAGLE

and did make, I got the below errors

(giant console output)

```bash in file included from cooling/EAGLE/cooling.c:36:0: cooling/EAGLE/cooling_rates.h: In function ‘abundance_ratio_to_solar’: cooling/EAGLE/cooling_rates.h:58:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H] * ^ cooling/EAGLE/cooling_rates.h:58:54: error: ‘chemistry_element_H’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H] * ^~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling_rates.h:58:54: note: each undeclared identifier is reported only once for each function it appears in cooling/EAGLE/cooling_rates.h:62:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_He] * ^ cooling/EAGLE/cooling_rates.h:62:54: error: ‘chemistry_element_He’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_He] * ^~~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling_rates.h:66:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_C] * ^ cooling/EAGLE/cooling_rates.h:66:54: error: ‘chemistry_element_C’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_C] * ^~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling_rates.h:70:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_N] * ^ cooling/EAGLE/cooling_rates.h:70:54: error: ‘chemistry_element_N’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_N] * ^~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling_rates.h:74:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_O] * ^ cooling/EAGLE/cooling_rates.h:74:54: error: ‘chemistry_element_O’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_O] * ^~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling_rates.h:78:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Ne] * ^ cooling/EAGLE/cooling_rates.h:78:54: error: ‘chemistry_element_Ne’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Ne] * ^~~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling_rates.h:82:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Mg] * ^ cooling/EAGLE/cooling_rates.h:82:54: error: ‘chemistry_element_Mg’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Mg] * ^~~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling_rates.h:86:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Si] * ^ cooling/EAGLE/cooling_rates.h:86:54: error: ‘chemistry_element_Si’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Si] * ^~~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling_rates.h:91:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Si] * ^ cooling/EAGLE/cooling_rates.h:97:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Si] * ^ cooling/EAGLE/cooling_rates.h:102:24: error: ‘const struct chemistry_part_data’ has no member named ‘metal_mass_fraction’ p->chemistry_data.metal_mass_fraction[chemistry_element_Fe] * ^ cooling/EAGLE/cooling_rates.h:102:45: error: ‘chemistry_element_Fe’ undeclared (first use in this function) p->chemistry_data.metal_mass_fraction[chemistry_element_Fe] * ^~~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling.c: In function ‘newton_iter’: cooling/EAGLE/cooling.c:234:24: error: ‘struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H]; ^ cooling/EAGLE/cooling.c:234:54: error: ‘chemistry_element_H’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H]; ^~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling.c: In function ‘cooling_cool_part’: cooling/EAGLE/cooling.c:527:24: error: ‘struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H]; ^ cooling/EAGLE/cooling.c:527:54: error: ‘chemistry_element_H’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H]; ^~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling.c:529:24: error: ‘struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_He]; ^ cooling/EAGLE/cooling.c:529:54: error: ‘chemistry_element_He’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_He]; ^~~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling.c: In function ‘cooling_get_temperature’: cooling/EAGLE/cooling.c:749:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H]; ^ cooling/EAGLE/cooling.c:749:54: error: ‘chemistry_element_H’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H]; ^~~~~~~~~~~~~~~~~~~ cooling/EAGLE/cooling.c:751:24: error: ‘const struct chemistry_part_data’ has no member named ‘smoothed_metal_mass_fraction’ p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_He]; ^ cooling/EAGLE/cooling.c:751:54: error: ‘chemistry_element_He’ undeclared (first use in this function) p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_He]; ```

I did not get errors compiling SWIFT when I tried with const-lambda.

JBorrow commented 5 years ago

Hi, you will need to configure —with-chemistry=eagle and have the cooling tables in your run directory (see examples/Cooling/getEAGLECoolingTables.sh, or at least its named something like that).

mmlinford commented 5 years ago

Wow, thanks for the fast response! I'll give that a try...

mmlinford commented 5 years ago

Yup, compiled fine and was able to start running that example.

I wonder if there's a way to make the configuration automatically enable EAGLE chemistry when EAGLE cooling is enabled (I'm no as familiar with automake)?

JBorrow commented 5 years ago

We could but usually we’d just have people compile with —with-subgrid=eagle, which includes the full galaxy formation model (star formation, equation of state, black holes when we add them...)