Skip to content

reconstruct_fields drops fields added by add_field #2782

Description

@wyatt-fluidnumerics

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugneeds-triageIssue that has not been reviewed by a Parcels team member

    Type

    No type

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions