Anda di halaman 1dari 8

Investigations into the aftershock distribution of the LAquila earthquake

modeling porous fluid flow and pore pressure changes


CHARLIE KENZIE
Department of Earth Sciences, University of Durham 2013
1. INTRODUCTION

1.1 Geological and tectonic background
The central Italian region of Abruzzi, and the
large town of LAquila, are located on the
Appenines thrust belt (Chiarabba et al 2009), a
tectonically active region, which runs in a NW
SE direction through central Italy (Butler et al
2004), (Fig.1). Progressive thinning of the
Apennines thrust belt is mainly accommodated
by the faults in the central regions of Abruzzi and
Umbria, with regular seismic events occurring
throughout the Northern Apennines. However,
seismic activity further south, in central Abruzzi,
has remained relatively low throughout the last
few decades (Bagh et al 2007).

On April 6
th
2009 an M
W
6.3 earthquake occurred
at a depth of 9km, its epicenter only a few km
away form LAquila (Atzori et al 2009), (Fig.1).
After the M
W
6.3 event, two additional
earthquakes, M
W
5.6 and M
W
5.4, occurred at the
edges of the main fault structure (Chiarabba et al
2009).

1.2 Fracture criterion
The Coulomb fracture criterion is given by the
equation

o
s
-
= c + o
n

where

o
s
-
is the magnitude of the critical shear
stress,

is the coefficient of internal friction, and

c is the geological constant cohesion, which
describes the resistance to shear fracture on a
plane across which the normal stress is zero
(Twiss & Moores 1992). Whenever the surface
planar stress components (

o
n
and

o
s
-
) satisfy
Equation (1) a shear fracture can develop along
that plane.

When pore fluids are present in a rock, the rock
behaves as though the confining pressure has
decreased by an amount equal to that of the pore
fluid pressure P
F
(Twiss & Moores 1992), and in
this case, the fraction criterion remains the same
apart from the normal stress

o
n
is replaced by
effective normal stress

Eo
n
, which yields the
equation

o
s
-
=c+ Eo
n
( )
=c+o
n
P
F
( )
where

Eo
n
= o
n
P
F
( )

The effect of adding pore fluids to a fracture
system causes the critical shear stress

o
s
-
to
decrease. This is geologically significant since
ABSTRACT
Explicit numerical integration is an effective way of modeling differential equations. We use a forward Euler time-stepping
method to model the 2 dimensional pressure diffusion through the crust after seismogenic faulting, a process in which a low-
permeability seal, overlying a sill-like water rich reservoir, is ruptured and causes the overpressured fluid below to propagate
upwards into the fault zone. Seismogenic events are hypothesized to be related to strong aftershocks following the LAquila
earthquake in central Italy. However, our model showed that a 20MPa pressure contour propagates through the surrounding
layers too slowly after initial faulting to explain the aftershock activity at LAquila. The model set up assumes certain geological
constraints, which make it difficult to determine the reliability of the model results and underlines the need for further model
testing and a greater emphasis on more informed geological constraints.
Fig.1 (a) Aftershock distribution of the LAquila earthquake
along the Campotosto fault plotted as distance from the main
shock. Starred symbols represent main aftershock events. (b)
Seismicity of the LAquila area. Focal mechanism from
CMT inversion for the three main events are shown, together
with aftershock distribution, the historical seismicity (red
circles) and the active faults (black lines).
(1)
(2)
there is a decrease in differential stress necessary
to cause failure and this allows fractures to occur
in places where the rock would otherwise be
stable.

1.3 Fluid reservoirs
As discussed above, a high fluid pore pressure
can cause fault zones to become unstable. Zones
of fluid overpressure are commonly associated
with seismogenic faulting (Sibson 1990), a
process in which a low-permeability seal,
overlying a sill-like water rich reservoir, is
ruptured and causes the overpressured fluid to
propagate upwards into the fault zone
(Gudmundson 1999). Conditions for the
formation of a sub horizontal high porosity layer
is that when the vertical stress is the minimum
compressive stress, a condition that is commonly
satisfied by areas of thrust faulting (Gudmundson
1999). If the fluid reservoir is then sealed off
from the surroundings, usually by a low
permeability layer, then its fluid pressure P
F
may
become greater than the lithostatic pressure above
it.

1.5 Seismogenic faulting at LAquila
If high fluid overpressure is present in rocks it is
possible for large magnitude earthquakes to be
released when failure of the rock occurs. It is
hypothesized that the LAquila earthquake
caused the seals of high porosity layers to fail,
allowing for seismogenic faulting great enough to
account for the large aftershocks that occrred
soon after the initial LAquila earthquake (Fig.1),
(Chiarabba et al 2009).

2. MATLAB MODEL

2.1 Setting up the model
To investigate the possible links of seismogenic
faulting with the LAquila aftershocks, we aim to
create a model that will compute the pressure
diffusion through the crust after faulting. We set
up a model that assumes two porous layers each 5
km thick with a uniform permeability
k
norm =
10
-15
m
2
. The layers are separated by a
400m thick seal with a much lower permeability
k
seal
=10
-18
m
2
. The top layer is assumed to have a
hydrostatic pore fluid pressure, and the bottom
layer has an overpressure of 200 MPa above that
of the hydrostatic pressure. To model the pressure
distribution caused by faulting, the MatLab code
is set up so that at time t = 0 the seal is ruptured
by a much higher permeability vertical fault k
fault
=

10
-12
m
2
, also about 400m thick. The fault is
modelled to run completley through both layers,
the geometry of the layers and the permeability
field is shown in Fig.2.
Fluid flow through the crust, and the diffusion of
pressure is taken from Darcys law, which is
given in 2 dimensions by
2 2
2 2
P P P
t x z
|
k
| | c c c
= +
|
c c c
\ .

where
1
|
k
|q
=
and P = hydrostatic pressure, = porosity,
= fluid compressibility and = fluid viscosty.
Darcys law can be modelled numerically by
using a forward Euler time-step. Discretization of
Darcys law yields

1 1
1 1
2 2
2
2
old old old
new old old old old
j j j
i i i i i
f f f
f f f f f
t x z
k
+
+
| | + | | +
= +
|
|
|
A A A
\ .
\ .

The time step formula was implmented into a
MatLab code, which can be seen in the appendix.
The benefits of applying this method, is that it is
capable of reaching high numerical accuracy
whilst being relatively easy to implement.

2.2 Discretization and time stepping
Since we are modelling layers in the order of
1000s of meters, the discretization steps dz and
dx were initially chosen as 100m, which allows
sensible precision without overloading
computation. Additonally, since time integration
methods are only conditionally stable, it is
important to choose a time step that is no larger
than the critical time step, otherwise the
numerical solution may become unstable (Askes
et al 2011). Therefore in this case we used a von
Neumann stability analysis to calculate the
stability criterion. From the discretized formula
of Darcys law, Equation 4, the error propogates
as
1 1
1 1
2 2
2
2
old old old
new old old old old
j j j
i i i i i
t x z
c c c
c c c c c
k
+
+
| | + | | +
= +
|
|
|
A A A
\ .
\ .
giving
Fig.2 Permeability field: fault shown in white, the seal
shown in black and the surrounding rock shown in grey.
(3)
(4)
(5)
1, , 1 , 1, , 1
(1 4 )
new old old old old old
ij i j i j i j i j i j
r r r r c c c c c c
+ +
= + + + +
where
2
t
r
x
kA
=
A

taking the worst case scenario, where errors
compile
, 1, 1, , 1 , 1
old old old old old
i j i j i j i j i j
c c c c c
+ +
= = = =
finally yields
( ) 1 8
new old
i i
r c c =
and
1 8 1 r < or
1
4
r <
This results in the stability criterion given by
2
4
crit
x
t
k
A
A =
where
k
k
||q
= and k is permeability
In the model we define k as the permeability of
the seal k
seal
as this is the most permeable layer
and will result in the critical time step being as
low as possible. Additionally we set the time
step as a fraction of the crtical one (appendix
code line 16). This stops the error from
increasing as computations in the model are
continued, in other words, it ensures a stable
system.

3. MODEL RESULTS
3.1 Running and testing the model
The completed model is displayed in Fig.3,
which shows the diffusion of pressure upwards
through the fault from the overpressured layer
into the upper layer. With the initial parameters
chosen as outlined above, the pressure diffusion
through the layers is confined to within the fault.
It is important to thouroughly quantitively test the
model so a benchmarking technique was carried
out to compare my model against two
independent codes. Exactly the same parameters
were chosen for both the models and run for the
same amount of time, and they can be compared
in Fig.4 below. The models show slight
differences in the widths of the fault, but
otherwise they agree on the rate at which pressure
is diffusing through the fault and that it is
confined to the fault. This is a good sign that our
model is numerically accurate.
3.2 Resolution tests
To investigate the accuracy and speed of the
model we first run a spatial resolution test by
changing the dz and dx parameters (Appendix
code lines 5 & 6). A significant increase in the
spatial resolution, dz and dx = 1000m, and causes
the model to become numerical unstable.
Additionally, the higher discretizaton steps only
cause the computation to slow by about 1 second,
showing that a lower resolution, such as 100m, is
suitable as it allows accurate computation without
forfeiting significant time for the model to run.

Increasing the timestep from a small fraction to a
large fraction of the stability criterion showed no
noticible effect on the model. Only time steps
over the critical value caused instability in the
model, and significant errors were only noticed at
values much greater than the critical value. As
expected, smaller time steps caused computations
to be carried out much slower. When the model
was run at a tenth of the stability criterion the
model took almost a minute to compute for
around 6000 seconds, where as the time step at a
value nine tenths of the critical time step,
computed for 12000 seconds in around 23
seconds. Since a higher value timestep does not
seem to inhibit the model performance, we
proceeded with a value of nine tenths of the
stability criterion (Apppendix line 16).
Fig.3 Diffusion of pressure from an overpressure layer after a
vertical fault ruptures an impermeable seal. Vertical distribution of
pressure shows that the pressure diffusion is confined to the fault.
Fig.4 Benchmarked models ran with exactly the same parameters
and ran for the same number of time steps. Similarity with my
model suggests that the model is numerically accurate. (J.Hooker
2013) and (E.Gregory 2013).
(6)
(7)
(8)
3.3 Vector field and 20MPa contour
To investigate the direction of pore fluid pressure
diffusion, a vector plot was added to the model
(Fig.5). The blue arrows show the velocity field of
the pore fluid, which is obtained from Darcys law
x
k dP
u
dx q
=
where k = peremeability, = fluid viscosity and
u
x
= the volumetric flow rate per unit area in the
x-direction.
The vector plot gives an idea of the direction that
the pore fluid pressure moves from the bottom
overpressured layer into the fault. The 20MPa
contour is plotted ontop of the vector field
(Fig.5). The model shows that the 20MPa contour
rises through the fault and the upper layer at a
velocity of approximately 0.05 ms
-1
, or 142
mhour
-1
. Additionally, the depth of the 20MPa
contour is also plotted against time in Fig.5c, and
shows that after 10 days (900,000 seconds) the
contour has migrated almost 4km from the centre
of the fault.

3.4 Changing the permeability of the layers
If we change the permeability of the seal so that it
is less than, or near to, the permeability of the
fault, pressure diffusion through the layers is no
longer confined to the fault and instead moves
through the seal and the fault. When the
permeabilities of the seal and the fault are made
equal (Fig.6b), pressure diffuses rapidly through
the seal, and travels more slowly through the
fault (Fig.6b). This is also shown by the 20MPa
contour, as it also moves more slowly through the
layers (Fig.6b). Additionally, when the
permeabilities are equal the 20MPa contour also
travels less distance away from the seal, and is
shown to become stable and level out after 6days
(Fig.6a).
4. DISCUSSION
4.1 Numerical accuracy
Numerical analysis discussed in section 3.2
shows that the chosen timestep is justifiable as it
allows for a stable system and relatively low
error. A spatial resolution of 100m allows the
model to run in relative stability, however, it still
shows some numerical error. This is shown in
Fig.7a, which plots the pressure as a function of
depth. The model is set up so the pressure
changes instantenously at a depth of 5000m,
however with a spatial resolution of 100m, the
model shows a slight pressure gradient when
changing from the top to the bottom layer.
Further numerical analysis revealed that
improving the spatial resolution computed an
instantaneous change in pressure between the
layers. However, it was found that a decrease in
the discretization steps resulted in the
permeability field shrinking by the same factor.
This highlights the need for the model to be set
up in such a way that the spatial resolution can be
altered without having a detrimental effect on the
model results and that, in this respect, more time
needs to be spent improving the model.

4.2 20MPa contour evidence for seismogenic
faulting at LAquila
Seismogenic faulting at LAquila is thought to be
triggered by pressure pulses, released from the
main shock, with amplitudes in the range of 10
20MPa (Miller et al 2004). The distribution of
aftershock events is displayed in Fig.1a. Since the
20MPa contour indicates the upper boundary of a
pulse that may cause seismogenic aftershocks, it
can be used to indicate in our model how far a
Fig.5(a) Pressure diffusion through the fault with the vector field shown as blue arrows, 20MPa contour highlighted in blue.
(b) Vector field of pore pressure through the fault, 20MPa contour shown as green line. (c) Depth of the 20MPa contour
through time with k
norm
= 10
-15
m
2
, k
seal
=10
-18
m
2
and k
fault
=10
-12
m
2
Contour migrates about 4km in 10 days (900,000 seconds).
Fig.6(a) 20 MPa contour plotted through time but this time the
permeability of the fault and the seal are equal. The contour
shows greater depths through time indicating that it is dissipating
at a slower rate. (b) Diffusion of pressure moves through the seal
as well as the fault when k
seal
= k
fault
=10
-12
m
2
.
(a)
(b)
(c)
(b) (a)
potential aftershock would be from the centre of
the fault.
When the 20MPa contour is plotted with the
initial parameters outlined in section 2.1 (Fig.5c),
the contour shows a similar curve geometry to
that of the seismic distribution shown in Fig.1a.
However, our model indicates that aftershocks
would occur much closer to the initial hypocentre
over a period of 10 days, with distances from the
centre of the fault only a fraction of that required
to fit with the aftershock data shown in Fig.1a.

Model analysis involving equating the
permeabilities of the fault and the seal show that
the 20 MPa contour indicates even smaller
distances to possible aftershocks (Fig.6a) with
these parameters. This indicates that the
permeability of the fault must be reduced in order
to increase the rate at which the 20MPa contour
migrates through the layers. Increasing the
permeability of the fault to 10
-11
m
2
computes a
20MPa contour as shown in Fig.7b.

An increased rate of pressure diffusion allows the
model to compute the 20Mpa contour to show an
offset of 4km after 1 day (85000 seconds), which
aggrees with aftershock data shown in Fig.1.
However, because at a lower permeability the
fluids can pass through the fault much easier, the
20MPa contour stabilises after just one day,
disagreeing with the seismic trend shown in
Fig.1a. Further model analysis revealed that even
after assigning the overpressure in the second
layer to 1000 MPa, and also plotting the 10 MPa
contour instead, the plot still did not agree with
the seismic data in Fig1a.
This indicates that our model is unsuccesful in
fully explaining the aftershocks observed at
LAquila. It may suggest that further parameters
need to be added to the model that may have an
effect on the pressure diffusion through the layers.
This further underlines the need for further
improvement of the model and the
implementation of more informed geological
constraints.

4.2 Assumptions of the model and conclusion
The model assumes a vertical fault, cutting
completely through both layers. However, in
reality the fault geometries are shown to be
oblique and at a variety of angles. Focal
mechanisms shown in Fig.1, suggest that the
aftershock slip motions were oblique. In addition
the fault ruptured by the earthquake developed on
a planar 45 SW-dipping fault (Chiarabba et al
2009). Dipping faults are not acounted for in our
model and this is likely to cause uncertainties, and
the model results are less reliable. Again this
underlines the need to improve the model by
adding in parameters in aggreeance with
geological constraints. Addtionally, we model the
seal as a horizontal concordant layer and we
assume that all the layers have a constant
homogenous permeability. In reality, this is
unlikely to be true, as in areas of tectonic activity,
where deformation of the crust is common,
lihtological layers are rarely horizontal or
homogenous in their properties or geometry. It is
equally reasonable to suggest that other faults or
hydrofractures could cause diffusion of pressure
not accounted for by our model.

In conclusion, the model can not be applied to the
aftershocks at LAquila. This may be because
another mechanism, other than seismogenic
faulting, has occurred. Conversley, it could
equally be that our model is inadequate to
succesfully model this mechanism and that more
time needs to be taken to extend the model by
adding extra parameters based on informed
geological constraints.

REFERENCES

Fig.7(a) 20 Pressure plotted against depth. With a spatial
resolution of 100m, an instantaneous change is not computed
correctly, indicating the spatial resolution is not high enough (b)
20MPa contour when k
fault
=10
-11
m
2
, contour stabilizes after one
day, disagreeing with seismic data.
ASKES, H., Nguyen, D. C., & Tyas, A. (2011). Increasing the critical
time step: micro-inertia, inertia penalties and mass scaling.
Computational Mechanics, 47(6), 657-667.
ATZORI, S., Hunstad, I., Chini, M., Salvi, A., Tolomei, C., Bignami, C.,
et al. (2009). Finite fault inversion of DInSAR coseismic
displacement of the 2009 L'Aquila earthquake (central Italy).
Geophysical Research Letters , 36, L15305.
BAGH, S., Chiaraluce, L., De Gori, P., Moretti, M., Govoni, A.,
Chiarabba, C., et al. (2007). Background seismicity in the central
Apennines of Italy: The Abruzzo region case study. Tectonic
physics(444), 80-92.
BAILEY, I. W., & Ben-Zion, Y. (2009, June). Statistics of Earthquake
Stress Drops on a Heterogenous Fault in an Elastic Half-Space.
Bulletin of the Seismological Society of America, 99(3), 1786-1800.
BUTLER, R. W., Mazzoli, S., Corrado, S., De Donatis, M., Di Bucci,
D., Gambini, R., et al. (2004). Applying Thick-skinned Tectonic
Models to the Apennine Thrust Belt of Italy Limitations and
Implications. In K. R. McClay, Thrust Tectonics and hydrocarbon
systems (pp. 647-667). AAPG Memoir 82.
CHIARABBA, C., Amato, A., Anselmi, M., Baccheschi, P., Bianchi, I.,
Cattaneo, M., et al. (2009). The 2009 L'Aquila (central Italy) Mw
6.4 earthquake; Main shock and aftershocks. Geophysical research
letters 36, 36, L18308.
GUDMUNDSSON, A. (1999). Fluid overpressure and stress drop in
fault zones. Geophysical Research Letters, 26(1), 115-118.
MILLER, S. A., Collettini, C., Chiaraluce, L., Cocco, M., Barchi, M., &
Kaus, B. P. (2004, February 19). Aftershocks driven by a high
pressure CO2 source at depth. Nature, 427, 724-727.
TWISS, R. J., & Moores, E. M. (1992). Structural Geology & Tectonics.
California: W. H. Freeman and Company.


(b)
(a)
APPENDIX
function Perm_Modelling 1
tic 2
% initial parameters 3
k = 1e-6; % diffusivity 4
dx = 100 % x-discretization step 5
dz = 100; % z-discretization step 6
kseal = 1e-18 %permeability of seal 7
8
porosity = 0.05 9
beta = 1e-8 % fluid compressibility 10
viscosity = 1e-4 11
kfault = 1e-12;% permeability of fault 12
knorm = 1e-15 %permeability elsewhere 13
kappa = (kfault/porosity/beta/viscosity); 14
coeff = (1/porosity/beta/viscosity); 15
dt = 0.9.*dx^2./(4*kappa); % timestep (see Equation 4 in main text) 16
t=0 % set time to zero 17
Pcontour = 20e6 18
h = 1e4; % box size height( 2, 5km layers) 19
hor = 5e3; % each horizontal box of size 5km) 20
nx = ceil(hor/dx+1); 21
nz = ceil(h/dz+1); 22
nt = 100; % number of tsteps to run code 23
time = zeros(nt,1); 24
fmax = 200e6; % max f-value 25
26
27
x = 0:dx:hor; %creates an array of x from 0 to 5000m 28
z = 0:dz:h; %creates an array of z from 0 to 5000m 29
[xx,zz]=meshgrid(x,z); % build a 2D grid from two 1D ones 30
xxMP = (xx(:,1:end-1)+xx(:,2:end))/2; 31
zzMP = (zz(1:end-1,:)+zz(2:end,:))/2; 32
33
% Initial pressure conditions: 34
Perm=ones(nz,nx).*10^-15; % array of initial permeability 35
fault = floor((2400/hor)*nx):ceil((2600/hor)*nx); % define position of fault 36
seal = floor((4800/h)*nz):ceil((5200/h)*nz); % define position of seal 37
38
% Initial permeability conditions: 39
Perm(seal,1:end) = kseal; % defining permeability of seal 40
Perm(1:end,fault) = kfault; % defining permeability of fault 41
42
% build a 2D grid (similar to xxMP, zzMP) to model changing permeability 43
% through crust 44
PermxMP = (Perm(:,1:end-1)+Perm(:,2:end))/2; 45
PermzMP = (Perm(1:end-1,:)+Perm(2:end,:))/2; 46
% kz = ones(size(zzMP)) 47
% kx = ones(size(xxMP)) 48
49
%kz(seal,1:end)=(kseal/porosity/beta/viscosity); 50
%kx(seal,1:end)=(kfault/porosity/beta/viscosity); 51
52
fold = zeros(nz,nx); 53
xrange = 1:(1*nx); 54
zrange = ceil((5200/h)*nz):nz; 55
fold(zrange,xrange) = fmax; 56
57
% Plot permeability field 58
figure(1), clf 59
pcolor(xx,zz,log10(Perm)); 60
shading FLAT 61
colormap gray 62
xlabel('x') 63
ylabel('z') 64
set (gca,'YDir','reverse'); 65
66
% Plot Pressure with depth to show the resolution of pressure boundary 67
figure (2), clf 68
plot(fold(:,0.5*nx-0.5),z,'LineWidth',4) 69
xlabel('Pressure (MPa)') 70
ylabel('z') 71
72
% timestepping 73
for it=1:nt; 74
%update time 75
t = t+dt; 76
time(it) = t; 77
tyears=floor(t./(60*60*24*365)); 78
79
80
% apply one numerical diffusion timestep: 81
fnew = twoDdiff(fold, xx, zz, xxMP, zzMP, PermzMP, PermxMP, coeff, dt); 82
83
% define a 1D array in the fault to use for contour 20MPa 84
finterp(it) = MYinterp(fnew(:,0.5*nx-0.5),z,Pcontour); 85
86
% plot the pressure through the fault and seal 87
figure(3), clf 88
pcolor (xx,zz,fnew) 89
shading interp; 90
h=colorbar('location','southoutside') 91
ylabel(h, 'Pressure (Pa)') 92
colormap(hot); 93
legend 94
xlabel('x') 95
ylabel('z') 96
title(['time (s)',num2str(floor(t))]) 97
set (gca,'YDir','reverse'); 98
99
% plot the pressure through the fault and seal this time with contour and vector 100
plot overlain 101
figure(4), clf 102
pcolor (xx,zz,fnew) 103
shading interp; 104
h=colorbar('location','southoutside') 105
ylabel(h, 'Pressure (Pa)') 106
colormap(hot); 107
legend 108
xlabel('x') 109
ylabel('z') 110
title(['time (s)',num2str(floor(t))]) 111
axis([1500,3500,3000,7000]) 112
% overlay vector plot 113
hold on 114
[dPdx,dPdz]=gradient(fnew); 115
vx=-Perm.*dPdx/viscosity; 116
vz=-Perm.*dPdz/viscosity; 117
quiver(xx,zz,vx,vz,3) 118
quiver(xx(1:2:end,1:2:end),zz(1:2:end,1:2:end),vx(1:2:end,1:2:end),vz(1:2:end,1: 119
2:end),3) 120
set (gca,'YDir','reverse'); 121
% overlay 20 MPa contour 122
hold on 123
contour (xx,zz,fnew,[20e6, 20e6],'LineWidth',1.5,'LineColor',[0 0 1]) 124
%plot the vector field of pore fluid pressure ascending through the fault. 125
figure(5), clf 126
quiver(xx,zz,vx,vz,3) 127
set (gca,'YDir','reverse'); 128
hold on 129
contour (xx,zz,fnew,[20e6, 20e6]) 130
title(['time (s) at ',num2str(floor(t)),]) 131
axis([1500,3500,3000,7000]) 132
xlabel('x') 133
ylabel('z') 134
%prepare for next time step: 135
fold = fnew; 136
end 137
% %************************************************************************** 138
139
%Plot 20MPa pressure contour against time 140
figure (6), clf 141
plot(time,finterp,'LineWidth',1.5) 142
xlabel(['time (s)',num2str(floor(t))]) 143
ylabel('z [m]') 144
title(['Depth of 20MPa isobar']) 145
146
147
function fout = twoDdiff (fin,xx,zz,xxMP,zzMP,PermzMP,PermxMP,coeff,dt); 148
% (use the same philosophy as for the 1D diffusion code to 149
% calculate 2D diffusion) 150
dfdzz=PermzMP.*diff(fin,1,1)./diff(zz,1,1); 151
d2fdzz2=diff(dfdzz,1,1)./diff(zzMP,1,1); 152
dfdxx=PermxMP.*diff(fin,1,2)./diff(xx,1,2); 153
d2fdxx2=diff(dfdxx,1,2)./diff(xxMP,1,2); 154
% make an array of zeros with size xx, and call dfdt 155
dfdt=zeros(size(xx)); 156
% lay the arrays of d2fdzz2 and d2fdxx2 on top of array of the zeros array. 157
% This is because the two initial arrays are different sizes, and unable to 158
% compute at the boundaries. 159
% This process makes all boundary values 0 and allows for the final 160
% computation of the differential equation. 161
dfdt(2:end-1,2:end-1)=coeff.*(d2fdzz2(:,2:end-1)+d2fdxx2(2:end-1,:)); 162
163
%Apply fixed f boundaries 164
fout=fin+dfdt*dt; 165
166
% Separate function for the 20MPa contour. 167
function finterp = MYinterp(fnew,z,Pcontour) 168
% find interval where f-f0 changes sign: 169
larger=fnew>Pcontour; 170
if sum(larger) == 0; 171
finterp = NaN; 172
else ix=find(diff(larger)==1)+1; 173
% interpolate to find where exaclty on this interval f=f0: 174
finterp=-(z(ix)-(fnew(ix)-Pcontour)/(fnew(ix)-fnew(ix-1))*(z(ix)-z(ix-1))); 175
end 176
toc 177
178

Anda mungkin juga menyukai