Changeset 24865


Ignore:
Timestamp:
05/15/20 20:29:39 (5 years ago)
Author:
Eric.Larour
Message:

CHG: added NoBoundaryRefinemenet capability to not refine internal subdomain boundaries. Added NoBoundaryRefinementAllBoundaries which is the old behaviour now.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/mesh/bamg.m

    r22915 r24865  
    2626%                         1 -> use Green formula
    2727%   - KeepVertices :      try to keep initial vertices when adaptation is done on an existing mesh (default 1)
    28 %   - NoBoundaryRefinment: do not refine boundary, only follow contour provided (default 0)
     28%   - NoBoundaryRefinement: do not refine boundary, only follow contour provided (default 0). Allow subdomain boundary refinement though.
     29%   - NoBoundaryRefinementAllBoundaries: do not refine boundary, only follow contour provided (default 0)
    2930%   - maxnbv :            maximum number of vertices used to allocate memory (default is 10^6)
    3031%   - maxsubdiv :         maximum subdivision of exisiting elements (default is 10)
     
    155156                end
    156157
     158                %Flag how many edges we have so far:
     159                edge_length=length(bamg_geometry.Edges);
     160
    157161                %Add all points to bamg_geometry
    158162                bamg_geometry.Vertices=[bamg_geometry.Vertices; [domain(i).x(1:nods) domain(i).y(1:nods) ones(nods,1)]];
    159163                bamg_geometry.Edges   =[bamg_geometry.Edges;    [transpose(count+1:count+nods) transpose([count+2:count+nods count+1])  1*ones(nods,1)]];
     164
     165                %Flag how many edges we have now, that way we know which edges belong to the domain, will
     166                %be used later for required edges when NoBoundaryRefinement is one:
     167                new_edge_length=length(bamg_geometry.Edges);
     168                edges_required=(edge_length+1):new_edge_length;
     169
    160170                if i>1,
    161171                        bamg_geometry.SubDomains=[bamg_geometry.SubDomains; 2 count+1 1 -subdomain_ref]; subdomain_ref = subdomain_ref+1;
     
    216226                bamg_geometry.Vertices=[bamg_geometry.Vertices; [subdomains(i).x(1:nods) subdomains(i).y(1:nods) ones(nods,1)]];
    217227                bamg_geometry.Edges   =[bamg_geometry.Edges;    [transpose(count+1:count+nods) transpose([count+2:count+nods count+1])  1.*ones(nods,1)]];
     228               
    218229                bamg_geometry.SubDomains=[bamg_geometry.SubDomains; 2 count+1 1 subdomain_ref]; subdomain_ref = subdomain_ref+1;
    219 
     230               
    220231                %update counter
    221232                count=count+nods;
     
    404415
    405416        %Deal with RequiredEdges
    406         if getfieldvalue(options,'NoBoundaryRefinment',0)==1,
     417        if getfieldvalue(options,'NoBoundaryRefinement',0)==1,
     418                bamg_geometry.RequiredEdges=edges_required';
     419        elseif getfieldvalue(options,'NoBoundaryRefinementAllBoundaries',0)==1,
    407420                bamg_geometry.RequiredEdges=[1:size(bamg_geometry.Edges,1)]';
    408421        end
Note: See TracChangeset for help on using the changeset viewer.