DWIS.Service.ActiveVolume provides the ActiveVolume online fusion, historical calibration, and inspection tooling for DWIS blackboard environments.
The solution is organized around three runtime surfaces:
- a realtime worker that reads drilling signals from the blackboard, runs the shared active-volume model, publishes fused values, and spools live data durably;
- a calibration REST API that stores historical and online cases in SQLite, processes calibration jobs, and serves best-match calibration records;
- a Blazor web app, backed by reusable web pages, for importing historical cases and inspecting cases, processing state, and calibration results.
All internal engineering values are represented in SI units. Imported spatial/contextual data is expected to be normalized to WGS84 at the import boundary.
| Project | Role |
|---|---|
DWIS.Service.ActiveVolume.Model |
Shared domain model, DTOs, calibration records, import definitions, online fusion engine, and geometry calculators. |
DWIS.Service.ActiveVolume.Server |
Realtime online worker connected to the DWIS blackboard and the CalibrationService. |
DWIS.Service.ActiveVolume.CalibrationService |
ASP.NET Core REST API backed by SQLite for cases, chunks, batch imports, jobs, and calibration records. |
DWIS.Service.ActiveVolume.CalibrationWebPages |
Reusable Razor class library with ActiveVolume pages and generated ModelSharedOut API client wrapper; packaged as a NuGet. |
DWIS.Service.ActiveVolume.CalibrationWebApp |
Thin Blazor Server host for the reusable CalibrationWebPages library. |
DWIS.Service.ActiveVolume.ModelSharedIn |
Generated merged OpenAPI client/DTO project for upstream context services used by the online server. |
DWIS.Service.ActiveVolume.ModelSharedOut |
Generated merged OpenAPI client/DTO project for client applications; includes CalibrationService and context-service schemas. |
DWIS.Service.ActiveVolume.DataSource |
Development worker that publishes synthetic ActiveVolume inputs to the blackboard. |
DWIS.Service.ActiveVolume.DataSink |
Development worker that reads and logs fused ActiveVolume outputs from the blackboard. |
DataSource -> Blackboard -> Server -> Blackboard outputs
\-> local online spool -> CalibrationService -> SQLite
^
|
CalibrationWebApp/WebPages
The online server owns one active online case. It persists realtime samples to an append-only local spool before uploading chunks to the CalibrationService, which minimizes data loss across process restarts.
Realtime inputs include:
- active pit volume;
- inlet flow;
- flow-paddle return indication and/or Coriolis return-flow measurement;
- cuttings recovery rate;
- bit or bottom-of-string depth;
- bottom-hole depth;
- optional return mud density and standpipe pressure;
- context IDs for field, cluster, well, wellbore, wellbore architecture, and drill-string.
Historical cases use chunked time-series storage so large imported datasets can be uploaded, stored, and processed incrementally. Each case carries context IDs so calibrations can later be matched against comparable field, well, wellbore architecture, and drill-string conditions.
dotnet build DWIS.Service.ActiveVolume.slnThe CalibrationService Debug build exports its Swagger contract to DWIS.Service.ActiveVolume.ModelSharedOut/json-schemas/ActiveVolumeCalibrationFullName.json. After CalibrationService API changes, regenerate the client model with:
dotnet run --project DWIS.Service.ActiveVolume.ModelSharedOut/DWIS.Service.ActiveVolume.ModelSharedOut.csprojStart the Calibration REST API:
dotnet run --project DWIS.Service.ActiveVolume.CalibrationService/DWIS.Service.ActiveVolume.CalibrationService.csprojStart the WebApp:
dotnet run --project DWIS.Service.ActiveVolume.CalibrationWebApp/DWIS.Service.ActiveVolume.CalibrationWebApp.csprojStart the Blackboard development services in separate terminals:
dotnet run --project DWIS.Service.ActiveVolume.DataSource/DWIS.Service.ActiveVolume.DataSource.csproj
dotnet run --project DWIS.Service.ActiveVolume.Server/DWIS.Service.ActiveVolume.Server.csproj
dotnet run --project DWIS.Service.ActiveVolume.DataSink/DWIS.Service.ActiveVolume.DataSink.csprojDockerfiles are provided for:
DWIS.Service.ActiveVolume.ServerDWIS.Service.ActiveVolume.CalibrationServiceDWIS.Service.ActiveVolume.CalibrationWebAppDWIS.Service.ActiveVolume.DataSourceDWIS.Service.ActiveVolume.DataSink
Use mounted volumes for /home so the online spool and SQLite calibration database persist across restarts.
The GitHub Actions Docker workflow publishes:
digiwells/dwisserviceactivevolumeserver:stabledigiwells/norcedrillingactivevolumecalibrationservice:stabledigiwells/norcedrillingactivevolumecalibrationwebappclient:stable
Helm charts are provided for the deployable REST API and WebApp:
DWIS.Service.ActiveVolume.CalibrationService/charts/norcedrillingactivevolumecalibrationserviceDWIS.Service.ActiveVolume.CalibrationWebApp/charts/norcedrillingactivevolumecalibrationwebappclient
Render them with:
helm template activevolume-calibration DWIS.Service.ActiveVolume.CalibrationService/charts/norcedrillingactivevolumecalibrationservice
helm template activevolume-webapp DWIS.Service.ActiveVolume.CalibrationWebApp/charts/norcedrillingactivevolumecalibrationwebappclientThe CalibrationService chart includes a persistent volume claim mounted at /home for SQLite storage. The CalibrationWebApp chart exposes endpoint URLs through chart values under env.
GitHub Actions workflows are available for release artifacts:
.github/workflows/docker-build-push.yml- Builds and pushes the Server, CalibrationService, and CalibrationWebApp Docker images to DockerHub.
- Requires repository secrets
DOCKERHUB_USERNAMEandDOCKERHUB_PASSWORD.
.github/workflows/publish-webpages-nuget.yml- Packs
DWIS.Service.ActiveVolume.CalibrationWebPagesand publishes it to NuGet.org. - Requires repository secret
NUGET_API_KEY. - Can be run manually with a version input or by pushing a tag like
webpages-v1.0.0.
- Packs
Each project folder contains a project-specific README with runtime, configuration, and build details.