changeset 352:9b3d7fc61a36 feature/hypsyst

Changed operator in Utux
author Ylva Rydin <ylva.rydin@telia.com>
date Thu, 10 Nov 2016 20:47:40 +0100
parents 7cc3d5bd3692
children fd4f1c80755d
files +scheme/Hypsyst2d.m +scheme/Hypsyst2dCurve.m +scheme/Hypsyst3d.m +scheme/Utux.m
diffstat 4 files changed, 28 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
diff -r 7cc3d5bd3692 -r 9b3d7fc61a36 +scheme/Hypsyst2d.m
--- a/+scheme/Hypsyst2d.m	Thu Nov 03 22:03:09 2016 +0100
+++ b/+scheme/Hypsyst2d.m	Thu Nov 10 20:47:40 2016 +0100
@@ -115,13 +115,14 @@
                 side=max(length(X),length(Y));
                 cols=cols/side;
             end
-            ret=kron(ones(rows,cols),speye(side));
+            ret=cell(rows,cols);
 
             for ii=1:rows
                 for jj=1:cols
-                    ret((ii-1)*side+1:ii*side,(jj-1)*side+1:jj*side)=diag(matVec(ii,(jj-1)*side+1:jj*side));
+                    ret{ii,jj}=diag(matVec(ii,(jj-1)*side+1:jj*side));
                 end
             end
+            ret=cell2mat(ret);
         end
 
 
@@ -251,22 +252,27 @@
             params=obj.params;
             syms xs ys
             [V, D]=eig(mat(params,xs,ys));
+            Vi=inv(V);
             xs=x; 
             ys=y;
            
             side=max(length(x),length(y));
             Dret=zeros(obj.n,side*obj.n);
             Vret=zeros(obj.n,side*obj.n);
+            Viret=zeros(obj.n,side*obj.n);
             for ii=1:obj.n
                 for jj=1:obj.n
                     Dret(jj,(ii-1)*side+1:side*ii)=eval(D(jj,ii));
                     Vret(jj,(ii-1)*side+1:side*ii)=eval(V(jj,ii));
+                    Viret(jj,(ii-1)*side+1:side*ii)=eval(Vi(jj,ii));
                 end
             end
 
             D=sparse(Dret);
-            V=sparse(Vret);        
+            V=sparse(Vret); 
+            Vi=sparse(Viret);
             V=obj.evaluateCoefficientMatrix(V,x,y);
+            Vi=obj.evaluateCoefficientMatrix(Vi,x,y);
             D=obj.evaluateCoefficientMatrix(D,x,y);                       
             DD=diag(D);
             
@@ -276,7 +282,7 @@
             
             D=diag([DD(poseig); DD(zeroeig); DD(negeig)]);
             V=[V(:,poseig) V(:,zeroeig) V(:,negeig)];            
-            Vi=inv(V);
+            Vi=[Vi(poseig,:); Vi(zeroeig,:); Vi(negeig,:)];
             signVec=[sum(poseig),sum(zeroeig),sum(negeig)];
         end
 
diff -r 7cc3d5bd3692 -r 9b3d7fc61a36 +scheme/Hypsyst2dCurve.m
--- a/+scheme/Hypsyst2dCurve.m	Thu Nov 03 22:03:09 2016 +0100
+++ b/+scheme/Hypsyst2dCurve.m	Thu Nov 10 20:47:40 2016 +0100
@@ -147,13 +147,14 @@
                 side=max(length(X),length(Y));
                 cols=cols/side;
             end
-            ret=kron(ones(rows,cols),speye(side));
+            ret=cell(rows,cols);
 
             for ii=1:rows
                 for jj=1:cols
-                    ret((ii-1)*side+1:ii*side,(jj-1)*side+1:jj*side)=diag(matVec(ii,(jj-1)*side+1:jj*side));
+                    ret{ii,jj}=diag(matVec(ii,(jj-1)*side+1:jj*side));
                 end
             end
+            ret=cell2mat(ret);
         end
 
 
@@ -259,7 +260,7 @@
                     L=obj.evaluateCoefficientMatrix(L,eta_x,eta_y,[],[]);
                     side=max(length(xi));
                 case {'n','N','north'}
-                   e_=obj.e_n;            for ii=1:rows
+                   e_=obj.e_n;            
 
                     mat=obj.Bhat;
                     boundPos='r';
@@ -304,7 +305,6 @@
             end
         end
 
-
         function [V,Vi, D,signVec]=matrixDiag(obj,mat,x,y,x_,y_)
             params=obj.params;
             syms xs ys 
@@ -321,6 +321,7 @@
             end
             
             [V, D]=eig(mat(params,xs,ys,xs_,ys_));
+            Vi=inv(V);
             syms xs ys xs_ ys_
             
             xs=x; 
@@ -331,17 +332,21 @@
             side=max(length(x),length(y));
             Dret=zeros(obj.n,side*obj.n);
             Vret=zeros(obj.n,side*obj.n);
+            Viret=zeros(obj.n,side*obj.n);
             for ii=1:obj.n
                 for jj=1:obj.n
                     Dret(jj,(ii-1)*side+1:side*ii)=eval(D(jj,ii));
                     Vret(jj,(ii-1)*side+1:side*ii)=eval(V(jj,ii));
+                    Viret(jj,(ii-1)*side+1:side*ii)=eval(Vi(jj,ii));
                 end
             end
 
             D=sparse(Dret);
-            V=sparse(Vret);        
+            V=sparse(Vret);
+            Vi=sparse(Viret);
             V=obj.evaluateCoefficientMatrix(V,x,y,x_,y_);
-            D=obj.evaluateCoefficientMatrix(D,x,y,x_,y_);                       
+            D=obj.evaluateCoefficientMatrix(D,x,y,x_,y_);    
+            Vi=obj.evaluateCoefficientMatrix(Vi,x,y,x_,y_);
             DD=diag(D);
             
             poseig=(DD>0);
@@ -350,9 +355,8 @@
             
             D=diag([DD(poseig); DD(zeroeig); DD(negeig)]);
             V=[V(:,poseig) V(:,zeroeig) V(:,negeig)];            
-            Vi=inv(V);
+            Vi=[Vi(poseig,:); Vi(zeroeig,:); Vi(negeig,:)];
             signVec=[sum(poseig),sum(zeroeig),sum(negeig)];
         end
-
     end
 end
\ No newline at end of file
diff -r 7cc3d5bd3692 -r 9b3d7fc61a36 +scheme/Hypsyst3d.m
--- a/+scheme/Hypsyst3d.m	Thu Nov 03 22:03:09 2016 +0100
+++ b/+scheme/Hypsyst3d.m	Thu Nov 10 20:47:40 2016 +0100
@@ -139,13 +139,14 @@
                 side=max(length(X),length(Y));
                 cols=cols/side;
             end
-            ret=kron(ones(rows,cols),speye(side));
+            ret=cell(rows,cols);
             
             for ii=1:rows
                 for jj=1:cols
-                    ret((ii-1)*side+1:ii*side,(jj-1)*side+1:jj*side)=diag(matVec(ii,(jj-1)*side+1:jj*side));
+                    ret{ii,jj}=diag(matVec(ii,(jj-1)*side+1:jj*side));
                 end
             end
+            ret=cell2mat(ret);
         end
         
         
diff -r 7cc3d5bd3692 -r 9b3d7fc61a36 +scheme/Utux.m
--- a/+scheme/Utux.m	Thu Nov 03 22:03:09 2016 +0100
+++ b/+scheme/Utux.m	Thu Nov 10 20:47:40 2016 +0100
@@ -24,9 +24,9 @@
            % [x, h] = util.get_grid(xlim{:},m);
            %ops = sbp.Ordinary(m,h,order);
            
-            ops = sbp.D1Nonequidistant(m,xlim,order);
-           % ops = sbp.D2Standard(m,xlim,order);
-           
+           % ops = sbp.D1Nonequidistant(m,xlim,order);
+          %  ops = sbp.D2Standard(m,xlim,order);
+            ops = sbp.D1Upwind(m,xlim,order);
             obj.x=ops.x;
 
             obj.D1 = ops.D1;