1 | function projection_value=project2d(md3d,value,layer)
|
---|
2 | %PROJECT2D - returns the value of a field for a given layer of the mesh
|
---|
3 | %
|
---|
4 | % project 'value' vector taken at layer 'layer' from extruded 2d-3d mesh onto 2d mesh
|
---|
5 | % used to do the extrusion. This routine is used to compare values between a 2d-3d mesh
|
---|
6 | % at a certain layer, and the equivalent value (if it exists), on the original 2d mesh.
|
---|
7 | % This routine relies heavily on projections (contained in 3d model md) recored during
|
---|
8 | % the extrude operation.
|
---|
9 | %
|
---|
10 | % Usage:
|
---|
11 | % projection_value=project2d(md3d,value,layer)
|
---|
12 | %
|
---|
13 | % Example:
|
---|
14 | % vel2=project2d(md3d,md3d.vel,2);
|
---|
15 |
|
---|
16 | %some checks on list of arguments
|
---|
17 | if ((nargin~=3) ),
|
---|
18 | help project2d
|
---|
19 | error('project2d error message');
|
---|
20 | end
|
---|
21 |
|
---|
22 | if md3d.counter<4,
|
---|
23 | error('this model has not been extruded! ... exiting');
|
---|
24 | end
|
---|
25 |
|
---|
26 | if (md3d.dim~=3),
|
---|
27 | error('wrong model type ... should be ''3d''');
|
---|
28 | end
|
---|
29 |
|
---|
30 | if ((layer<1) | (layer>md3d.numlayers)),
|
---|
31 | error(['layer must be between 1 and ' num2str(md3d.numlayers)]);
|
---|
32 | end
|
---|
33 |
|
---|
34 | if size(value,1)==md3d.numberofnodes,
|
---|
35 | projection_value=value((layer-1)*md3d.numberofnodes2d+1:layer*md3d.numberofnodes2d,:);
|
---|
36 | elseif size(value,1)==md3d.numberofnodes+1,
|
---|
37 | projection_value=[value((layer-1)*md3d.numberofnodes2d+1:layer*md3d.numberofnodes2d,:); value(end,:)];
|
---|
38 | else
|
---|
39 | projection_value=value((layer-1)*md3d.numberofelements2d+1:layer*md3d.numberofelements2d,:);
|
---|
40 | end
|
---|