[2824] | 1 | function projection_value=project2d(md3d,value,layer)
|
---|
[1] | 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:
|
---|
[2824] | 11 | % projection_value=project2d(md3d,value,layer)
|
---|
[1] | 12 | %
|
---|
| 13 | % Example:
|
---|
[2824] | 14 | % vel2=project2d(md3d,md3d.vel,2);
|
---|
[1] | 15 |
|
---|
| 16 | %some checks on list of arguments
|
---|
| 17 | if ((nargin~=3) ),
|
---|
[2687] | 18 | help project2d
|
---|
[1] | 19 | error('project2d error message');
|
---|
| 20 | end
|
---|
| 21 |
|
---|
[2824] | 22 | if md3d.counter<4,
|
---|
[1] | 23 | error('this model has not been extruded! ... exiting');
|
---|
| 24 | end
|
---|
| 25 |
|
---|
[4642] | 26 | if (md3d.dim~=3),
|
---|
[1] | 27 | error('wrong model type ... should be ''3d''');
|
---|
| 28 | end
|
---|
| 29 |
|
---|
[2824] | 30 | if ((layer<1) | (layer>md3d.numlayers)),
|
---|
| 31 | error(['layer must be between 1 and ' num2str(md3d.numlayers)]);
|
---|
[1] | 32 | end
|
---|
| 33 |
|
---|
[8298] | 34 | if size(value,1)==md3d.numberofnodes,
|
---|
| 35 | projection_value=value((layer-1)*md3d.numberofnodes2d+1:layer*md3d.numberofnodes2d,:);
|
---|
[9528] | 36 | elseif size(value,1)==md3d.numberofnodes+1,
|
---|
| 37 | projection_value=[value((layer-1)*md3d.numberofnodes2d+1:layer*md3d.numberofnodes2d,:); value(end,:)];
|
---|
[1] | 38 | else
|
---|
[2824] | 39 | projection_value=value((layer-1)*md3d.numberofelements2d+1:layer*md3d.numberofelements2d,:);
|
---|
[1] | 40 | end
|
---|