Mercurial > repos > public > sbplib
comparison +scheme/Beam2d.m @ 886:8894e9c49e40 feature/timesteppers
Merge with default for latest changes
| author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
|---|---|
| date | Thu, 15 Nov 2018 16:36:21 -0800 |
| parents | d095b5396103 |
| children | 459eeb99130f |
comparison
equal
deleted
inserted
replaced
| 816:b5e5b195da1e | 886:8894e9c49e40 |
|---|---|
| 1 classdef Beam2d < scheme.Scheme | 1 classdef Beam2d < scheme.Scheme |
| 2 properties | 2 properties |
| 3 m % Number of points in each direction, possibly a vector | 3 grid |
| 4 N % Number of points total | |
| 5 h % Grid spacing | |
| 6 u,v % Grid | |
| 7 x,y % Values of x and y for each grid point | |
| 8 order % Order accuracy for the approximation | 4 order % Order accuracy for the approximation |
| 9 | 5 |
| 10 D % non-stabalized scheme operator | 6 D % non-stabalized scheme operator |
| 11 M % Derivative norm | 7 M % Derivative norm |
| 12 alpha | 8 alpha |
| 25 delt_x, delt_y | 21 delt_x, delt_y |
| 26 end | 22 end |
| 27 | 23 |
| 28 methods | 24 methods |
| 29 function obj = Beam2d(m,lim,order,alpha,opsGen) | 25 function obj = Beam2d(m,lim,order,alpha,opsGen) |
| 26 default_arg('alpha',1); | |
| 30 default_arg('opsGen',@sbp.Higher); | 27 default_arg('opsGen',@sbp.Higher); |
| 31 default_arg('a',1); | 28 |
| 32 | 29 if ~isa(grid, 'grid.Cartesian') || grid.D() ~= 2 |
| 33 if length(m) == 1 | 30 error('Grid must be 2d cartesian'); |
| 34 m = [m m]; | |
| 35 end | 31 end |
| 36 | 32 |
| 37 m_x = m(1); | 33 obj.grid = grid; |
| 38 m_y = m(2); | 34 obj.alpha = alpha; |
| 39 | 35 obj.order = order; |
| 40 xlim = lim{1}; | 36 |
| 41 ylim = lim{2}; | 37 m_x = grid.m(1); |
| 42 | 38 m_y = grid.m(2); |
| 43 [x, h_x] = util.get_grid(xlim{:},m_x); | 39 |
| 44 [y, h_y] = util.get_grid(ylim{:},m_y); | 40 h = grid.scaling(); |
| 41 h_x = h(1); | |
| 42 h_y = h(2); | |
| 45 | 43 |
| 46 ops_x = opsGen(m_x,h_x,order); | 44 ops_x = opsGen(m_x,h_x,order); |
| 47 ops_y = opsGen(m_y,h_y,order); | 45 ops_y = opsGen(m_y,h_y,order); |
| 48 | 46 |
| 49 I_x = speye(m_x); | 47 I_x = speye(m_x); |
| 50 I_y = speye(m_y); | 48 I_y = speye(m_y); |
| 51 | |
| 52 | |
| 53 | |
| 54 | 49 |
| 55 D4_x = sparse(ops_x.derivatives.D4); | 50 D4_x = sparse(ops_x.derivatives.D4); |
| 56 H_x = sparse(ops_x.norms.H); | 51 H_x = sparse(ops_x.norms.H); |
| 57 Hi_x = sparse(ops_x.norms.HI); | 52 Hi_x = sparse(ops_x.norms.HI); |
| 58 e_l_x = sparse(ops_x.boundary.e_1); | 53 e_l_x = sparse(ops_x.boundary.e_1); |
| 103 obj.d3_w = kr(d3_l_x,I_y); | 98 obj.d3_w = kr(d3_l_x,I_y); |
| 104 obj.d3_e = kr(d3_r_x,I_y); | 99 obj.d3_e = kr(d3_r_x,I_y); |
| 105 obj.d3_s = kr(I_x,d3_l_y); | 100 obj.d3_s = kr(I_x,d3_l_y); |
| 106 obj.d3_n = kr(I_x,d3_r_y); | 101 obj.d3_n = kr(I_x,d3_r_y); |
| 107 | 102 |
| 108 obj.m = m; | |
| 109 obj.h = [h_x h_y]; | |
| 110 obj.order = order; | |
| 111 | |
| 112 obj.alpha = alpha; | |
| 113 obj.D = alpha*D4; | 103 obj.D = alpha*D4; |
| 114 obj.u = x; | |
| 115 obj.v = y; | |
| 116 obj.x = kr(x,ones(m_y,1)); | |
| 117 obj.y = kr(ones(m_x,1),y); | |
| 118 | 104 |
| 119 obj.gamm_x = h_x*ops_x.borrowing.N.S2/2; | 105 obj.gamm_x = h_x*ops_x.borrowing.N.S2/2; |
| 120 obj.delt_x = h_x^3*ops_x.borrowing.N.S3/2; | 106 obj.delt_x = h_x^3*ops_x.borrowing.N.S3/2; |
| 121 | 107 |
| 122 obj.gamm_y = h_y*ops_y.borrowing.N.S2/2; | 108 obj.gamm_y = h_y*ops_y.borrowing.N.S2/2; |
