Changeset 9181
- Timestamp:
- 08/04/11 14:19:23 (14 years ago)
- Location:
- issm/trunk/src/m/model
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/model/parameterization/parameterize.m
r8577 r9181 73 73 %Name and notes 74 74 if isempty(md.name), 75 [ a,root,c,d]=fileparts(parametername);75 [path,root,ext]=fileparts(parametername); 76 76 md.name=root; 77 77 end -
issm/trunk/src/m/model/project3d.m
r9002 r9181 1 function projected_vector=project3d(md 3d,varargin);1 function projected_vector=project3d(md,varargin); 2 2 %PROJECT3D - vertically project a vector from 2d mesh 3 3 % 4 4 % vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh. 5 % This vector can be a node vector of size (md 3d.numberofnodes2d,N/A) or an6 % element vector of size (md 3d.numberofelements2d,N/A).5 % This vector can be a node vector of size (md.numberofnodes2d,N/A) or an 6 % element vector of size (md.numberofelements2d,N/A). 7 7 % arguments: 8 8 % 'vector': 2d vector … … 14 14 % 15 15 % Egs: 16 % extruded_vector=project3d(md 3d,'vector',vector2d,'type','node','layer',1,'padding',NaN);17 % extruded_vector=project3d(md 3d,'vector',vector2d,'type','element','padding',0);18 % extruded_vector=project3d(md 3d,'vector',vector2d,'type','node');16 % extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',NaN); 17 % extruded_vector=project3d(md,'vector',vector2d,'type','element','padding',0); 18 % extruded_vector=project3d(md,'vector',vector2d,'type','node'); 19 19 20 20 %some regular checks 21 21 if nargin==0, 22 Project3dUsage; 23 error(); 22 help project3d 23 error('bad usage'); 24 end 25 if md.dim~=3 26 error('input model is not 3d'); 24 27 end 25 28 26 options=pairoptions(varargin{:});27 28 29 %retrieve parameters from options. 29 vector2d=getfieldvalue(options,'vector'); %mandatory 30 type=getfieldvalue(options,'type'); %mandatory 31 layer=getfieldvalue(options,'layer',0); %optional (do all layers otherwise) 32 paddingvalue=getfieldvalue(options,'padding',0); %0 by default 30 options = pairoptions(varargin{:}); 31 vector2d = getfieldvalue(options,'vector'); %mandatory 32 type = getfieldvalue(options,'type'); %mandatory 33 layer = getfieldvalue(options,'layer',0); %optional (do all layers otherwise) 34 paddingvalue = getfieldvalue(options,'padding',0); %0 by default 33 35 34 36 if strcmpi(type,'node'), 35 37 36 projected_vector=paddingvalue*ones(md3d.numberofnodes,size(vector2d,2)); 37 38 %Initialize 3d vector 39 if size(vector2d,1)==md.numberofnodes2d 40 projected_vector=paddingvalue*ones(md.numberofnodes, size(vector2d,2)); 41 elseif size(vector2d,1)==md.numberofnodes2d+1 42 projected_vector=paddingvalue*ones(md.numberofnodes+1,size(vector2d,2)); 43 projected_vector(end,:)=vector2d(end,:); 44 vector2d=vector2d(1:end-1,:); 45 else 46 error('vector length not supported') 47 end 48 49 %Fill in 38 50 if layer==0, 39 for i=1:md 3d.numlayers,40 projected_vector(((i-1)*md 3d.numberofnodes2d+1):(i*md3d.numberofnodes2d),:)=vector2d;51 for i=1:md.numlayers, 52 projected_vector(((i-1)*md.numberofnodes2d+1):(i*md.numberofnodes2d),:)=vector2d; 41 53 end 42 54 else 43 projected_vector(((layer-1)*md 3d.numberofnodes2d+1):(layer*md3d.numberofnodes2d),:)=vector2d;55 projected_vector(((layer-1)*md.numberofnodes2d+1):(layer*md.numberofnodes2d),:)=vector2d; 44 56 end 45 57 elseif strcmpi(type,'element'), 46 58 47 projected_vector=paddingvalue*ones(md3d.numberofelements,size(vector2d,2)); 59 %Initialize 3d vector 60 if size(vector2d,1)==md.numberofelements2d 61 projected_vector=paddingvalue*ones(md.numberofelements, size(vector2d,2)); 62 elseif size(vector2d,1)==md.numberofelements2d+1 63 projected_vector=paddingvalue*ones(md.numberofelements+1,size(vector2d,2)); 64 projected_vector(end,:)=vector2d(end,:); 65 vector2d=vector2d(1:end-1,:); 66 else 67 error('vector length not supported') 68 end 48 69 49 70 if layer==0, 50 for i=1:(md 3d.numlayers-1),51 projected_vector( ((i-1)*md 3d.numberofelements2d+1):(i*md3d.numberofelements2d),:)=vector2d;71 for i=1:(md.numlayers-1), 72 projected_vector( ((i-1)*md.numberofelements2d+1):(i*md.numberofelements2d),:)=vector2d; 52 73 end 53 74 54 75 else 55 projected_vector( ((layer-1)*md 3d.numberofelements2d+1):(layer*md3d.numberofelements2d),:)=vector2d;76 projected_vector( ((layer-1)*md.numberofelements2d+1):(layer*md.numberofelements2d),:)=vector2d; 56 77 end 57 78 else 58 79 error('project3d error message: unknown projection type'); 59 80 end 60 61 function Project3dUsage;62 63 disp('function projected_vector=project3d(md3d,varargin);');64 disp('PROJECT3D - vertically project a vector from 2d mesh...');65 disp('');66 disp(' vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.');67 disp(' This vector can be a node vector of size (md3d.numberofnodes2d,N/A) or an ');68 disp(' element vector of size (md3d.numberofelements2d,N/A). ');69 disp(' arguments: ');70 disp(' ''vector'': 2d vector');71 disp(' ''type'': ''element'' or ''node''. ');72 disp(' options: ');73 disp(' ''layer'' a layer number where vector should keep its values. If not specified, all layers adopt the ');74 disp(' value of the 2d vector.');75 disp(' ''padding'': default to 0 (value adopted by other 3d layers not being projected0');76 disp('');77 disp(' Egs:');78 disp(' extruded_vector=project3d(md3d,''vector'',vector2d,''type'',''node'',''layer'',1,''padding'',NaN);');79 disp(' extruded_vector=project3d(md3d,''vector'',vector2d,''type'',''element'',''padding'',0);');80 disp(' extruded_vector=project3d(md3d,''vector'',vector2d,''type'',''node'');');
Note:
See TracChangeset
for help on using the changeset viewer.