Changeset 25619
- Timestamp:
- 10/01/20 12:57:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/mesh/bamg.m
r25455 r25619 364 364 %Deal with tracks 365 365 if exist(options,'tracks'), 366 367 366 %read tracks 368 track=getfieldvalue(options,'tracks'); 369 if all(ischar(track)), 370 A=expread(track); 371 track=[]; 372 for i=1:length(A), 373 track=[track; [A(i).x A(i).y]]; 374 end 375 else 376 track=double(track); %for some reason, it is of class "single" 377 end 367 intrack=getfieldvalue(options,'tracks'); 368 if all(ischar(intrack)), 369 intrack=expread(intrack); 370 else 371 intrack=double(intrack); %for some reason, it is of class "single" 372 intrack=struct('x',intrack(:,1),'y',intrack(:,2)); 373 intrack=repmat(intrack, [1,1]); 374 end 375 376 %Process multiple tracks and handle domain intersections 377 track=[]; 378 edges=[]; 379 newcount=count; 380 for i=1:length(intrack), 381 nods=size(intrack(i).x,1); 382 newtrack=[intrack(i).x intrack(i).y]; 383 newedges=[transpose(newcount+1:newcount+nods-1) transpose(newcount+2:newcount+nods) 3.*ones(nods-1,1)]; 384 385 %only keep those inside 386 flags=ContourToNodes(newtrack(:,1),newtrack(:,2),domainfile,0); 387 edgeflags = flags(1:end-1) & flags(2:end); 388 389 %calculate edge offset, accounting for broken tracks 390 offsets=zeros(size(edgeflags,1)+1,3); 391 for j=2:size(offsets,1), 392 if edgeflags(j-1)==0, 393 offsets(j,:)=offsets(j-1,:)+[1 1 0]; 394 else 395 offsets(j,:)=offsets(j-1,:); 396 end 397 end 398 newedges=newedges-offsets(2:end,:); 399 400 %add track segments 401 newtrack=newtrack(find(flags),:); 402 newedges=newedges(find(edgeflags),:); 403 nods=size(newtrack,1); 404 track=[track; newtrack]; 405 edges=[edges; newedges]; 406 newcount=newcount+nods; 407 end 378 408 if(size(track,2)==2), track=[track 3.*ones(size(track,1),1)]; end 379 380 %only keep those inside 381 flags=ContourToNodes(track(:,1),track(:,2),domainfile,0); 382 track=track(find(flags),:); 383 409 384 410 %Add all points to bamg_geometry 385 411 nods=size(track,1); 386 412 bamg_geometry.Vertices=[bamg_geometry.Vertices; track]; 387 bamg_geometry.Edges=[bamg_geometry.Edges; [transpose(count+1:count+nods-1) transpose(count+2:count+nods) 3.*ones(nods-1,1)]];413 bamg_geometry.Edges=[bamg_geometry.Edges; edges]; 388 414 389 415 %update counter
Note:
See TracChangeset
for help on using the changeset viewer.