Parcels version
v4 main
Description
Currently reconstruct_fields take fields exclusively from the models in self.models, this means that any time reconstruct_fields is called, any fields that were added via add_field get dropped. This is especially a problem since add_constant_field calls reconstruct_fields. The code below reproduces the issue.
Code sample
from parcels._core.fieldset import FieldSet
from parcels._datasets.structured.generic import datasets as datasets_structured
ds = datasets_structured["ds_2d_left"][["U_A_grid", "V_A_grid", "grid"]].rename(
{"U_A_grid": "U", "V_A_grid": "V"}
)
fieldset = FieldSet.from_sgrid_conventions(ds, mesh="flat")
fieldset.add_field(fieldset.fields["U"], name="U2")
print("After add_field: 'U2' in fieldset.fields ->", "U2" in fieldset.fields)
fieldset.reconstruct_fields()
print("After reconstruct_fields(): 'U2' in fieldset.fields ->", "U2" in fieldset.fields)
fieldset.add_field(fieldset.fields["U"], name="U3")
print("\nAfter add_field: 'U3' in fieldset.fields ->", "U3" in fieldset.fields)
fieldset.add_constant_field("const", 1.0, mesh="flat") # internally calls reconstruct_fields()
print("After add_constant_field(): 'U3' in fieldset.fields ->", "U3" in fieldset.fields)
After add_field: 'U2' in fieldset.fields -> True
After reconstruct_fields(): 'U2' in fieldset.fields -> False
After add_field: 'U3' in fieldset.fields -> True
After add_constant_field(): 'U3' in fieldset.fields -> False
Parcels version
v4 main
Description
Currently
reconstruct_fieldstake fields exclusively from the models inself.models, this means that any timereconstruct_fieldsis called, any fields that were added viaadd_fieldget dropped. This is especially a problem sinceadd_constant_fieldcallsreconstruct_fields. The code below reproduces the issue.Code sample