Mercurial > repos > public > sbplib
annotate +time/+sbp/sbpintime.m @ 668:43ea848b6aa1 feature/poroelastic
Add borrowing constants to D2variable
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Fri, 22 Dec 2017 14:14:24 +0100 |
parents | f908ce064f35 |
children |
rev | line source |
---|---|
365
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
1 % Takes one time step of size k using the sbp in time method |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
2 % starting from v_0 and where |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
3 % M v_t = E_r'*v + f(t) |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
4 function v = sbpintime(v, t, tvec, penalty, f, Nblock, E_r,... |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
5 L, U, P, Q) |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
6 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
7 % Pick out last time step |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
8 v_r = E_r'*v; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
9 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
10 % Form RHS |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
11 RHS = penalty*v_r; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
12 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
13 % Build vector of f-values and add to RHS |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
14 if(~isempty(f)) |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
15 fvec = []; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
16 for i = 1:Nblock |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
17 fvec = [fvec;f(t+tvec(i))]; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
18 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
19 RHS = RHS + fvec; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
20 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
21 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
22 % Solve system |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
23 %v = M\RHS; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
24 RHS = P*RHS; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
25 RHS = L\RHS; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
26 v = U\RHS; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
27 v = Q*v; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
28 |