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