[SCAL] - Additional Capillary Pressure Content Schema Changes
Do NOT move this into development until both @michael_jones_epam and @rgadrbou have signed off on schema changes.
Identified changes/review needed
changes
- Sample metadata needs
- Wettability State - different from the wettability phase type
- As-Received
- Blank
- Contaminated
- Extracted
- NotSpecified
- Other
- Preserved
- Restored
-
Drying MethodCovered by SamplePreparation object within Sample master-data -
Cleaning MethodCovered by SamplePreparation object within Sample master-data
- Wettability State - different from the wettability phase type
- Cap Pressure changes
- *Pressure Array added at root level
- Supporting reference value additions (PressureMeasurementType)
- Pore Pressure
-
Net Confining Stress needs to be added as a basic pressure typeNetConfiningStress is a standalone measurement
- *Pressure Array added at root level
- *Add the following attributes:
- Brine Salinity
- Lab Test IFT (Interfacial Tension)
- Lab Oil Viscosity
- Lab Water Viscosity
- Lab Gas Viscosity
- Lab oil density
- Lab water density
- Lab gas density
- *Add Initial Oil Saturation object
- *Remove CapillaryPressureMethod
- *Add SaturationProcessMethod
- *Modify FluidSystemType reference value list
- Remove
- OilWater
- WaterGas
- OilGas
- OilWaterAfterWaterOil
- GasOilAfterOilGas
- GasBrineAfterWaterGas
- Add AirMercury
- Remove
- Add CapillaryPressureCurveEstimationMethod ref list (supports Centrifuge) - attribute added, list still needs to be created
- HasslerBrunner
- Forbes
- Ensure support for Centrifuge Experiment - validate that the following can be stored in existing attributes or add as needed
- Steps
- *RPM
- *Capillary Pressure (psi)
- *Sample Water Out (cc)
- *Avg Water Saturation (fraction)
- Calculated
- *CurveEstimationMethod: ref list: CapillaryPressureCurveEstimationMethod
- *Capillary Pressure
- *EndFaceWaterSaturation
- Steps
- Ensure the following are captured in content schema for Centrifuge, or can be calculated from content schema data
- Lowest liquid saturation achieved in drainage or imbibition test - Can be determined from phase saturations
- Lowest water saturation achieved in drainage test - can be determined from phase saturations
- Ensure support for MICP content
- Swanson Permeability - needs to be added as a value in Permeability Measurement Type
- *Air Permeability @ NCS - covered by permeability array object and pressure object
- *Klilnkenberg Permeability - covered by Permeability array object
- *Porosity- covered by schema
- Maximum Sb/Pc - can likely be determined from test values
- *Pore Throat radius - covered by schema
- *Entry Pressure (All three can be present in one record), uses FluidSystemType ref list - these have been added
- AirMercury
- GasWater
- OiWater
Revised Schema below (includes noted changes above)
Revised Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"SamplesAnalysisID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:work-product-component\\-\\-SamplesAnalysis:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"SampleID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:master-data\\-\\-Sample:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"TestData": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Permeability": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-PermeabilityMeasurementType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"Porosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-PorosityMeasurementType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"SaturationProcessMethod": {
"type": "object",
"properties": {
"Value": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-SaturationProcessMethod:[\\w\\-\\.\\:\\%]+:[0-9]*$",
"description": "SaturationProcessMethod, intended to be paired with SampleAnalysisType for Capillary Pressure Subfamilies. e.g. PrimaryDrainage, PrimaryImbibition, SecondaryDrainage, SecondaryImbibition, TertiaryDrainage."
}
}
},
"InitialWaterSaturation": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"InitialOilSaturation": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"InitialGasSaturation": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"Pressure": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-PressureMeasurementType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"EntryPressure": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-FluidSystemType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"NetConfiningStress": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"Temperature": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"WaterViscosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"WaterDensity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"OilViscosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"OilDensity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"GasViscosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"GasDensity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"InterfacialTension": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"BrineSalinity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"Endpoints": {
"CapillaryPressureMax": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"WettingPhaseSaturationAtCapillaryPressureMax": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"WettingPhaseSaturationAtCapillaryPressureMax": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"NonwettingPhaseSaturationAtCapillaryPressureMax": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"LowestWettingPhaseSaturationAVG": {
"type": "object",
"description": "Lowest wetting phase saturation achieved averaged over entire core plug or composite, only applicable for centrifuge & coreflood",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"LowestNonwettingPhaseSaturationAVG": {
"type": "object",
"description": "Lowest Non-wetting phase saturation achieved averaged over entire core plug or composite, only applicable for centrifuge & coreflood",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"CapillaryPressureSteps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"StepNumber": {
"type": "string"
},
"CapillaryPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"PhaseSaturation": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacingFluid": {
"type": "string",
"description": "Fluid introduced to a sample during capillary pressure testing, e.g. Mercury",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacingFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacedFluid": {
"type": "string",
"description": "Fluid produced or displaced from a sample during capillary pressure testing, e.g. Brine, Hexane, or LiveCrudeOil",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacedFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"WettabilityPhaseType": {
"type": "string",
"description": "Phase transition type for this capillary pressure test, e.g. Wetting or Nonwetting",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-WettabilityPhaseType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"PhaseInjectedVolume": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacingFluid": {
"type": "string",
"description": "Fluid introduced to a sample during capillary pressure testing, e.g. Mercury",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacingFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacedFluid": {
"type": "string",
"description": "Fluid produced or displaced from a sample during capillary pressure testing, e.g. Brine, Hexane, or LiveCrudeOil",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacedFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"CapillaryPressurePhaseType": {
"type": "string",
"description": "Phase transition type for this capillary pressure test, e.g. Wetting or Nonwetting",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-CapillaryPressurePhaseType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"Remark": {
"type": "string"
},
"CalculatedProperties": {
"type": "object",
"properties": {
"PoreThroatRadius": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"PoreThroatMedianRadius": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"EndFaceEstimationMethod": {
"type": "string",
"description": "Method of estimating capillary pressure in a centrifuge experiment, e.g. HasslerBrunner or Forbes",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-EndFaceEstimationMethod:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"EndFacePhaseSaturation": {
"type": "object",
"description": "Calculated saturation of the end face of the sample in a centrifuge experiment.",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"JFunction": {
"type": "object",
"properties": {
"Value": {
"type": "number"
}
}
},
"GasWaterCapillaryPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"GasOilCapillaryPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"OilWaterCapillaryPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"AirMercuryCapillaryPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"GasWaterAboveFWL": {
"type": "object",
"description": "estimated height above free water level for gas",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"OilWaterAboveFWL": {
"type": "object",
"description": "estimated height above free water level for oil",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
}
},
"PoreThroatSizeDistribution": {
"type": "array",
"items": {
"type": "object",
"properties": {
"PoreThroatSize": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"CumulativePhaseSaturation": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacingFluid": {
"type": "string",
"description": "Fluid introduced to a sample during capillary pressure testing, e.g. Mercury",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacingFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacedFluid": {
"type": "string",
"description": "Fluid produced or displaced from a sample during capillary pressure testing, e.g. Brine, Hexane, or LiveCrudeOil",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacedFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"CapillaryPressurePhaseType": {
"type": "string",
"description": "Phase transition type for this capillary pressure test, e.g. Wetting or Nonwetting",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-CapillaryPressurePhaseType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"PhaseSaturationFrequency": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"DisplacingFluid": {
"type": "string",
"description": "Fluid introduced to a sample during capillary pressure testing, e.g. Mercury",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacingFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacedFluid": {
"type": "string",
"description": "Fluid produced or displaced from a sample during capillary pressure testing, e.g. Brine, Hexane, or LiveCrudeOil",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacedFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"CapillaryPressurePhaseType": {
"type": "string",
"description": "Phase transition type for this capillary pressure test, e.g. Wetting or Nonwetting",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-CapillaryPressurePhaseType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
}
}
}
}
}
}
}
}
}
},
"required": [
"SampleID",
"SamplesAnalysisID"
]
}
Edited by Mykhailo Buriak