Skip to content

Commit 888971a

Browse files
committed
Add functionality to output GRF variogram data to file
1 parent 367f234 commit 888971a

2 files changed

Lines changed: 48 additions & 1 deletion

File tree

src/aps/algorithms/APSModel.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,6 +1140,33 @@ def getAllGaussFieldNamesUsed(self) -> List[str]:
11401140
gfAllZones.append(gf)
11411141
return copy.copy(gfAllZones)
11421142

1143+
def getAllGaussFieldVariogramsUsed(self, job_name: str) -> str:
1144+
content = job_name + '\n'
1145+
for key, zoneModel in self.__zoneModelTable.items():
1146+
(zone_number, region_number) = key
1147+
1148+
gfNames = zoneModel.used_gaussian_field_names
1149+
for gfname in gfNames:
1150+
if self.__debug_level >= Debug.VERY_VERBOSE:
1151+
print(
1152+
f'--- Get variogram data for zone:{zone_number} region:{region_number} for {gfname}'
1153+
)
1154+
content += (
1155+
str(zone_number) + ' ' + str(region_number) + ' ' + gfname + ' '
1156+
)
1157+
variogram_type = zoneModel.getVariogramType(gfname)
1158+
main_range = zoneModel.getMainRange(gfname)
1159+
perp_range = zoneModel.getPerpRange(gfname)
1160+
main_range = zoneModel.getMainRange(gfname)
1161+
vert_range = zoneModel.getVertRange(gfname)
1162+
azimuth = zoneModel.getAzimuthAngle(gfname)
1163+
content += str(variogram_type) + ' '
1164+
content += str(main_range) + ' '
1165+
content += str(perp_range) + ' '
1166+
content += str(vert_range) + ' '
1167+
content += str(azimuth) + '\n'
1168+
return content
1169+
11431170
@property
11441171
def zone_parameter(self) -> str:
11451172
return self.getZoneParamName()
@@ -1462,6 +1489,7 @@ def write_model(
14621489
attributes_file_name: Optional[FilePath] = None,
14631490
param_file_name: Optional[FilePath] = None,
14641491
probability_distribution_file_name: Optional[FilePath] = None,
1492+
variogram_output_file_name: Optional[FilePath] = None,
14651493
current_job_name: Optional[str] = None,
14661494
debug_level: Debug = Debug.OFF,
14671495
) -> None:
@@ -1473,6 +1501,16 @@ def write_model(
14731501
top = ET.Element('APSModel', {'version': self.__aps_model_version})
14741502
root_updated = self.XMLAddElement(top, fmu_attributes)
14751503
write_string_to_file(model_file_name, root_updated, debug_level=debug_level)
1504+
if variogram_output_file_name is not None:
1505+
if current_job_name is None:
1506+
current_job_name = 'apsgui_job_name'
1507+
content = self.getAllGaussFieldVariogramsUsed(current_job_name)
1508+
write_string_to_file(
1509+
variogram_output_file_name,
1510+
content,
1511+
debug_level=debug_level,
1512+
)
1513+
14761514
if len(fmu_attributes) == 0:
14771515
return
14781516
if attributes_file_name is not None:

src/aps/rms_jobs/export_fmu_config_files.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def run(project, **kwargs):
4141
prob_name = job_name + aps_config.ert_config_probs_extension()
4242
ert_field_name = job_name + aps_config.ert_config_fields_extension()
4343
aps_fmuconfig_name = job_name + aps_config.fmu_master_config_extension()
44-
44+
variogram_file_name = job_name + '_variograms.txt'
4545
global_variables_file_path = aps_config.global_variables_file()
4646

4747
# APS model file
@@ -72,6 +72,10 @@ def run(project, **kwargs):
7272
aps_config.ert_model_dir_absolute() + '/' + ert_field_name
7373
)
7474

75+
variogram_output_file_name = (
76+
aps_config.ert_model_dir_absolute() + '/' + variogram_file_name
77+
)
78+
7579
# Check that default directory exist for export of APS model file
7680
export_file_full_path = Path(model_file_name).absolute()
7781
export_file_dir = export_file_full_path.parent
@@ -108,6 +112,10 @@ def run(project, **kwargs):
108112
print(
109113
f'-- Use in ERT distribution config: {probability_distribution_file_name}'
110114
)
115+
if variogram_output_file_name:
116+
print(
117+
f'-- Use optionally to specify localization ranges in ERT: {variogram_output_file_name}'
118+
)
111119
if aps_model.fmu_mode == 'FIELDS':
112120
print(
113121
f'-- Use in ERT main config: {ert_field_keyword_file_name}'
@@ -119,6 +127,7 @@ def run(project, **kwargs):
119127
attributes_file_name=param_file_name_alternative,
120128
param_file_name=param_file_name,
121129
probability_distribution_file_name=probability_distribution_file_name,
130+
variogram_output_file_name=variogram_output_file_name,
122131
current_job_name=job_name,
123132
debug_level=debug_level,
124133
)

0 commit comments

Comments
 (0)