rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
MichelPrsLin.m
1 classdef MichelPrsLin < TwoPhaseData.Interface
2 
3  methods
4  function kw = water_permeability(this, glob, S, model)
5 
6  kw = 0.01*ones(size(S));
7  end
8 
9  function dkw = water_permeability_derivative(this, glob, S, model)
10 
11  dkw = zeros(size(S));
12  end
13 
14  function ko = oil_permeability(this, glob, S, model)
15 
16  ko = zeros(size(S));
17  end
18 
19  function dko = oil_permeability_derivative(this, glob, S, model)
20 
21  dko = zeros(size(S));
22  end
23 
24  function pc = capillary_pressure(this, glob, S, model)
25 
26  pc = model.tp_pb * sqrt((1-S)./S);
27  end
28 
29  function dpc = capillary_pressure_derivative(this, glob, S, model)
30 
31  dpc = model.tp_pb .* (-1/2)./sqrt(S.^3.-S.^4);
32  end
33 
34  function ddpc = capillary_pressure_second_derivative(this, glob, S, model)
35  ddpc = model.tp_pb .* (1/4).*(S.^3-S.^4).^(-3/2).*(3.*S.^2-4.*S.^3);
36 % ddpc = model.tp_pb .* (1/2).*(4./S - 1./(S.^2-S.^3));
37 % ddpc = model.tp_pb .* (-1/2).*(-1.5.*S.^(0.5) + 2.*S)./(S.^(1.5)-S.^2).^2;
38  end
39 
40  function c = injection_concentration(this, model)
41 
42  c = model.tp_injection_c;
43  end
44 
45  function s_under = lower_source(this, elemin, loc, grid)
46 
47  glob = local2global(grid, elemin, loc, this);
48  X = glob(:,1);
49  Y = glob(:,2);
50 
51 % if model.t < 0.5
52  D3 = ((X-0.8).^2 + (Y-0.5).^2) <= 0.01;
53  s_under = 30 * D3;
54 % else
55 % s_under = zeros(size(X));
56 % end
57  end
58 
59  function s_above = upper_source(this, elemin, loc, grid)
60 
61  glob = local2global(grid, elemin, loc, this);
62  X = glob(:,1);
63  Y = glob(:,2);
64 
65 % if model.t < 0.5
66  D1 = ((X-0.5).^2 + (Y-0.8).^2) <= 0.01;
67  D2 = ((X-0.2).^2 + (Y-0.2).^2) <= 0.01;
68  s_above = 10 * D1 + 20 * D2;
69 % else
70 % s_above = zeros(size(X));
71 % end
72  end
73 
74  function descr = default_descr(this, descr)
75  descr.tp_pb = -0.5;
76  descr.tp_kw_factor = 0.15;
77  descr.tp_ko_factor = 1;
78  descr.tp_injection_c = 0.80;
79  end
80  end
81 end