Commit 8c8ad84b authored by Davide Baroli's avatar Davide Baroli
Browse files

assert on dim of Lines; assert of ringNodes; bug fix on NormFunction if it is...

assert on dim of Lines; assert of ringNodes; bug fix on NormFunction if it is modify the type from user or the NormFunction itself
parent 1d5b2cb3
......@@ -59,11 +59,22 @@ classdef MgGeoArea4LineEllipsoidalVoid < mgen.MgGeoArea4Line
%fig = figure(1); subplot('Position',[0.05 0.05 0.90 0.90]); axis equal; hold on;
gnv = gridnodes;
for kk = 1:4
if self.geoLines(kk).getNumTargetGridNodes() - 1 ==0
warning('increase the number of nodes in the %d line',kk)
end
end
dim0 = self.geoLines(1).getNumTargetGridNodes() - 1;
assert(dim0>0);
dim1 = self.geoLines(2).getNumTargetGridNodes() - 1;
assert(dim1>0);
dim2 = self.geoLines(3).getNumTargetGridNodes() - 1;
assert(dim2>0);
dim3 = self.geoLines(4).getNumTargetGridNodes() - 1;
assert(dim3>0);
dim = self.nrings*(dim0 + dim1 + dim2 + dim3);
segments = self.nrings - 1;
run_id = 1 + length(gridnodes);
......@@ -95,18 +106,28 @@ classdef MgGeoArea4LineEllipsoidalVoid < mgen.MgGeoArea4Line
% create grid nodes
for mm = segments:-1:1 % loop over segments from outer to inner
% set function values
self.normFunction.vals(1) = segments;
if self.normFunction.vals(2) == 0
% set function values if the normFunction is not set by
% user
if self.normFunction.vals == [0,0]
self.normFunction.vals(1) = segments;
if self.normFunction.vals(2) == 0
self.normFunction.vals(1) = segments;
end
if self.normFunction.vals(1) == 1
self.normFunction.vals(2) = segments;
end
end
if self.normFunction.vals(1) == 1
self.normFunction.vals(2) = segments;
% some bugs occurs if user sets the type of normFunction.
if self.normFunction.vals(1)>self.normFunction.vals(2)
self.normFunction.vals=sort(self.normFunction.vals)
end
scale = self.normFunction.eval( mm/segments );
for gline = self.geoLines % loop over the four GeoLines
if isnan(scale)
warning('normFunction can not eval %d/%d',mm,segments)
end
for gline = self.geoLines % loop over the four GeoLines
for ii = 1:gline.getNumTargetGridNodes - 1 % loop over GridNodes - 1
......@@ -135,10 +156,12 @@ classdef MgGeoArea4LineEllipsoidalVoid < mgen.MgGeoArea4Line
end
end
end
% defensive programming: check if ringNodes is filled.
assert(~isempty(self.ringNodes))
% make sure the ring nodes represent a closed line in terms of node connectivity
self.ringNodes(end+1) = self.ringNodes(1);
% sort in existing nodes
for gline = self.geoLines
for ii = 1:gline.getNumTargetGridNodes - 1
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment