Skip to content

Issue #1176 assign wells with point filters #1186

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
2130b67
Update validation to support screen tops equalling screen bottom
JoerivanEngelen Sep 3, 2024
eebb9c2
Deal with point filters
JoerivanEngelen Sep 3, 2024
bb7d922
Add case for point filters
JoerivanEngelen Sep 3, 2024
28861fa
Fix bug with improper shape
JoerivanEngelen Sep 3, 2024
e86c2e1
Only compute overlap in layers where point filters are located
JoerivanEngelen Sep 3, 2024
102e734
Improve variable name
JoerivanEngelen Sep 3, 2024
7cd931e
Fix point well case, ensure filter inside aquifer
JoerivanEngelen Sep 4, 2024
fef2c76
Update changelog
JoerivanEngelen Sep 4, 2024
7baae79
Set default minimum thickness similar to the one in assign_wells
JoerivanEngelen Sep 5, 2024
b168f9b
in_layer if equal to layer top as well
JoerivanEngelen Sep 5, 2024
5d6fb5d
Screen point filter equal to top layer interface.
JoerivanEngelen Sep 5, 2024
824a2cf
Issue #1179 Setup docker usage in the TeamCity pipelines (#1180)
Manangka Sep 5, 2024
c341c9a
Merge branch 'imod5_converter_feature_branch' into issue_#1176_assign…
JoerivanEngelen Sep 5, 2024
5d4505c
Deal with review comments
JoerivanEngelen Sep 6, 2024
be631be
Fix all mypy errors
JoerivanEngelen Sep 6, 2024
2c0a973
Type annotate with proper dtype
JoerivanEngelen Sep 6, 2024
d49172e
Issue #1190 Run Main and Nightly pipelines inside docker containers (…
Manangka Sep 6, 2024
51d01ae
Update function name
JoerivanEngelen Sep 9, 2024
cf510b9
Move tests to appropriate folder
JoerivanEngelen Sep 9, 2024
95cfc44
Add last well with point filter
JoerivanEngelen Sep 9, 2024
5b957d1
Set minimum thickness to old default setting
JoerivanEngelen Sep 9, 2024
87f03cc
Merge branch 'master' into issue_#1176_assign_wells_zero_filter_length
JoerivanEngelen Sep 9, 2024
b216fbb
Update changelog
JoerivanEngelen Sep 9, 2024
88b8ec5
Finish type annotation in module
JoerivanEngelen Sep 9, 2024
f8403fc
Add unittests with point filter cases and separate test for point fil…
JoerivanEngelen Sep 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions .teamcity/Templates/ExamplesTemplate.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import jetbrains.buildServer.configs.kotlin.AbsoluteId
import jetbrains.buildServer.configs.kotlin.DslContext
import jetbrains.buildServer.configs.kotlin.Template
import jetbrains.buildServer.configs.kotlin.buildFeatures.XmlReport
import jetbrains.buildServer.configs.kotlin.buildFeatures.dockerSupport
import jetbrains.buildServer.configs.kotlin.buildFeatures.xmlReport
import jetbrains.buildServer.configs.kotlin.buildSteps.ScriptBuildStep
import jetbrains.buildServer.configs.kotlin.buildSteps.script

object ExamplesTemplate : Template({
Expand All @@ -25,21 +27,26 @@ object ExamplesTemplate : Template({
id = "Run_examples"
workingDir = "imod-python"
scriptContent = """
set Path=%system.teamcity.build.checkoutDir%\modflow6;"d:\ProgramData\pixi"
SET PATH=%%PATH%%;%system.teamcity.build.checkoutDir%\modflow6
pixi run --environment default --frozen examples
""".trimIndent()
formatStderrAsError = true
dockerImage = "containers.deltares.nl/hydrology_product_line_imod/windows-pixi:v0.26.1"
dockerImagePlatform = ScriptBuildStep.ImagePlatform.Windows
dockerRunParameters = """--cpus="4""""
dockerPull = true
}
}

features {
dockerSupport {
loginToRegistry = on {
dockerRegistryId = "PROJECT_EXT_134"
}
}
xmlReport {
reportType = XmlReport.XmlReportType.JUNIT
rules = "imod-python/imod/tests/*report.xml"
}
}

requirements {
equals("env.OS", "Windows_NT")
}
})
13 changes: 11 additions & 2 deletions .teamcity/Templates/LintTemplate.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package Templates

import jetbrains.buildServer.configs.kotlin.DslContext
import jetbrains.buildServer.configs.kotlin.Template
import jetbrains.buildServer.configs.kotlin.buildFeatures.dockerSupport
import jetbrains.buildServer.configs.kotlin.buildSteps.ScriptBuildStep
import jetbrains.buildServer.configs.kotlin.buildSteps.script

object LintTemplate : Template({
Expand All @@ -24,10 +26,17 @@ object LintTemplate : Template({
pixi run --environment default --frozen lint
""".trimIndent()
formatStderrAsError = true
dockerImage = "containers.deltares.nl/hydrology_product_line_imod/windows-pixi:v0.26.1"
dockerImagePlatform = ScriptBuildStep.ImagePlatform.Windows
dockerPull = true
}
}

requirements {
equals("env.OS", "Windows_NT")
features {
dockerSupport {
loginToRegistry = on {
dockerRegistryId = "PROJECT_EXT_134"
}
}
}
})
14 changes: 10 additions & 4 deletions .teamcity/Templates/MyPyTemplate.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package Templates
import jetbrains.buildServer.configs.kotlin.DslContext
import jetbrains.buildServer.configs.kotlin.Template
import jetbrains.buildServer.configs.kotlin.buildFeatures.XmlReport
import jetbrains.buildServer.configs.kotlin.buildFeatures.dockerSupport
import jetbrains.buildServer.configs.kotlin.buildFeatures.xmlReport
import jetbrains.buildServer.configs.kotlin.buildSteps.ScriptBuildStep
import jetbrains.buildServer.configs.kotlin.buildSteps.script
import jetbrains.buildServer.configs.kotlin.failureConditions.BuildFailureOnMetric
import jetbrains.buildServer.configs.kotlin.failureConditions.failOnMetricChange
Expand All @@ -29,6 +31,9 @@ object MyPyTemplate : Template({
pixi run --environment default --frozen mypy
""".trimIndent()
formatStderrAsError = true
dockerImage = "containers.deltares.nl/hydrology_product_line_imod/windows-pixi:v0.26.1"
dockerImagePlatform = ScriptBuildStep.ImagePlatform.Windows
dockerPull = true
}
}

Expand All @@ -45,13 +50,14 @@ object MyPyTemplate : Template({
}

features {
dockerSupport {
loginToRegistry = on {
dockerRegistryId = "PROJECT_EXT_134"
}
}
xmlReport {
reportType = XmlReport.XmlReportType.JUNIT
rules = "imod-python/*.xml"
}
}

requirements {
equals("env.OS", "Windows_NT")
}
})
14 changes: 10 additions & 4 deletions .teamcity/Templates/PipPythonTemplate.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package Templates

import jetbrains.buildServer.configs.kotlin.DslContext
import jetbrains.buildServer.configs.kotlin.Template
import jetbrains.buildServer.configs.kotlin.buildFeatures.dockerSupport
import jetbrains.buildServer.configs.kotlin.buildSteps.ScriptBuildStep
import jetbrains.buildServer.configs.kotlin.buildSteps.script
import jetbrains.buildServer.configs.kotlin.matrix

Expand All @@ -25,14 +27,18 @@ object PipPythonTemplate : Template({
pixi run --environment %python_env% --frozen test_import
""".trimIndent()
formatStderrAsError = true
dockerImage = "containers.deltares.nl/hydrology_product_line_imod/windows-pixi:v0.26.1"
dockerImagePlatform = ScriptBuildStep.ImagePlatform.Windows
dockerPull = true
}
}

requirements {
equals("env.OS", "Windows_NT")
}

features {
dockerSupport {
loginToRegistry = on {
dockerRegistryId = "PROJECT_EXT_134"
}
}
matrix {
param(
"python_env", listOf(
Expand Down
20 changes: 15 additions & 5 deletions .teamcity/Templates/UnitTestsTemplate.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package Templates
import jetbrains.buildServer.configs.kotlin.DslContext
import jetbrains.buildServer.configs.kotlin.Template
import jetbrains.buildServer.configs.kotlin.buildFeatures.XmlReport
import jetbrains.buildServer.configs.kotlin.buildFeatures.dockerSupport
import jetbrains.buildServer.configs.kotlin.buildFeatures.xmlReport
import jetbrains.buildServer.configs.kotlin.buildSteps.ScriptBuildStep
import jetbrains.buildServer.configs.kotlin.buildSteps.powerShell
import jetbrains.buildServer.configs.kotlin.buildSteps.script

Expand All @@ -28,10 +30,14 @@ object UnitTestsTemplate : Template({
id = "Run_unittests"
workingDir = "imod-python"
scriptContent = """
set Path=%system.teamcity.build.checkoutDir%\modflow6;"d:\ProgramData\pixi"
SET PATH=%%PATH%%;%system.teamcity.build.checkoutDir%\modflow6
pixi run --environment default --frozen unittests
""".trimIndent()
formatStderrAsError = true
dockerImage = "containers.deltares.nl/hydrology_product_line_imod/windows-pixi:v0.26.1"
dockerImagePlatform = ScriptBuildStep.ImagePlatform.Windows
dockerRunParameters = """--cpus="4""""
dockerPull = true
}
powerShell {
name = "Extract coverage statistics"
Expand All @@ -51,17 +57,21 @@ object UnitTestsTemplate : Template({
Write-Host "##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='${'$'}TOTALLINES']"
""".trimIndent()
}
param("plugin.docker.imagePlatform", "windows")
param("plugin.docker.imageId", "containers.deltares.nl/hydrology_product_line_imod/windows-pixi:v0.26.1")
param("plugin.docker.pull.enabled", "true")
}
}

features {
dockerSupport {
loginToRegistry = on {
dockerRegistryId = "PROJECT_EXT_134"
}
}
xmlReport {
reportType = XmlReport.XmlReportType.JUNIT
rules = "imod-python/imod/tests/*report.xml"
}
}

requirements {
equals("env.OS", "Windows_NT")
}
})
8 changes: 8 additions & 0 deletions .teamcity/_Self/MainProject.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import jetbrains.buildServer.configs.kotlin.buildFeatures.pullRequests
import jetbrains.buildServer.configs.kotlin.failureConditions.BuildFailureOnMetric
import jetbrains.buildServer.configs.kotlin.failureConditions.failOnMetricChange
import jetbrains.buildServer.configs.kotlin.projectFeatures.ProjectReportTab
import jetbrains.buildServer.configs.kotlin.projectFeatures.dockerRegistry
import jetbrains.buildServer.configs.kotlin.projectFeatures.projectReportTab
import jetbrains.buildServer.configs.kotlin.triggers.vcs

Expand All @@ -29,6 +30,13 @@ object MainProject : Project({
template(PipPythonTemplate)

features {
dockerRegistry {
id = "PROJECT_EXT_134"
name = "Hydrology"
url = "https://containers.deltares.nl/"
userName = "robot${'$'}hydrology_product_line_imod+teamcity"
password = "credentialsJSON:7cfeee0c-bc26-4c80-b488-a5d8e00233c3"
}
buildTypeCustomChart {
id = "PROJECT_EXT_41"
title = "Build Duration (all stages)"
Expand Down
4 changes: 4 additions & 0 deletions docs/api/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ Changed
polygons.
- :func:`open_projectfile_data` now returns well data grouped by ipf name,
instead of generic, separate number per entry.
- :class:`imod.mf6.Well` now supports wells which have a filter with zero
length, where ``"screen_top"`` equals ``"screen_bottom"``.
- :class:`imod.mf6.Well` shares the same default ``minimum_thickness`` as
:func:`imod.prepare.assign_wells`, which is 0.05, before this was 1.0.

Added
~~~~~
Expand Down
11 changes: 6 additions & 5 deletions imod/mf6/wel.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from imod.logging import init_log_decorator, logger
from imod.logging.logging_decorators import standard_log_decorator
from imod.logging.loglevel import LogLevel
from imod.mf6 import StructuredDiscretization, VerticesDiscretization
from imod.mf6.boundary_condition import (
BoundaryCondition,
DisStructuredBoundaryCondition,
Expand Down Expand Up @@ -339,7 +340,7 @@ def _derive_cellid_from_points(
"x": ("ncellid", x),
"y": ("ncellid", y),
}
cellid = cellid.assign_coords(**coords)
cellid = cellid.assign_coords(coords=coords)

return cellid

Expand Down Expand Up @@ -505,7 +506,7 @@ def from_imod5_data(
imod5_data: dict[str, dict[str, GridDataArray]],
times: list[datetime],
minimum_k: float = 0.1,
minimum_thickness: float = 1.0,
minimum_thickness: float = 0.05,
) -> "GridAgnosticWell":
"""
Convert wells to imod5 data, loaded with
Expand Down Expand Up @@ -728,7 +729,7 @@ class Well(GridAgnosticWell):
"screen_bottom": [
AnyNoDataSchema(),
EmptyIndexesSchema(),
AllValueSchema("<", "screen_top"),
AllValueSchema("<=", "screen_top"),
],
"y": [AnyNoDataSchema(), EmptyIndexesSchema()],
"x": [AnyNoDataSchema(), EmptyIndexesSchema()],
Expand All @@ -754,7 +755,7 @@ def __init__(
concentration_boundary_type="aux",
id: Optional[list[Any]] = None,
minimum_k: float = 0.1,
minimum_thickness: float = 1.0,
minimum_thickness: float = 0.05,
print_input: bool = False,
print_flows: bool = False,
save_flows: bool = False,
Expand Down Expand Up @@ -972,7 +973,7 @@ def _validate_imod5_depth_information(
logger.log(loglevel=LogLevel.ERROR, message=log_msg, additional_depth=2)
raise ValueError(log_msg)

def cleanup(self):
def cleanup(self, _: StructuredDiscretization | VerticesDiscretization):
self.dataset = cleanup_wel(self.dataset)


Expand Down
Loading