Skip to content

Commit b989c54

Browse files
authored
Merge pull request #1782 from knutfrode/dev
Fixed problem with oiltype set by id being overridden by new seeding
2 parents 4e322e4 + 5a0a2ad commit b989c54

2 files changed

Lines changed: 14 additions & 4 deletions

File tree

opendrift/models/openoil/openoil.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ def __init__(self, weathering_model='noaa', *args, **kwargs):
340340
other_oiltypes = [o for o in self.oiltypes if o[0:7] != 'GENERIC']
341341
self.oiltypes = sorted([o for o in generic_oiltypes]) + sorted([o for o in other_oiltypes])
342342
self.oiltypes = [ot for ot in self.oiltypes if ot not in self.duplicate_oils]
343+
self.oiltype = None
343344

344345
# For Norwegian oils, max water fraction from Sintef is overriding NOAA value
345346
self.max_water_fraction = None
@@ -1544,6 +1545,8 @@ def set_oiltype_by_id(self, oiltypeid):
15441545
f"{self.oiltype} is not a valid oil for Opendrift simulations"
15451546
)
15461547
raise ValueError()
1548+
self.__set_seed_config__('seed:oil_type', self.oil_name)
1549+
logger.info(f'setting oil_type to: {self.oil_name} (ID: {oiltypeid})')
15471550
else:
15481551
raise ValueError("unsupported oil weathering model")
15491552

@@ -1708,9 +1711,12 @@ def seed_elements(self, *args, **kwargs):
17081711
else: # Oil do not exist -> setting config to raise error and provide suggestions
17091712
self.set_config('seed:oil_type', kwargs['oil_type'])
17101713
else:
1711-
logger.info('Oil type not specified, using default: ' +
1712-
self.get_config('seed:oil_type'))
1713-
self.set_oiltype(self.get_config('seed:oil_type'))
1714+
if self.oiltype is None:
1715+
logger.info('Oil type not specified, using default: ' +
1716+
self.get_config('seed:oil_type'))
1717+
self.set_oiltype(self.get_config('seed:oil_type'))
1718+
else:
1719+
logger.info(f'Oil type already set as {self.oiltype.name}')
17141720

17151721
if self.oil_weathering_model == 'noaa':
17161722
self.Density = Density(self.oiltype.oil)

tests/models/openoil/test_openoil.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,11 @@ def test_set_oil_type_by_id():
9696
o = OpenOil(loglevel=50)
9797
o.set_oiltype_by_id('NO00108')
9898
assert o.oiltype.name == 'AASGARD A 2003'
99-
print(o.oiltype)
99+
# Check that oiltype is also used after actual seeding
100+
o.set_config('environment:constant', {
101+
'x_wind': 0, 'y_wind': 0, 'x_sea_water_velocity': 0, 'y_sea_water_velocity': 0})
102+
o.seed_elements(lon=0, lat=0, time=datetime.now())
103+
assert o.oiltype.name == 'AASGARD A 2003'
100104

101105
def test_oil_type_alias():
102106
o = OpenOil(loglevel=50)

0 commit comments

Comments
 (0)