 All right, let's start with lesson eight. So lesson eight is about 2D physical processes. So all the process we discussed in lesson six on like advection, dispersion, diffusion, all these are the same process itself are the same. But here in this section, or in this lesson, we're trying to introduce an additional layer of complexity. In 2D, one is we are adding another dimension. So we not just have one D case, we also have another dimension x, y. So there's a bit of adding a little bit of complexity in that sense. But also, we are introducing the heterogeneity concept. That is the heterogeneity, meaning the spatial distribution of the subsurface properties, or prosimidic properties, not even. Meaning somewhere you might have, for example, very high parasitic permeability, and somewhere else you have low parasitic permeability. Or somewhere you have clay lenses, which can absorb a lot of material. But then somewhere else you have more like sandstone, which is largely non-reactive. Or somewhere you might have carbon that can dissolve out relatively fast. So there are a lot of different type of heterogeneities. And here, since we are talking about physical processes, we are mostly relating everything to the differences in physical properties. So you probably, at this point, you have already reading through the online text about the concept of homogeneity and heterogeneity, and also the statistical measurements of heterogeneity, like mean, variance, correlation lens. So mean is actually defining the average permeability of a system. And the variance is a quantity that measures how big is the variation. If you have small variance, you mean, meaning you have a relatively small range surrounding the mean. If you have a larger one, meaning you have larger variance. And especially for permeability, for example, values of permeability usually vary by orders of magnitude in natural systems. So a lot of when we talk about permeability or connectivity, we're talking about the variance, the mean of log permeability, the variance of log permeability. And also, correlation lens, defining at what length scale. The different properties are related. So you can go back and think about these concepts and these are important concepts. We can have a whole lesson of geostatistics. Actually, it's offering this department. So what we talk about here is really just scratch the surface, give you some concept of that. And if you're interested, and if it's something that you are going to use a lot later on, you're encouraged to dig into the textbook details software to have more in-depth learning in terms of these geostatistic measures. So here, what I'm going to do today is really trying to look at example in lesson eight. Which is adopted from one of the papers my group published a couple of years back. So we have one of my graduate students. We set up these columns, a set of a suite of columns, having the same total mass or almost the same. We try to keep it as much as possible the same. So the total mass of two-minute wine is a magnetite, which is a reacting mineral. Another is quartz, which is considered as non-rective. It's still reactive, but it's irractive. It's dissolving so slowly it doesn't. At a time scale, we consider it doesn't really matter. So in that experiment, we had columns, which is 3D. But here, we'll kind of adopt it as a 2D examples. So you can still go back and look at that paper and details about converting between 2D and 3D. But to keep it simple here, we are really just looking at two columns, two extreme case, one is a mixed case, a uniform distribution, everything. The other is we call it one-zone case, have the magnetite in the middle, as you can see here in figure four, that everything is clustered in that magnetite zone. And we have measurement in terms of the physical-operative column. We know the volume fraction. We know mass. And then we measure what's coming out of these columns. So this will be, you can consider this lesson is like one step of the whole process. Later on, we will have another lesson focusing on the reaction, the distribution processes in these two columns. This session, we are only going to focus on the physical processes of these two columns. And I'm giving you this table, which are the physical property columns. You have a magnetized MG zone, quartz zone. You have this, like the just specificity, which is actually we obtained by reproducing tracer data, tracer test data. We have alpha L, alpha T. We have effective probability, average velocity. For the one-zone case, we also have the velocity of the magnetized zone and the velocity of the quartz zone. So this will be QTZ. OK, so let's go through. So you can read this text. And what I'm asking you to do is essentially, first of all, in order to set it up for both columns, for the mixed one, it's actually, if you set it at 1D, it should give you the same calculation. But we want to compare both in 2D. So we set up it actually in 2D. Now, so before you do any input, you will need, just like in the 1D situation, you will need to do some calculation in terms of the property of different zones. And in this case, because you have 2D, you have different zones, it actually ended up being a little bit more complicated calculation. So in question 1, 2, and 3, 4, they are mostly asking you to calculate for some of the key parameters, effective permitting. And so what is the permitting of the individual zones? The volume fraction of the zones in the two columns. And then you will also need to give you the pressure gradient for the column, resident time of the column, all that. And then at the end, so 1 to 4 is asking you to calculate all that. And then 5 and 6, before you set the concentration. And then 5 and 6 is setting the concentration calculation. And then look at the flow field. And then look at the concentration, the bromide breakthrough. Again, it's non-reactive processes. All right, so I'm assuming at the time you are listening to this video, you have already went through the online solution, 1 to 4. At least you have tried your first, by yourself first, and then do some calculation. And then you compared what you have with the solution to question 1 to 4. If not, I suggest you go back and look at it again. So just you have a bit of background. All right, so I'm going to focus on here, setting the two columns. One is a homogeneous column. The other is a one-zone column. So let's look at a mixed column first, which is a uniform column. And what I'm having here is again, OK, sorry about that. I'm going to open in a notepad. OK, so I'm giving you essentially a blank file except some of the runtime information is already there. Now what you have here is, forgive me, all these grid blocks. Now you have 2D. So again, just like we did in 1D, you need to tell the code, what is your domain? What is your system? So in the, I think, let me see, I didn't really tell you how many grid blocks I want you to set. Oh, OK, so OK, I did see that. 2D system has a size of 25 millimeter by 100 millimeter. OK, that's fine. But I think I didn't tell you the size, the resolution. OK, maybe I will put it here. So it's a little bit, sorry, I'm going to mess it up. But anyway, I need to clean this up, looks like. But here I'm going to add some just rounds of the simulation at the grid block resolution of 1 millimeter by 1 millimeter. So this essentially gives you the resolution. Now what you are going to do here is, I guess this is a question, this kind of mess up. But this is a question 5 and 6. You will be looking, you will be setting up as a system. So first thing you need to set up is your domain. We have 25 millimeter by 100 millimeter. So if it's a resolution of 1 millimeter by 1 millimeter, the number of grid blocks will be 25 in one direction, then 100 in the other direction. So the first thing you kind of need to tell the code, the system, is how many grid blocks you have. So for example, I will, again, put in the distance units. Let's do millimeter, because that's the resolution, millimeters. And then you would have x zones. You have 25, and then you have the y zone. So y zone is the longer one. You have 100 grid blocks, and you have one. So these are your system, 25 by 100. So the system know you have, this is your domain size. And since this y zone is in the long one, so it's in the flow direction. So keep in mind that's a flow direction. So your inlet would be in the y zone of 0, and then the outlet go cell would be in the y zone 101. So keep that in mind. So that's your domain. And then we kind of need to tell the system, what is your system and how is the property of your system. So let's first do porosity. In that column, if you look back into this, OK, so in the mix, so both of them have average porosity 0.44. So you will be putting in porosity. And maybe here we'll be, since it's a non-reactive one, let's do this time for fixed porosity, which is 0.44. It's a homogeneous case, so everywhere is the same. And so then we need to set up the flow. The flow is related to the gradient, pressure gradient, and then so we will need to do a few things just like what you did before for the 1D case, except now you are doing 2D. So again, we're putting time units. Let's say this is 4. And then you have distance units, which is meters. And then, again, we are going to specify the pressure gradient permeability values, so we are going to do calculate flow. We said that is true. I'll just give you enough space. And then you would have permeability x, which is 8.26e minus 13. This is what you have actually given to you if we go back and look. The effective permeability for mixing is 8.26 times 10 to the minus 13. And same for permeability y. And here you would, so the xy here is specifying the different direction, permeability in different directions. But I also want to set a no flow boundary at the direction that is in the direct parallel to the flow. So here I need to specify, for example, let me just put it there, these two lines are for the default permeability. But I also need to set the permeability for when we have the column. And we specify in the y direction. Actually, if you think about the x in the figure, in that figure 4, 5, we have the image of the two columns. x is what you have in the transverse flow. y is the direction that is perpendicular to the parallel to the flow, I'm sorry. So then in that case, you actually will need to specify all the xy, like the values to be. We want that the flow doesn't go out of the column. So you kind of need to have no flow boundary. Or you have zero permeability in the two grid blocks, in the two lines in the grid blocks. 1 to 1, which is x, and 1 to 100. That's specifying in the left-hand side of that line. So it's x is 1. And then your y will be from grid block 1 to 100. z is just one grid block, so z 1 to 1. And the same for the other side, which is 25 to 25. And then you have 1 to 100 again. And then that's essentially, let me just write it there. This is no flow boundary. In the direction perpendicular to the flow. So essentially, you're saying, OK, permeability is infinitely small, so you are not going to have flow flowing out in the x direction at the two boundaries. All right, so that's for the two boundary. And then we need to specify pressure for that. So if we inlet side to the outlet side. And we did, if you look at the solution to question 1 to 4, there's one question about what is the pressure? What should be the pressure gradient? Based on the permeability and the flow velocity, which is every flow velocity is 3.6 meter per day. What do you need? So that is specified. So you'll be putting pressure. Using the number calculated is 5,060. And that will be an outlet. So you have zone 1 to 25. That's actually, I'm sorry, that's inlet. So that's specifying the pressure in the go cell just before you have set exactly the first grid block. So it's 1 to 25, y is 0,0, and z is 1,1. And then we should fix that. And then the other end in outlet, you should have 0. And again, zone would be 1 to 25. But now you are doing 101 to 101, meaning it's in the go cell just outside of the last grid block. And this again, 1 to 1, and then fix. So that's for the flow grid block. That's keyword block. You are specifying essentially the units. And then you will say calculating flow. And you will give it permittive values. You specify here is no flow boundary in the direction at parallel to the flow. And then you have pressure gradient in the directions, that is, the inlet and outlet. So that should give you the flow velocity in 3.6 meter per day. All right, so that's the flow. And then transport. We need to specify the transport grid block. So for transport grid block, we talked about before what we need would be something like things related to diffusion, dispersion, these parameters. But again, let's start by doing the units again, time units. You would have seconds. And then distance units would be maybe we do centimeters this time. Because I believe in this dispersive value, it's given in centimeters. OK, so yeah, that's in centimeters. So you specify units. And then you will be specifying diffusion, fixed diffusion. And in the paper, we talk about using the fixed diffusion of 6.342 minus 6. So we are going to use the same centimeter square per second in the units for diffusion for all the different species. And actually here in trisetage, you only have one species. And then we are, again, going to do the cementation factor or cementation exponent. And we often specify that as 1.0. And then you need dispersive value. So for dispersivity, since here you have two dimensions, you actually would need two different dispersive values, alpha l and alpha t. So in the alpha l, you need to have l is in the direction that is parallel to the flow. And in the direction that is perpendicular to the flow, you have smaller values. Let's look it up here. So you have alpha l and alpha t. Alpha l is larger because it's in the direction parallel to the flow. This is in the direction transverse to the flow. OK, so in here, when in the example, our x is the direction that is perpendicular to the flow. So it should be 0.005. And in the direction that is parallel to the flow, it should be 0.05 in centimeter. All right, so that's the transport properties. Well, transport, we have discretization. Mino, we don't need to specify. We already specify velocity. We could just specify the amino, but as long as you specify the amino, you will need to have all the chemicals and species that go with it. So for this one, because everything in the homogeneous, we don't have to specify. As long as you specify porosity, and we are focusing on physical processes, so we don't really need to specify the individual minerals. Now, your promis species will be bromide, tracer. Second species, we don't have to specify. And now you will need to specify inlet condition. So your inlet condition would be what you are injecting. So again, let's specify units would be, we actually can use molar, I forgot in the previous lessons, which is the same as more per liter. If you can't do more dash L, but you if you write molar, then the code takes it. And then your temperature, again, let's assume it's 25. And then you would have the bromide concentration, which in the question is specify a tracer test of 1.21, 0E minus 4 molar. So that's the inlet condition. And if we don't specify, so in the inlet, we don't specify there's no solid phase. And supposedly, we don't need to specify. But then we also will need to specify initial conditions, which would be, again, let's use it to be consistent. We use units of molar, temperature, 25. As the initial income there is almost no bromide at all. So this will be your inlet and the initial. So these are your two conditions. We didn't really specify any solid phase, because this is a physical process. We don't need to consider the chemical components. But then we already specify the velocity value, which is 0.44. So the code would just assume the solid phase would be 1 minus velocity, which is 0.56. And then it would assume it's non-reactive. So it does have by default. So then here we can specify these inlet initial conditions, which is initial. And here you need to specify all the grid block, because all grid block has the same initial condition. So it's better from inlet. So inlet it will be specified in the boundary condition. You'd initialize this every way. So you relatively actually just have clean water. But you also need to specify, where is the boundary condition? Let's put all the together. The condition, let's put the initial and boundary condition to kind of group information. So boundary condition, now, because you have two dimensions, you actually would need two boundary conditions. So before, when we had 1D, we would use x begin, x end, y begin, y end. So here we would say x, which is inlet. And then you would have flux. And x end, you have initial. So everything is flux in the boundary condition we specify. And it really matters is a y, because x in the x direction is no flow boundary. So you don't have flow coming anyway. But you do need to specify both. So essentially, because the flow is in the y direction from y begin, which is in the inlet. And then y end is in the outlet. But we use flux, so it would be your special initial. And they're flowing out of the system. Now, so that's a boundary condition. Then we also need to specify, yeah, we do need to specify the output. To forget them, you need to decide how many time series you want in which grid block. And how frequently you want the spatial profile. How long you want summation to run. So this will be in the, this will specify how long you will run the summation essentially when we put in the spatial profiles. Spatial profile. Let's do, for example, maybe 0.2 days in total. And we sample a little bit more frequent earlier than later about that point. Because we calculate the present time is actually much smaller than that. Present time is probably, I believe, in the order of minutes or something. OK, so by specifying this, the code will be run until 0.2 days. We don't want it to run too long. Because now we have, instead of 100 grid blocks, we have 2,500 grid blocks. So if we specify too long, it might run for too long. And then let's look at how many grid blocks do we need. Time series. As if you want, for example, the middle of the column in the outlet, you can specify. So you have 25 grid blocks in the x direction. The middle one will be 13. So maybe we do break through curves, 13, that out. And then you will specify where it is you want to sample. So that's in x direction, 13, in y direction is at the end of the column, which 100, x, z direction. That's time series. And then you have time series. What do you want to put in the time series of the break through curve? That you need to specify, which is bromide. And also you can specify time series interval. How often do you want it to come out? And let's say you want it 4, you want it 10. Sometimes you want to adjust a little bit, just so you have enough resolution in time of time. Because the code actually calculate everything adoptively. So its time steps are not even. When things change fast, it takes very small time steps. When they reach a steady state, it takes big strides. So later on it couldn't be running really fast. But early on, the time step might be in the units of 10 to the minus, for example, 10 days or something like that. So it's very uneven. And sometimes you might need to run a couple of times if you find your resolution not high enough. But anyway, this is something you can track. OK, so let's track. Just track goes through everything to make sure there's no errors pumping out. And we filled all the grid blocks. We don't need second species. We don't need grasses. We have initial conditions specified. And that's the initial condition. It's the same name. We have inlet. We have undercondition. OK, so let's try to run it to see if it works. Mixed to d.in. OK, it looks like it runs. Was it running? Let's look at output file. Looks like it's finished too fast to me. Maximum time step distance. OK, looks like it didn't do the time stepping. Let's go back and see if there's potential. Something wrong with it. Let's see if there's any information here. So it reads in until pressure of this. So it looks like it reads until pressure. I don't think it's because of the empty line. But let me just fix it. OK, everything is undercondition. Condition inlet, condition outlet. Let me just make sure in the input file. Clean up seems a little bit. Time units, let's see. OK, everything looks good to me. Let's just try it again. Interesting. So it's example 8.1 mixed to d. So it looks like it stops somewhere in the middle without finish running. Cipatiation, ignition, boundary condition, successfully completed. Let me just check. Let's just check everything. Lesson 8, title, runtime. We are specifying. Let me make it database. And we do have the database. OK, yeah, we do have a database here. Output, days, spatial profile, time series, breakthrough.out, 1,301. And then your time series, print bromide, interval for transport, seconds, centimeters, fixed fusion, cementation, exponent, 1.0, dispersivity, positive, fixed, which is 0.44 discretization. Distance units, millimeters, x zone, 25, 1. If I search for x zone, just want to make sure. Everything I have is correct. So this is correct, y zone, 101. Number of cells, spacing, all right, flow, seconds, meters, Keke flow 2, 8.26, 8.26, default, Pumbetti x, just specifying the no flow boundaries in the two no flow boundaries. Pressure, maybe I need a pressure default just to, because this is, OK, let me just try this. Pressure is 0.1 default everywhere. It shouldn't really matter, because here we're specifying the boundaries. So it do need some values in the middle of, like, in other grid projects, initial value. I do think that's, let's try this. Let's try if that's a problem, not this one, sorry. Example 8.1, mixed 2D.in. OK, so again, it stopped here. Let me run the other one that is not blank that I actually did it before. That's the other one that is not blank one. And I deleted everything, and we just filled in here. So just to make sure, to make sure that one is running. OK, this one is running. So if we compare the two, we probably would tell the difference. OK, so this is running. For the homogeneous case, it's coming out. The first time, I'm curious what's the difference. Let me just open this one. It's essentially the same, except I call this essentially a different name. But that should not make a difference. Let's finish up now. It's almost done. Point one. So we have another point one to go. By any case, you see that. Then let me open both. Let's call this blank just to be different. OK, so I have these two side by side. This is blank. Lesson, more schemers for us. OK, I did a screen output. 110, one face, I shouldn't make a difference. Output days. I changed a little bit of parameter, but these shouldn't really matter. Begin. OK, so I changed boundary conditions. Inlet, flux, I don't think these make a difference. Transport, that's it. See that here? I missed the keyword zone. Let me just, so maybe the code doesn't recognize it. That's why press this one is done. OK, now I've fixed this problem. Let's just try it again. We think blank, example, 8 point mixed to deny it's running. OK, so that's a lesson. You are not supposed, OK, so the problem was when I specify that permeability is a no flow boundary. Every time when you specify the permitted values for different grid blocks, you should have a keyword zone before that. And then without that, the code couldn't recognize it. So the error message even just doesn't come up to tell you that. So we compared what we did was essentially, OK, when I compare this one with the ones that I did not delete everything and it was running, then I missed this. So hopefully, this mistake will help you remember it's very important to have the zone there. But in any case, you are done with a mixed case. And then what I'm trying to point you to is that, OK, for example, now we can already look at velocity. We can look at velocity, which should give you x, y, and x velocity as these are. So the main flow direction is y, right? So it really should be the flow direction. It should be flow is everywhere in y. It shouldn't be the main flow. But then these ones, x, you would have some small numbers randomly fluctuating. And that's fine. Don't panic when you see that. It should have, because the 2D should have x, y, both velocity and x, y. But the x velocity should cancel out, because we have no flow boundary. That's the velocity. And then you are supposed to, OK, the breakthrough 13.1 should be coming out. For the mixed column, it doesn't really matter. It should be in order that everything is even. So one grid block actually can represent all the different grid blocks in the outlet, because you have a homogeneous case. In the heterogeneous case, you actually would need to kind of flux-averaged breakthrough curve, which we will be talking a little bit later. Now, I'm going to stop here, because this video is already one hour, and I don't want it to be too long. So let me just close this one and pack everything up for this unit. And then I will do another short one for the one-zone case.