- About this repo
- Overview
- Program features
- Software solution layout
- Current status
- License
- Contributions
- Contact
- Go to WIKI for more!
This repository contains a program (microservice and webapp) used to calibrate flow curves against the Herschel-Bulkley model and correct Fann35 rheometer measurements for non-Newtonian effects.
The program:
-
allows to calibrate (e.g. adjust/fit) any flow curve (obtained from any type of rheometer) against the Herschel-Bulkley model either by setting rheometer measurements manually or by loading csv/xlsx files that contain flow curves.
-
accounts for recent advancements in rheology that have shown that calibration performed on flow curves that have been built under the Newtonian assumption leads to inaccurate results for a wide range of drilling fluids (mud, spacer, slurry).
-
based on the work of Skadsem and Saasen (2019), the program allows the user to generate corrected rheometer measurements that account for non-Newtonian effects in the estimation of the shear rate, under the Yield-Power-Law assumption.
-
similarly, based on Lac and Parry (2017), a complementary rheology-dependent correction for non-Newtonian effects associated with Fann35 geometry end-effects is performed. Corresponding correction functions derived by Lac and Parry apply to 3 standard Fann35 rheometer configurations (of type R1B1, R1B2 and R1B5). For other Fann35 configurations, a standard correction factor of 0.064 is applied to the shear stress measured.
-
The program is composed of:
-
a webapp that allows to handle rheometer measurements and launch computations in a user-friendly way. It is packaged as a docker container and deployed on a NORCE server at the following endpoints (3 different webpages):
-
a microservice that performs the core computations and can be queried by any 3rd party client (a web navigator or any other online application) through http-requests. It is packaged as a docker container and deployed on a NORCE server at the following endpoints:
-
Based on Swagger, API documentation of the microservice is accessible at the following url:
The program is packaged as a Visual Studio solution, developed in C# and based on the .NET Core 3.1 framework (compatible with Windows, Linux and MacOS).
Visual Studio has been used for the development but as any dotnet program, it is possible to build it:
- from the free version of Visual Studio, e.g. Community Edition (see here), with the advantage that the
.sln
file at the root of the current directory is directly readable by VS Community - from the command line (assuming dotnet is already installed, otherwise see here)
- from the light-weight generic Visual Studio Code (see here)
The solution is structure as follows:
YPLCalibrationFromRheometer/
│
├── Model/
│ └── data model and associated calculations
├── Service/
│ ├── microservice API
│ └── data persistence
├── WebApp.Client/
│ └── simple dotnet blazor-server-based webapp
├── RheometerCorrectionApp/
│ └── Windows form based app to check-for correction algorithms
├── Test
│ └── Functional test-suite of the microservice API
├── NUnit
│ └── Unit test-suite of the core algorithms of the microservice
├── ModelClientShared
│ └── POCO version of the data model
├── JsonSD
│ └── Automatically generates the json schema from the data model
└── JsonCL
└── Automatically generates a POCO version of the data model from its json schema
-
Model
- calibration of any flow curve against the Herschel-Bulkley model
- calibration methods available: Zamora/Kelessidis and Mullineux
- shear stress correction
- standard correction of Fann35 shear stress rheometer measurements for non-Newtonian end effects
- rheology dependent correction of Fann35 (R1B1, R1B2, R1B5 configurations) shear stress rheometer measurements for non-Newtonian end effects (after Lac and Parry, 2017)
- shear rate correction
- correction of Couette rheometer measurements for non-Newtonian effects (after Skadsem and Saasen, 2019)
-
Software
- microservice handling Rheogram's, YPLCorrection's, YPLCalibration's and Unit's through a CRUD API where data are exchanged as json strings (.NET Core 3.1)
- blazer-server webapp allowing to interact with the microservice (.NET 6.0)
- microservice and webapp packaged as docker containers and deployed on a publicly accessible NORCE server (see above)
- SQLite data storage capability embedded into the container itself
This research was funded by the Norwegian Research Council, Equinor and Sekal as part of the project "6n Degrees of Freedom Transient Torque & Drag. The code is a donation made by NORCE and is distributed under the MIT license.
Contributors of the current repository are:
- original contributor: Eric Cayeux (NORCE)
- shear rate YPL correction: Gilles Pelfrene (NORCE), Benoît Daireaux (NORCE)
- shear stress YPL correction: Gilles Pelfrene (NORCE)
Contributions are what make the drilling open source community grow are greatly appreciated. If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (git checkout -b feature/your-feature-name)
- Commit your Changes (git commit -m 'Add new fancy feature')
- Push to the Branch (git push origin feature/your-feature-name)
- Open a Pull Request
Eric Cayeux: [email protected]
Gilles Pelfrene: [email protected]
WIKI page includes: