Ignore:
Timestamp:
02/15/24 05:57:29 (13 months ago)
Author:
Mathieu Morlighem
Message:

NEW: speedup isoline if edges are provided (and return edges optionally)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/m/exp/isoline.m

    r28028 r28100  
    1 function contours=isoline(md,field,varargin)
     1function [contours edges_tria]=isoline(md,field,varargin)
    22%ISOLINE - construct isovalue lines based on field provided
    33%
    44%   Usage:
    5 %      contours=isoline(md,field,varargin)
     5%      [contours edges]=isoline(md,field,varargin)
    66%
    77%   Supported options:
     
    1010%                'matrix' contours are concatenated and separated by NaNs
    1111%                'filename.exp' saved as exp file
     12%      'edges': if edges are returned (as a second output) after a first call
     13%               they can be provided again so that isoline does not need to
     14%               recreate a set of edges
    1215%
    1316%   Example:
     
    6467h=[];
    6568
    66 %get unique edges in mesh
    67 %1: list of edges
    68 edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
    69 %2: find unique edges
    70 [edges,I,J]=unique(sort(edges,2),'rows');
    71 %3: unique edge numbers
    72 vec=J;
    73 %4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
    74 %   the same edge number)
    75 edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
     69if exist(options,'edges')
     70        edges_tria = getfieldvalue(options, 'edges');
     71else
     72        %get unique edges in mesh
     73        %1: list of edges
     74        edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
     75        %2: find unique edges
     76        [edges,I,J]=unique(sort(edges,2),'rows');
     77        %3: unique edge numbers
     78        vec=J;
     79        %4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
     80        %   the same edge number)
     81        edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
     82end
    7683
    7784%segments [nodes1 nodes2]
Note: See TracChangeset for help on using the changeset viewer.