0001 function BuildGridSets(grids,constraints)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 global cluster
0018 global gridset
0019
0020 mset=zeros(getdofcount(grids),1);
0021 nset=zeros(getdofcount(grids),1);
0022 sset=zeros(getdofcount(grids),1);
0023 fset=zeros(getdofcount(grids),1);
0024
0025
0026
0027 nset(:)=1;
0028 for i=1:length(constraints)
0029 constraint=constraints(i).constraint;
0030 if strcmpi(constraint.type,'rgb'),
0031 grid1=constraint.grid1;
0032 grid2=constraint.grid2;
0033 dof=constraint.dof;
0034 dof1=grids(grid1).grid.doflist(dof);
0035 dof2=grids(grid2).grid.doflist(dof);
0036 if (mset(dof1)==1),
0037
0038 if mset(dof2)==1,
0039
0040 else
0041 mset(dof2)=1;
0042 nset(dof2)=0;
0043 end
0044 else
0045 mset(dof1)=1;
0046 nset(dof1)=0;
0047 end
0048 end
0049 end
0050
0051
0052
0053 for i=1:length(grids),
0054 grid=grids(i).grid;
0055
0056 if isempty(grid),continue;end;
0057
0058 if ~cluster,
0059
0060 if ~isempty(findstr(grid.gridset,'1')), sset(grid.doflist(1))=1; else fset(grid.doflist(1))=1; end
0061 if ~isempty(findstr(grid.gridset,'2')), sset(grid.doflist(2))=1; else fset(grid.doflist(2))=1; end
0062 if ~isempty(findstr(grid.gridset,'3')), sset(grid.doflist(3))=1; else fset(grid.doflist(3))=1; end
0063 if ~isempty(findstr(grid.gridset,'4')), sset(grid.doflist(4))=1; else fset(grid.doflist(4))=1; end
0064 if ~isempty(findstr(grid.gridset,'5')), sset(grid.doflist(5))=1; else fset(grid.doflist(5))=1; end
0065 if ~isempty(findstr(grid.gridset,'6')), sset(grid.doflist(6))=1; else fset(grid.doflist(6))=1; end
0066 else
0067
0068 if grid.border==1,
0069 if labindex==1,
0070 if ~isempty(findstr(grid.gridset,'1')), sset(grid.doflist(1))=1; else fset(grid.doflist(1))=1; end
0071 if ~isempty(findstr(grid.gridset,'2')), sset(grid.doflist(2))=1; else fset(grid.doflist(2))=1; end
0072 if ~isempty(findstr(grid.gridset,'3')), sset(grid.doflist(3))=1; else fset(grid.doflist(3))=1; end
0073 if ~isempty(findstr(grid.gridset,'4')), sset(grid.doflist(4))=1; else fset(grid.doflist(4))=1; end
0074 if ~isempty(findstr(grid.gridset,'5')), sset(grid.doflist(5))=1; else fset(grid.doflist(5))=1; end
0075 if ~isempty(findstr(grid.gridset,'6')), sset(grid.doflist(6))=1; else fset(grid.doflist(6))=1; end
0076 end
0077 else
0078 if ~isempty(findstr(grid.gridset,'1')), sset(grid.doflist(1))=1; else fset(grid.doflist(1))=1; end
0079 if ~isempty(findstr(grid.gridset,'2')), sset(grid.doflist(2))=1; else fset(grid.doflist(2))=1; end
0080 if ~isempty(findstr(grid.gridset,'3')), sset(grid.doflist(3))=1; else fset(grid.doflist(3))=1; end
0081 if ~isempty(findstr(grid.gridset,'4')), sset(grid.doflist(4))=1; else fset(grid.doflist(4))=1; end
0082 if ~isempty(findstr(grid.gridset,'5')), sset(grid.doflist(5))=1; else fset(grid.doflist(5))=1; end
0083 if ~isempty(findstr(grid.gridset,'6')), sset(grid.doflist(6))=1; else fset(grid.doflist(6))=1; end
0084 end
0085 end
0086 end
0087
0088
0089 if cluster,
0090 error('Not cool, broke it!');
0091 sset=gplus(sset);
0092 fset=gplus(fset);
0093 end
0094
0095
0096
0097
0098 pos=find(mset);
0099 fset(pos)=0;
0100 sset(pos)=0;
0101 nset(pos)=0;
0102
0103 gridset.pv_m=pos;
0104 gridset.msize=length(pos);
0105
0106 pos=find(nset);
0107 gridset.pv_n=pos;
0108 gridset.nsize=length(pos);
0109
0110
0111
0112 n_sset=sset(gridset.pv_n);
0113 n_fset=fset(gridset.pv_n);
0114
0115 pos=find(n_sset);
0116 gridset.pv_s=pos;
0117 gridset.ssize=length(pos);
0118
0119 pos=find(n_fset);
0120 gridset.pv_f=pos;
0121 gridset.fsize=length(pos);
0122
0123
0124 gridset.gsize=gridset.msize+gridset.nsize;
0125
0126
0127
0128 end