Changeset 24318


Ignore:
Timestamp:
11/05/19 14:41:19 (5 years ago)
Author:
tsantos
Message:

BUG: fixed level set initialization for 3d meshes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/parameterization/reinitializelevelset.m

    r22452 r24318  
    55%      levelsetnew = reinitializelevelset(md,levelset)
    66
     7% if md is 3d, levelset should be projected on a 2d mesh
     8
     9if isempty(levelset), error('levelset provided is empty'); end
     10if dimension(md.mesh)==3,
     11   if length(levelset)~=md.mesh.numberofvertices2d, error('levelset provided should be specified at the 2d vertices of the mesh'); end
     12else
     13   if length(levelset)~=md.mesh.numberofvertices, error('levelset provided should be specified at the vertices of the mesh'); end
     14end
    715
    816%First: extract segments
     
    1018
    1119%Now, make this a distance field (might not be closed)
    12 levelsetnew=abs(ExpToLevelSet(md.mesh.x,md.mesh.y,contours));
     20levelsetnew=abs(ExpToLevelSet(md.mesh.x,md.mesh.y,contours)); % levelsetnew comes on the 3d vertices, if mesh is 3d
    1321
    1422%Finally, change sign
    15 pos = find(levelset<0);
    16 levelsetnew(pos) = -levelsetnew(pos);
     23pos=find(levelset<0); % if mesh is 3d, it refers to the vertices on the base
     24if dimension(md.mesh)==3
     25        for i=1:md.mesh.numberoflayers
     26                pos3d=pos+(i-1)*md.mesh.numberofvertices2d;
     27                levelsetnew(pos3d)=-levelsetnew(pos3d);
     28        end     
     29else
     30        levelsetnew(pos)=-levelsetnew(pos);
     31end
Note: See TracChangeset for help on using the changeset viewer.