XSecJetPath GetNewJetArrayFeedrates(double measureWidth, string directory, string timeCode) { path.AdjustFeedrates(profile.AsCartData(), startProf.AsCartData(), targetProf.AsCartData(), measureWidth); string filename = directory + "pathlist" + timeCode + ".csv"; FileIOLib.FileIO.Save(path.AsCSVFile(filename, ""), filename); var jetArray = new XSecJetPath(jet, path, parameters.MeshSize, parameters.RemovalRate.NominalSurfaceSpeed); return(jetArray); }
void RunPath(CancellationToken ct, IProgress <int> progress, XSecJetPath jetArr, Vector2 gridOrigin, double gridWidth, double averagingWindow, double mrr, double critAngle) { try { double curvatureSearchWindow = .014; int run = 0; profile = new XSection(startProf); while (run < parameters.RunTotal && !ct.IsCancellationRequested) { //index acroos jet path locations in jet path array for (int pathIndex = 0; pathIndex < jetArr.PathCount; pathIndex++) { //index across jet locations in jet-path array var tempProf = new XSection(gridOrigin, gridWidth, parameters.MeshSize); for (int jetLocIndex = 0; jetLocIndex < jetArr.JetCount; jetLocIndex++) { var jetRay = jetArr.GetJetRay(pathIndex, jetLocIndex); double x = jetRay.Origin.X; var profileNormal = profile.GetNormalAngle(x, averagingWindow); var angleEffect = AngleEffect(profileNormal, critAngle); var curvatureEffect = parameters.CurvatureEffect.Factor(profile.GetCurvature(x, curvatureSearchWindow)); double materialRemoved = mrr * jetRay.Length * angleEffect * curvatureEffect; tempProf.SetValue(materialRemoved, x); } tempProf.Smooth(jet.Radius); profile.AddProfile(tempProf); profile.Smooth(jet.Radius); } int p = (int)(100 * currentModelRun++ / totalModelRuns); progress.Report(p); run++; } } catch (Exception) { throw; } }
public void Run(CancellationToken ct, IProgress <int> progress, int innerIterations, int outerIterations) { try { var meshSize = parameters.MeshSize; var gridOrigin = profile.Origin; var gridWidth = profile.Width; var jetArr = new XSecJetPath(jet, path, parameters.MeshSize, parameters.RemovalRate.NominalSurfaceSpeed); var baseMrr = parameters.RemovalRate.DepthPerPass; var mrr = baseMrr; var averagingWindow = parameters.SmoothingWindowWidth; var critAngle = parameters.Material.CriticalRemovalAngle; int outerIterator = 0; int innerIterator = 0; totalModelRuns = outerIterations * innerIterations * parameters.RunTotal; currentModelRun = 0; var depthInfo = new DepthInfo(parameters.DepthInfo); while (outerIterator < outerIterations) { mrr = baseMrr; innerIterator = 0; while (innerIterator < innerIterations) { RunPath(ct, progress, jetArr, gridOrigin, gridWidth, averagingWindow, mrr, critAngle); depthInfo = GetNewDepthInfo(depthInfo); mrr = GetNewMrr(mrr, depthInfo); } } } catch { throw; } }