Mercurial > repos > public > sbplib
diff +sbp/InterpOpsOP.m @ 937:ed8c98c4d479 feature/utux2D
Use only number of grid points as arguments in InterpOpsXX, instead of coordinates.
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Tue, 04 Dec 2018 14:06:42 -0800 |
parents | 4291731570bb |
children | 27ce3f653aa7 |
line wrap: on
line diff
--- a/+sbp/InterpOpsOP.m Tue Dec 04 12:54:33 2018 +0100 +++ b/+sbp/InterpOpsOP.m Tue Dec 04 14:06:42 2018 -0800 @@ -7,9 +7,9 @@ end methods - % x_u, x_v -- vectors of the coordinate that varies along the boundary + % m_u, m_v -- number of grid points along the interface % order_u, order_v -- order of accuracy in the different blocks - function obj = InterpOpsOP(x_u, x_v, order_u, order_v) + function obj = InterpOpsOP(m_u, m_v, order_u, order_v) assert(order_u == order_v,... 'InterpOpsOP: Different orders of accuracy not available'); @@ -27,25 +27,22 @@ error('InterpOpsOP: Order of accuracy %d not available.', order_u); end - m_u = length(x_u) - 1; - m_v = length(x_v) - 1; - Iu2v = struct; Iv2u = struct; - if m_u/m_v == 2 + if (m_u-1)/(m_v-1) == 2 % Block u is fine, v is coarse m_C = m_v; - [Iv2u.good, Iu2v.bad] = intOpSet(m_C+1, 1, 'C2F'); - [Iv2u.bad, Iu2v.good] = intOpSet(m_C+1, 1, 'F2C'); + [Iv2u.good, Iu2v.bad] = intOpSet(m_C, 1, 'C2F'); + [Iv2u.bad, Iu2v.good] = intOpSet(m_C, 1, 'F2C'); - elseif m_v/m_u == 2 + elseif (m_v-1)/(m_u-1) == 2 % Block v is fine, u is coarse m_C = m_u; - [Iu2v.good, Iv2u.bad] = intOpSet(m_C+1, 1, 'C2F'); - [Iu2v.bad, Iv2u.good] = intOpSet(m_C+1, 1, 'F2C'); + [Iu2v.good, Iv2u.bad] = intOpSet(m_C, 1, 'C2F'); + [Iu2v.bad, Iv2u.good] = intOpSet(m_C, 1, 'F2C'); else - error('InterpOpsOP: Interpolation operators for grid ratio %f have not yet been constructed', m_u/m_v); + error('InterpOpsOP: Interpolation operators for grid ratio %f have not yet been constructed', (m_u-1)/(m_v-1)); end obj.Iu2v = Iu2v;