changeset 351:7cc3d5bd3692 feature/hypsyst

Curve linear code in 3D converges for manufactures solution
author Ylva Rydin <ylva.rydin@telia.com>
date Thu, 03 Nov 2016 22:03:09 +0100
parents 5d5652fe826a
children 9b3d7fc61a36
files +scheme/Hypsyst3dCurve.m
diffstat 1 files changed, 22 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/+scheme/Hypsyst3dCurve.m	Wed Nov 02 00:02:01 2016 +0100
+++ b/+scheme/Hypsyst3dCurve.m	Thu Nov 03 22:03:09 2016 +0100
@@ -210,13 +210,16 @@
                 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
         
         
@@ -409,8 +412,7 @@
             else
                 y_2s=0;
             end
-            
-             
+                    
             if(sum(abs(z_1))>eps)
                 syms z_1s
             else
@@ -425,22 +427,17 @@
             
             syms xs ys zs 
             [V, D]=eig(mat(obj,xs,ys,zs,x_1s,x_2s,y_1s,y_2s,z_1s,z_2s));
-            Vi=inv(V);
-            
-            syms x_1s x_2s y_1s y_2s z_1s z_2s
-%             V= matlabFunction(V);
-%             D= matlabFunction(D);
-%             Vi= matlabFunction(Vi);
-%             
-%             xs=x;
-%             ys=y;
-%             zs=z;
-%             x_1s=x_1;
-%             x_2s=x_2;
-%             y_1s=y_1;
-%             y_2s=y_2;
-%             z_1s=z_1;
-%             z_2s=z_2;
+            Vi=inv(V);            
+        %    syms x_1s x_2s y_1s y_2s z_1s z_2s
+            xs=x;
+            ys=y;
+            zs=z;
+            x_1s=x_1;
+            x_2s=x_2;
+            y_1s=y_1;
+            y_2s=y_2;
+            z_1s=z_1;
+            z_2s=z_2;
                          
             side=max(length(x),length(y));
             Dret=zeros(obj.n,side*obj.n);
@@ -449,15 +446,12 @@
             
             for ii=1:obj.n
                 for jj=1:obj.n
-                    Dpart=matlabFunction(D(jj,ii),'Vars',[xs ys zs x_1s x_2s y_1s y_2s z_1s z_2s]);
-                    Vpart=matlabFunction(V(jj,ii),'Vars',[xs ys zs x_1s x_2s y_1s y_2s z_1s z_2s]);
-                    Vipart=matlabFunction(V(jj,ii),'Vars',[xs ys zs x_1s x_2s y_1s y_2s z_1s z_2s]);
-                    Dret(jj,(ii-1)*side+1:side*ii)=sparse(Dpart(x,y,z,x_1,x_2,y_1,y_2,z_1,z_2));
-                    Vret(jj,(ii-1)*side+1:side*ii)=sparse(Vpart(x,y,z,x_1,x_2,y_1,y_2,z_1,z_2));
-                    Viret(jj,(ii-1)*side+1:side*ii)=sparse(Vipart(x,y,z,x_1,x_2,y_1,y_2,z_1,z_2));
+                    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);
             Vi=sparse(Viret);
@@ -472,7 +466,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
     end