Optimize Oil & Gas Production Assets with Simscape
Design a digital twin for oil & gas production systems in Simscape and assemble physics-driven models for equipment components from prebuilt libraries to simulate and optimize production asset performance.
Highlights:
- Modeling a gas dehydration plant with process fluids (natural gas)
- Connecting Simulink and MATLAB with REFPROP for working with thermophysical properties of chemical components
- Calibrating the model to plant data to create digital twins for adsorption and absorption processes
- Modeling physics-driven systems
Published: 21 Mar 2022
OK, yep, welcome everyone to the session on the digital twins for oil and gas production systems. Yeah, so this is the brief agenda for today. We'll be touching upon a few challenges with production plants and process plants in the oil and gas industry, and how digital twins solve them. Then we'll be briefly touching on a few success stories with digital twins in the oil and gas industry. And then Eva will talk about Simscape, and we'll walk you through a demo of this process, and we'll show you how you can get started creating your own digital Twin.
So a brief bit of introduction, sort of, to MathWorks before that, and what customers do with our software. So customers in many industries innovate with MathWorks software, in aerospace and defense, for instance, and automotive companies, complex multi-domain systems are very increasingly software defined and autonomous nowadays. In transportation, energy, and industrial companies, new functions are being added to legacy systems that are increasingly data centric for operations and maintenance.
In software, internet, and financial services companies, big data, and agile development, and integration with IT systems are driving innovation. For medical and health companies, collaboration between science and engineering, along with informatics are making a huge difference. And in electronics and semiconductor companies, a wide range of processors are enabling hardware and software interaction.
And finally, in communications industry, the disruptors like 5G are paving the way for innovations across various industries. And MathWorks, we have a lot of experience helping customers derive business value from innovations in engineering and science. And this experience allows us to share insights, best practices, and trends with our customers across many industries.
For example, reducing carbon emissions is driving innovation in various industries. And it's a key focus of the energy industries as well. So companies are challenged to conform to regulatory and competitive pressures, while achieving both topline and bottomline growth. And it's a challenge that the oil and gas industry recognizes as well.
So that's a high level challenge. But what about the challenges at an operational level or at a plant level, or at an engineering level? And here are some common challenges that you may have faced, or you're involved in solving. And although you might be monitoring the operation, that doesn't mean it's the same as figuring out how to optimize the operation.
And it may be easy to add sensors across the plant, but it's not easily associated to process KPIs, such as say quality or yield. And sometimes, samples being tested in a lab in parallel to process on the way. It adds a lag to understanding the impact before the overall process. And in initial, there's complicated physical behaviors, and first principles models, which help-- which are used to understand the process. But these are sometimes too complicated to understand the overall system dependencies and nonlinearities.
And that's where digital twins come in. With digital twins, the promise is you can make your operational system smart and connected. And with operational data, you can inform the operations to do things better. And these are all possible and things that are being done today. And the applications, some of the applications and benefits that you hear of digital twins are things like these.
It grants you visibility into operations, allows you to perform things like predictive maintenance and simulate various scenarios, do what if studies, and obviously optimize your operations. And here is an example of one such production process or a planned process.
So it's common to have traces of plant output layer sensors, and actually have traces at sensor locations throughout the plant. But the leveraging that information to understand the overall process can be a bit challenging. And so this is where statistical approaches like principal component analysis, or more recent, AI-based techniques have come in. And they allow you to better understand the plant better, understand the concept, and the context, and analyze system level KPIs.
And these processes, these approaches, are well-suited to address things like drift in the process and identify, say, good batches versus bad batches. And at the same time, you also have unit level operations that can be modeled with first principles and the laws of physics. So these can be modeled with concepts like energy or mass balance, and often our modeled with process simulators for many cases. And I know this can begin to be combined to model, the overall system process.
And the more powerful is being able to combine both these techniques to get virtual representations of the complete process and how it impacts the KPAs. So let's talk about how these models can be used for the overall benefit. And that will come in the later part of the presentation.
But how do you go about building these digital twins? For instance, for system operators, they have control on how the system resources are used. And they're able to see operational data coming off of the system. And this data is the first thing that can be used to model what is deemed useful. If appropriate, then physical domains and conservation laws can be applied. And this can be augmented to create other digital Twin models.
And in general, these can be combined to create hybrid digital twins of the process. And how a system is a mixture of components, that's how models are also created, a mixture of physics-based techniques and data-driven techniques. And overall, domain knowledge is useful to make sure that the right models are created and brought together.
And then once it is modeled, it needs to be eventually deployed or acted upon. And the ultimate goal is things like operations optimization, or predictive maintenance, and fault detection and diagnostics. And MathWorks has existing customers and lots of customers that have used these digital twins, and these span multiple applications, multiple industries.
And effectively, there are various ways to get models in different levels of the system hierarchy. So the way it is done is most of these companies build their internal staff skills and knowledge in working through the possibilities of exploiting smart and connected systems. And the topologies in play can span edge detection, and cloud compute, to as simple as web deployment or use by operators.
And with that, let's get into the case study for today. Today's demo is actually inspired by one of our customers, RAG Austria is a European gas storage operator. They spoke at the MATLAB Energy Conference last year about their project to build a digital Twin of their adsorption dehydration units in Simscape.
If you know absorbers, then you know they're somewhat-- they have somewhat tricky control logic and supervisory control logic. Obviously, we're able to simulate in StateFlow. They compared this with plant data and optimized the plant accordingly. And that's how they created the digital Twin. They saw that solvers in Simscape we're able to handle big changes in input parameters during the simulation.
Then once their digital Twin was created, it was used for simulations and studying the impact of various scenarios, like some of the ones that you see here. And ultimately, the reason why they went with Simscape for this was the reason they outlined here. Effectively being able to build custom unit operations, libraries, and solvers, and various optimization capabilities. With that, I'll transfer it over to Eva, who will take a deep dive into what Simscape is, and how you can use it to create digital twins of your process. And we'll walk you through the demo itself.
What Samvith introduced was sort of the case study we did, which is also what the RAG project was based on. We initially did sort of a proof of concept to them. And some of the work will be presented here. It's not specific to the customer, but sort of a more general proof of concept, how we proved how we can implement absorption equations, combine it with our Simscape libraries to build a digital Twin of this application. But this could apply to similar applications as well.
Yeah, as Samvith already introduced, this was done using existing Simscape libraries plus some customized components and customized libraries for the absorption process. So in the next 20 to 30 minutes or so, I'd like to give an overview of what we did and how this can be achieved using Simscape and some additional tools.
So first of all, how Simscape overall can be used to create multi-domain digital twins and multi-domain models, how modeling plant and controller or plant and schedule logic, in this case, in one single environment enables things like system level optimization, how you can calibrate models using measurement data, for example, doing parameter estimation study.
And that it integrates well with MATLAB and Simulink, for example, for getting data into the model for post-processing via MATLAB and Simulink, for example, for control design tasks. So the demonstration for today is this model. It has sort of a similar look, as you just saw in the screenshots with Samvith. But again, this is sort of a proof of concept how this can be done. So this model's, and I'm actually going to switch to MATLAB for that, so you can have a first look at the model.
So here, you can see the same model. And with the MATLAB, I already ran the model just before this meeting. It takes two minutes or so to run. The cycle I ran through is something like a couple of days, which again, takes about two or three minutes to run. So I already ran it.
And what we can see here in the results plot is the loading of the silica bits in the adsorption column for different elements. Different elements here refer to different elements in the column. So underneath the hood, and we'll look into that later, underneath the hood here, this is discretized along the column length or height. So this is discretized into 10 different elements. So we can see the spatial distribution as well as the time distribution.
So when we read here from element 1 to 10, so the first line on top, we can maybe zoom in here a little bit, tool. So if we zoom in here, we could see from element 1 to element 10, so from, in this case, it reads in the model from top to bottom. And zoom out again, so we can see the whole view. And what we also see is that it cycles through different processes. So here, I'm drawing from different reservoirs.
So in the beginning, I'm trying to dehydrate the wet gas coming in. And once the silica beads are saturated, I'm switching to a regenerating mode using hot gas to regenerate the absorption column. So it can be prepared for the dehydration process again.
And this has been done. So the sort of color, the lilac elements here, refer to a specific Simscape domain I'm using here. So I'm working in the moist air domain. And if I take a first look underneath the hood here, so if I look at the absorber column, I can already see I can provide some absorber parameters. Some discretization, right now, I'm using 10 elements, initial condition, temperature, and specific humidity as an initial condition. And from there, it starts to go through the process.
And underneath the hood here, again, more detail later, we'll see this has been divided up into, in this case, 10 different elements along the length of the absorber, which perform the simulation or the air inside those. We can find the mathematical models for the absorption process.
But before I get back into detail here, I'm switching back to the presentation for a couple of minutes. So I already mentioned it, this has been done using Simscape. Simscape itself, for those of you who are not familiar with it, is a 1D physical modeling tool that is based on Simulink. And by based, I mean, you work within the Simulink environment, and have additional libraries, and technology, like solver technology, for example, for physical modeling. And it consists out of a sort of foundation library, which is what we used here, the foundation library plus custom components.
And there are optional add-on components used, for example, for electrical modeling, but also fluids modeling. And Simscape itself, if I go through a couple of slides right here, provides a sort of modeling style or modeling language that allows for our causal modeling. So what you will see here, you can see these couple of components right here.
You have blocks that represent physical components. They are not input/output based, as Simulink components would be. So you don't directly implement sort of the equations describing system, use components that ship with Simscape that can be parameterized. And this will be important later on, because we used it for modeling the absorption process, we can create custom components via Simscape language that allows me to create new components within the Simscape framework.
And this also will be another thing that will be important to us, we can import different kinds of models depending on what domain you are in. So it could be if you do multibody modeling and plotting CAD data, which will be more important for us using databases like REFPROP to import fluid property data.
In terms of simulation, I mentioned it builds on top of Simulink. But underneath the hood, the components, we'll see more once I get back to the demonstration, the components itself have equations already implemented. Plus every domain has-- once I set up a physical network, there are network equations that are being constructed in the background. So I don't have to take care of that. I have to take care of the components, how they're connected, and their parameterization.
So sort of behind the scenes, once I hit Run, one what happens is type of symbolic and equation reduction. So there will be some retained variables that the solver technology, which is kind of an add-on solver to the Simulink solver, will solve. And there are settings on top, advanced settings on top of that depending if you're using a fixed step or variable step solver that you can take specific for Simscape.
And analysis tools, for those of you who use MATLAB and Simulink, some of them might already be familiar to you. There are some specific tools, like the one we see right here, which is multibody animation. If you do multibody modeling, there are specific Simscape logging possibilities or additional Simscape logging options we can take. And yeah, some specific tools, but you can always use MATLAB and Simulink capabilities that are also already there, or also available, especially for post-processing or pre-processing.
And in terms of deployment, again, there are some similarities to what you might be familiar with if you're a Simscape user. So we do support C code generation for Simscape networks or Simscape components, meaning this becomes specifically important for hardware in the loop simulation. So if you want to test your-- don't have the actual physical prototype, because it's not there yet, it might be too expensive to test it, or too dangerous to test it, you can deploy your system or your physical network on a real-time hardware, and perform a hardware in the loop simulation. This is one of the applications where C code generation from Simscape might come in handy.
And to finish this up, there are sharing capabilities. Different kinds of levels of sharing are possible. So what you can do is something that's available in Simulink as well. You can create your own custom libraries, putting UIs on top of it. So you can, for example, pick up a physical network like the one we see right here.
Pick it up into your own little component, and put this into your own little library to make it available to other users at your company or your department. And this typically exposes just parameters you might want users to change without really changing the structure of the component of the model. And if you want to go one step further, you can use like model protection to give pass-- pass along a protected model to avoid others making changes, or being able to look underneath the component if you want to protect your IP, for example.
And finally, there's a so-called sharing mode, meaning if you use Simscape add-ons, like Simscape fluids or Simscape electrical, you should be able to share the models with other Simscape users, even if they don't have access to Simscape fluids. So meaning you might have one developer who creates a sort of advanced Simscape model using their own libraries. And others might be only model users who might integrate them for simulation purposes, change a couple of parameters. As long as they don't change anything structurally about the model, they can use it.
OK, and to wrap this part up, the Simscape platform itself, it has a foundation library. I'll get back to the demonstration in the minute. So there's a variety of domains in there. You can see them on the right hand side here, like electrical, moist air, thermal domain. The capability of creating your custom blocks, and on top of that, we have add-on libraries, which typically extend the library by dozens of components, which are typically also sort of more advanced or more complex component. But they support the entire workflow we've just seen as well.
So going back to our example, we started creating this model maybe around two years ago. And the question was can we model fix that absorption using the existing Simscape libraries. And so what we want to look at is dynamic fixed-bed absorption. So we have a gas, a wet gas, continuously passing through columns that are packed with an absorbent, so silica gel or zeolites, which should dry the-- or dehydrate the wet gas. So ideally, at the end of it, we have dry gas coming out of it.
And to enhance this, what typically will happen at some point, the absorbent will saturate, meaning the absorption columns will switch into a regenerating or heating mode to wash out the solids and make them available for dehydration again. So we have something that we just saw in the example, something that can be continuously cycled through, commanded by some scheduling logic, for example, in StateFlow.
So that was the question at hand. And so what we had at hand was some existing libraries we could use, and some existing domains we can use. So if we think about what libraries are available that count for gas/fluid transport and heat transport. There are a couple of them available in the foundation library.
So this is sort of sorted from left to right from sort of simple to more complex, more complex typically meaning more effects are being considered. But also probably more equations will be created once I hit run. So the thermal domain is typically for-- doesn't consider gas and fluid transport, just typically, unless you customize it, a constant heat transfer coefficient.
And we have a hydraulic domain that adds thermal effects. We can model a gas domain, two-phase fluid, and for a couple of releases now, we've also had the moist air domain. And technically, there are always options to create customized domain, which is what we did in the end, or what the case study Samvith presented, which they actually did.
But for the present example, we are actually using foundation library-- foundation library capabilities. So what we considered using is-- or what the questions were, we need a domain that accounts for and non-isothermal gas flow that can track humidity and maybe optionally track another trace gas present in the natural gas we want to drive.
So what we used in this context was the moist air domain. The moist air domain comes with regular Simscape, with Simscape foundation library. It accounts for dry air. So it has up to three components, dry air, which is what we took as the natural gas component, water vapor, and an optional-- we didn't use it here, but an optional trace gas component as well.
And as you can see, it does come-- this is a screenshot of the library on the bottom right here-- it has a couple of shipping components in there. But it was already pretty clear we probably need to customize some of it to be able to model the absorption process. And in that specific domain, all gas species in the matrix are assumed to be sort of semi-perfect gas.
So going back to the model, and I'm actually switching back to a different version of the model, which is-- so this is the version that cycles through. So we have a StateFlow component here that cycles through the different modes. So drying, regenerating, cooling, stand by, and then drying again. So each column, so we are just using one column here, but this is going to be extended to be using more columns.
And in the-- if I go here, we have just to look at the just one drying process to be able to validate the data. And this is just using-- cycling through or just simulating drying process until the beads are saturated. And we have a mixture here. So if I go to my actual library, you can see so what I used here was Simscape, which is based on Simulink. You can see me using the Simulink environment here.
And we are using some default components. So for example, here, I have-- here, simulating or mimicking a pump, I have a mass flow rate source. This is drawing from a reservoir, this reservoir. So when I look at the Simscape component, how it's defined, this reservoir, I can define its current pressure, its current temperature, a specific humidity value. The humidity can be defined in different ways using mole fraction, relative humidity.
I'm using specific humidity here, so I can apply my parameters as I would with a Simulink block, same way I'm doing it with a Simscape block here. And I'm also using a properties block. So how-- which fluid properties are actually being carried through the system is defined by this block right here. So this makes all our properties available through the entire model. So I have parameterized it here.
My natural gas data, water vapor data, and trace gas, I have supplied values here. But I actually have set all the trace gases to be mole fraction of 0. So I don't really account for it right here. This data, we don't supply default data. But a question that customers, other customers often ask if you have some kind of support, or how to get my data from if they have existing database access.
If they have their own data already, it usually can be done via MATLAB, just loading it with the MATLAB, if you have it in the Excel file, for example, and make it available to Simulink and the Simscape model. So the way to do it is just to use that properties block I've just shown you to define the data. Provide, in our case, gas and water vapor data.
Or what we did here is import from REFPROP, so you have REFPROP available, meaning that we have wrappers in MATLAB that access some of them are-- can be provided us from us. Some of them are already in our tools to some degree. But we do have wrappers sort of for MATLAB. That means I can just source certain conditions, load my data, and it can be as simple as sort of just the line we see on the bottom here, meaning I'm calling the refpropm interface, or refprop MATLAB, I think, is the name of the function referring to.
And I can call a specific property at a pressure and temperature value, for example, for a given substance that is in the REFPROP database. And this can be done for scalar value, but also we need it here, temperature dependent. So I can define a temperature vector. And for this temperature vector, catch my data from REFPROP is what I used in my case.
So going back to my example, this is how you set up the environment. But the question is, how do I actually create an adoption model. Because this is, if you look in the library, it's obvious there's not a block in there that's called absorption column. So what we used is we did have some publicly available papers. And we did some research on what common absorption, mathematical absorption models are and decided to create our own components that accounts for the absorption process.
And for this purpose, there are certain ways we can set this up. But they all rely on some kind of custom component. So the idea was we have some-- just a screenshot of one of the papers I looked at. We have a mathematical model describing the absorption process. Here, we are specifically looking at a isothermal model, where the gas/solid equilibrium is described by the front iso term.
But this can be, the same approach, can be applied to several models. And we wanted to put this into a Simscape component. So the idea is we have Simscape language at our hands that is available, Simscape to create our own custom components in any domain that is available. So the idea was to put this into one file. And it can be as easy as just one file, depends a little bit how you structure it or set this up.
So what we did right here was actually translate this into a SSC file. So SSC refers to the Simscape language files. For the MATLAB users, for those of you are MATLAB users, you will see some similarities to MATLAB code. But there are some specifics for Simscape language in there as well. So just to do a quick browse through it the way we do it, you set up physical notes, you can set up inputs and outputs.
The parameters refer to the interface. So what parameters will the user provide for this model? We have some hidden parameters. And we have some internal variables. So in our case, one of the internal variables is the actual absorbant concentration in the solid phase. So kilogram-- water per kilogram silica, if you will, and some sort of intermediate calculations.
But the heart of the component, sort of what we see in the equation section, where the model we've just seen sort of on the screen, or we've seen in the paper, is translated into a Simscape language equivalent. So that was one part of it. The other side of it, if I go back to the slides for a minute, the other side of it is, once I have the Simscape component, how to set everything up.
So the Simscape language itself we are using is available as soon as you have Simscape. it's a MATLAB-based language, specifically for authoring Simscape components that underneath the hood will adhere to the same processes that the rest of the Simscape components do, meaning once I hit Run, a equation system it's automatically set up, reduced, and then iteratively calculated throughout the simulation.
It just is a way or mean of translating something we have in a mathematical model into a causal Simscape physical component. And there are a couple of things you can do to create nice looking interfaces and easy to read blocks. So every user will know what to do with it, and how to connect it, and ideally, how to parameterize it. And in the end, this could also be optionally added to your Simscape library browser if you wanted to.
So once we have that, we have a sort of basic absorption component available. And the idea is also how can I now put this into an absorption column model. So first of all, we wanted to combine it with existing moist air components in the library, and also be able to spatially democratize it as we saw in the plot earlier. So to be able to see how it changes along the absorber height.
So we used here, first of all, a combination. So first of all, what we did, and this is a schematic we're seeing on the top right here, we used a basic absorption component. So what you saw right now in the Simscape language code, and connected it in parallel to a pipe block. So we have a pipe block that accounts for the gas flow. This is connected to a moisture source, which can add or remove moisture from the volume in the pipe.
And this is triggered by the absorption model. So the adoption model we just saw, it declares and commands the actual mass flow. Plus minus just means adding or removing moisture from the actual pipe. So one pipe element is one slice out of the absorber column. And the thermal mass block that is connected accounts for the heat capacity of one element of the absorption column along its height.
So this is one single element. And we could now go ahead and manually copy and combine 5, or 10, or 30 of these elements. Or we can use automation. So the way we did it, we created a custom library element of that, where we have an interface that can say 5 elements, 10 elements, 15 elements, and depending on the element, automatically-- so we have MATLAB commands that can automatically build these models.
So if I go back to-- back to the basic model right here, so I can-- if I look underneath the hood right here, I'm seeing right now it's made out of, what is it? 10 elements. And if I change this, if I say I want to account, let me overwrite this 10, just say I want 5.
So what will happen? If I look underneath the hood here, this will be reduced to only contain five elements. So the value is the volume. And the length is divided differently. So each element will be longer. But the absorber parameters will be the same.
Let me switch it back and actually run it. So I've only shown you the results so far of previously run examples. But I will actually run this as well here. So you can get a feeling of how long it takes. So the simulation time itself is now, again, it's I think 50-- around 50,000, or 100,000 seconds I think. And what we will also see that compiling takes quite a bit of time.
So we can see now that it's still compiling. So later, I'll show you an example of how to do a parameter sweep, or an optimization. And for an optimization ideal, we don't want the model to keep on compiling if at all-- because it repeatedly needs to simulate the model. So what I used later was actually, you can see it grayed out here, there's a mode called Fast Restart mode. So once I put the model into Fast Restart mode, it will compile only once.
And as long as you don't make any structural changes to the model, meaning adding or removing blocks, connecting them differently, those will count as a structural change. But as long as you only make-- do with things like parameter changes, the model doesn't need to recompile. So the first one will take longer, because the compiling takes a bit of time. But after that, it will be quicker, because we can skip the compiling stage and move right on into simulation.
So this should be starting now. On the bottom, we can see the simulation progress. So you can see the compiling actually took longer than the actual simulation, meaning Fast Restart will potentially be a huge benefit if you do a lot of simulations. And you can-- I just plotted some initial results, just the specific humidity at top and bottom of the absorber.
But I have made, using MATLAB, some specific plots that give a little more insight. And so what we see right here is on the bottom, actually, not the time axis, but the absorber length. So again, reading it from top to bottom, I can see along this length, at different time steps, the specific humidity. So the top plot will be at 0. And then we can see it sort of slowly decreasing right here.
So we can still see the drying out process happening over time. So this-- you can read this from-- this is the initial step. And then it goes sort of from-- this is the initialization, so at t equals 0. And then you read it sort of from here to here, we can see how the outlet sort of becomes-- the gas at the outlet, the specific humidity increases because the beads become saturated.
And we can do a similar plot for the water friction in the absorber solid. So again, we see it along it's absorber length. And we can see the actual saturation of the beads. I have access to this data, because I included Simscape logging. So there's a feature that is turned on that is called Simscape logging that means all variables are being logged throughout the simulation.
So at the end of a simulation, I could call what is called the Simscape Explorer, where there are different ways of viewing this data. Pops up right here. So this represents again the structure of the physical model. And I can, for example, dig into the absorber, see that there actually up to 10 elements. And for each of the elements, I can actually look at how this actually has been set up, like trace different quantities, like the, again, the water fraction in the absorber, and how over time, it sort of slowly increases until the beads are saturated.
We've seen that, how we can create a single element and then actually discretize it to have the absorber column be made up out of up to-- yeah, it shows a number of elements. And an additional step could be if you have experimental data at hand and calibrate the model with it. That's a common question people have for doing physical modeling, independent of their industry applications.
There are certain-- either parameters are not available, there are no data sheets for a specific component, it's not very known or studied, maybe. Either way, there's an uncertainty to the parameters. So typically, the simulation does not match the real model behavior. So we've reproduced it here, looking at some measured data and how initial guess could look.
And you choose the parameters that are being-- that aren't certain. So you have some initial guess for the parameters. And the idea is we have an interface for it called Simulink Design Optimization, which has a parameter estimation tool, which allows me to automatically tune parameters on the end. It ideally looks something like this.
We have a tuned response that fits the measured response well, or well enough for whatever we are doing. And so the idea is-- and this is where the mentioned fast restart comes in handy, because the idea is if you set up something like this, we have a-- no sorry, that's the wrong example.
We can set up an experiment. And we have, typically, in our case, we used an absorber as an example. We have uncertainties and parameters. I specifically chose the Freundlich coefficient and the mass transfer coefficients to have some uncertainty to it. And we can set up a sort of so-called experiment. I've already preloaded it in the parameter estimation tool.
So the way this works, you set up parameters to be tuned. So if I look at the interface, I can set parameters to be tuned, maybe with a minimum or maximum value, which makes some of them just make sense, like certain values cannot be 0 or negative, but also to give the-- depending on how much you know of the parameter, the optimization algorithm to make it a bit easier to narrow down the space, the optimization space.
You set up an experiment, setting up experiments, meaning I need to load external data into it, to which I want to compare a certain output signal. So I'm comparing the output humidity of the absorber to some given values. And once I hit, so I'm not going to do this now, because this will take a couple of minutes, but once I hit Estimate, this will start estimating the parameters.
I've made a sort of sped up video version of this. This walks through it in a bit quicker than it actually ran. It ran for about, I think, something between 5 or 10 minutes. But we can see, so in the background, the model is continuously being cycled through. And we can see how the simulated data tries to achieve match with the experimental data, and how the parameters are being tuned along the way.
OK, so this was the final demonstration specific to this application. Just as a sort of summary of it, we've looked into how Simscape can be used, in this case, to model a gas processing plants. And with a specific focus on how you can actually customize. So we have a shipping library, but there might be a need. In this case, there was a need to customize certain things and how it plays together with what we already ship with the product.
And for your reference, I've included a couple of additional resources. I think we will distribute the slides after this meeting as well. So under these tiles, you find a couple of additional links to some of the Simscape products, and also information for you.
We offer trainings in this area as well. So if you want to get started with some of our tools, modeling digital twins, we have different trainings available, either public trainings, they can be customized as well. We also, if you want just to have a quick look or a quick tutorial, we also have the so-called onramps. So for example, if you're new to Simscape and want to try it out, we have a basic so-called onramp that you can do free of charge.
Takes, I think, two or three hours to work through it, but gives you an additional idea of how-- an initial idea of how to use it. And this is what we did with RAG. We actually converted the proof of concept into a larger scale to model the plant realistically, to add, for example, more logic, more scalular logic, different absorption-- different absoprtion columns to it.
We actually carried it out through a consulting project. Consulting project can have different flavors, starting from an initial workshop or jumpstart training, to actually developing your process, your project, or doing something an actual workflow assessment from our side. And to wrap this part up, there are also some additional resources specific to oil and gas, chemicals industry, how MATLAB and Simulink can be used in that context for not only digital twins but other types.