CollapseModel.cpp
Go to the documentation of this file.00001 #include "CollapseModel.h"
00002 #include "FatalException.h"
00003 #include "NumUtil.h"
00004
00005 namespace gplib
00006 {
00007 void CollapseModel(ttranscribed &Thickness, ttranscribed &ParmValue)
00008 {
00009 std::vector<double> CollThick, CollValue;
00010 const unsigned int size = Thickness.size();
00011 if (size != ParmValue.size())
00012 throw FatalException(
00013 "Cannot collapse model with differing number of depths and parameter values !");
00014 unsigned int index = 0;
00015 for (; index < size - 1; ++index)
00016 {
00017
00018
00019
00020 if ((fcmp(ParmValue(index), ParmValue(index + 1),
00021 std::numeric_limits<double>::epsilon()) == 0) && ((Thickness(index) + Thickness(index
00022 + 1)) < 100.0))
00023 {
00024 CollValue.push_back(ParmValue(index));
00025 CollThick.push_back(Thickness(index) + Thickness(index + 1));
00026 ++index;
00027 }
00028 else
00029 {
00030 CollThick.push_back(Thickness(index));
00031 CollValue.push_back(ParmValue(index));
00032 }
00033 }
00034 if (index == size - 1)
00035 {
00036 CollThick.push_back(Thickness(index));
00037 CollValue.push_back(ParmValue(index));
00038 }
00039 Thickness.resize(CollThick.size());
00040 ParmValue.resize(CollValue.size());
00041 copy(CollThick.begin(), CollThick.end(), Thickness.begin());
00042 copy(CollValue.begin(), CollValue.end(), ParmValue.begin());
00043 }
00044 }