Mercurial > repos > public > sbplib
comparison +scheme/Schrodinger2dCurve.m @ 698:0122cbe2e6d3 feature/optim
Add hamiltonian
author | Ylva Rydin <ylva.rydin@telia.com> |
---|---|
date | Fri, 13 Oct 2017 09:16:33 +0200 |
parents | ba0d31ce4121 |
children | 8f1eae1450b2 |
comparison
equal
deleted
inserted
replaced
697:8434063ed162 | 698:0122cbe2e6d3 |
---|---|
36 | 36 |
37 a11, a12, a22 | 37 a11, a12, a22 |
38 m_tot, m_u, m_v | 38 m_tot, m_u, m_v |
39 p | 39 p |
40 Ji, J | 40 Ji, J |
41 Hamiltonian | |
41 end | 42 end |
42 | 43 |
43 methods | 44 methods |
44 function obj = Schrodinger2dCurve(g ,order, opSet,p) | 45 function obj = Schrodinger2dCurve(g ,order, opSet,p) |
45 default_arg('opSet',@sbp.D2Variable); | 46 default_arg('opSet',@sbp.D2Variable); |
65 I_u = speye(obj.m_u); | 66 I_u = speye(obj.m_u); |
66 I_v = speye(obj.m_v); | 67 I_v = speye(obj.m_v); |
67 | 68 |
68 obj.D1_u = ops_u.D1; | 69 obj.D1_u = ops_u.D1; |
69 obj.D2_u = ops_u.D2; | 70 obj.D2_u = ops_u.D2; |
70 | 71 |
71 H_u = ops_u.H; | 72 H_u = ops_u.H; |
72 Hi_u = ops_u.HI; | 73 Hi_u = ops_u.HI; |
73 e_l_u = ops_u.e_l; | 74 e_l_u = ops_u.e_l; |
74 e_r_u = ops_u.e_r; | 75 e_r_u = ops_u.e_r; |
75 d1_l_u = ops_u.d1_l; | 76 d1_l_u = ops_u.d1_l; |
113 | 114 |
114 obj.m = m; | 115 obj.m = m; |
115 obj.h = [h_u h_v]; | 116 obj.h = [h_u h_v]; |
116 obj.order = order; | 117 obj.order = order; |
117 obj.D = @(t)obj.d_fun(t); | 118 obj.D = @(t)obj.d_fun(t); |
119 obj.Hamiltonian = @(t)obj.h_fun(t); | |
118 obj.variable_update(0); | 120 obj.variable_update(0); |
119 end | 121 end |
120 | 122 |
121 function [D] = d_fun(obj,t) | 123 function [D,n] = d_fun(obj,t) |
122 % obj.update_vairables(t); In driscretization? | 124 % obj.update_vairables(t); In driscretization? |
123 % D = obj.Ji*(-1/2*(obj.b1*obj.Du-obj.b1_u+obj.Du*obj.b1) - | 125 % D = obj.Ji*(-1/2*(obj.b1*obj.Du-obj.b1_u+obj.Du*obj.b1) - |
124 % 1/2*(obj.b2*obj.Dv - obj.b2_v +obj.Dv*obj.b2) + | 126 % 1/2*(obj.b2*obj.Dv - obj.b2_v +obj.Dv*obj.b2) + |
125 % 1i*obj.c^2*(obj.DUU + obj.DUV + obj.DVU + obj.DVV)); (ols | 127 % 1i*obj.c^2*(obj.DUU + obj.DUV + obj.DVU + obj.DVV)); (ols |
126 % not skew sym disc | 128 % not skew sym disc |
127 | 129 |
128 D = sqrt(obj.Ji)*(-1/2*(obj.b1*obj.Du + obj.Du*obj.b1) - 1/2*(obj.b2*obj.Dv + obj.Dv*obj.b2) + 1i*obj.c^2*(obj.DUU + obj.DUV + obj.DVU + obj.DVV))*sqrt(obj.Ji); | 130 D = sqrt(obj.Ji)*(-1/2*(obj.b1*obj.Du + obj.Du*obj.b1) - 1/2*(obj.b2*obj.Dv + obj.Dv*obj.b2) + 1i*obj.c^2*(obj.DUU + obj.DUV + obj.DVU + obj.DVV))*sqrt(obj.Ji); |
129 end | 131 end |
130 | 132 |
133 function [Hamiltonian,n] = h_fun(obj,t) | |
134 Hamiltonian = obj.c^2*(obj.DUU + obj.DUV + obj.DVU + obj.DVV)*sqrt(obj.Ji); | |
135 end | |
131 | 136 |
132 function [D ]= variable_update(obj,t) | 137 function [D ]= variable_update(obj,t) |
133 % Metric derivatives | 138 % Metric derivatives |
134 if(obj.t_up == t) | 139 if(obj.t_up == t) |
135 return | 140 return |