254int CSimulation::nDoCliffCollapse(
int const nCoast,
CRWCliff* pCliff,
double& dFineCollapse,
double& dSandCollapse,
double& dCoarseCollapse,
double& dPreCollapseCliffElev,
double& dPostCollapseCliffElev)
261 int const nPoly =
m_pRasterGrid->m_Cell[nX][nY].nGetPolygonID();
273 double const dOrigCliffTopElev =
m_pRasterGrid->m_Cell[nX][nY].dGetSedimentTopElev();
279 int const nNotchLayer =
m_pRasterGrid->m_Cell[nX][nY].nGetLayerAtElev(dNotchElev);
284 LogStream <<
m_ulIter <<
": " <<
WARN <<
"in nDoCliffCollapse(), [" << nX <<
"][" << nY <<
"] nNotchLayer is in basement" << endl;
289 LogStream <<
m_ulIter <<
": " <<
WARN <<
"in nDoCliffCollapse(), [" << nX <<
"][" << nY <<
"] has nNotchLayer above sediment top" << endl;
292 else if (nNotchLayer < 0)
301 int const nTopLayer =
m_pRasterGrid->m_Cell[nX][nY].nGetTopLayerAboveBasement();
306 LogStream <<
m_ulIter <<
": " <<
WARN <<
"in nDoCliffCollapse(), [" << nX <<
"][" << nY <<
"] nTopLayer = " << nTopLayer << endl;
319 dPreCollapseCliffElev =
m_pRasterGrid->m_Cell[nX][nY].dGetSedimentTopElev();
322 double dAvailable = 0;
323 double dFineConsLost = 0;
324 double dFineUnconsLost = 0;
325 double dSandConsLost = 0;
326 double dSandUnconsLost = 0;
327 double dCoarseConsLost = 0;
328 double dCoarseUnconsLost = 0;
331 for (
int n = nTopLayer; n > nNotchLayer; n--)
334 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetFineDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetNotchFineLost();
338 dFineCollapse += dAvailable;
339 dFineUnconsLost += dAvailable;
340 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetFineDepth(0);
341 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetNotchFineLost(0);
344 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetSandDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetNotchSandLost();
348 dSandCollapse += dAvailable;
349 dSandUnconsLost += dAvailable;
350 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetSandDepth(0);
351 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetNotchSandLost(0);
354 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetCoarseDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetNotchCoarseLost();
358 dCoarseCollapse += dAvailable;
359 dCoarseUnconsLost += dAvailable;
360 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetCoarseDepth(0);
361 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetNotchCoarseLost(0);
365 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetFineDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetNotchFineLost();
369 dFineCollapse += dAvailable;
370 dFineConsLost += dAvailable;
371 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetFineDepth(0);
372 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetNotchFineLost(0);
375 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetSandDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetNotchSandLost();
379 dSandCollapse += dAvailable;
380 dSandConsLost += dAvailable;
381 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetSandDepth(0);
382 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetNotchSandLost(0);
385 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetCoarseDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetNotchCoarseLost();
389 dCoarseCollapse += dAvailable;
390 dCoarseConsLost += dAvailable;
391 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetCoarseDepth(0);
392 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetNotchCoarseLost(0);
397 double const dNotchLayerTop =
m_pRasterGrid->m_Cell[nX][nY].dCalcLayerElev(nNotchLayer);
398 double const dNotchLayerThickness =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->dGetTotalThickness();
399 double const dNotchLayerFracRemoved = (dNotchLayerTop - dNotchElev) / dNotchLayerThickness;
402 double dFineDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetFineDepth();
403 dAvailable = dFineDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetNotchFineLost();
408 double const dLost = dAvailable * dNotchLayerFracRemoved;
409 dFineCollapse += dLost;
410 dFineUnconsLost += dLost;
411 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetFineDepth(dFineDepth - dLost);
412 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetNotchFineLost(0);
415 double dSandDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetSandDepth();
416 dAvailable = dSandDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetNotchSandLost();
421 double const dLost = dAvailable * dNotchLayerFracRemoved;
422 dSandCollapse += dLost;
423 dSandUnconsLost += dLost;
424 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetSandDepth(dSandDepth - dLost);
425 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetNotchSandLost(0);
428 double dCoarseDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetCoarseDepth();
429 dAvailable = dCoarseDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetNotchCoarseLost();
434 double const dLost = dAvailable * dNotchLayerFracRemoved;
435 dCoarseCollapse += dLost;
436 dCoarseUnconsLost += dLost;
437 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetCoarseDepth(dCoarseDepth - dLost);
438 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetNotchCoarseLost(0);
442 dFineDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetFineDepth();
443 dAvailable = dFineDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetNotchFineLost();
448 double const dLost = dAvailable * dNotchLayerFracRemoved;
449 dFineCollapse += dLost;
450 dFineConsLost += dLost;
451 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetFineDepth(dFineDepth - dLost);
452 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetNotchFineLost(0);
455 dSandDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetSandDepth();
456 dAvailable = dSandDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetNotchSandLost();
461 double const dLost = dAvailable * dNotchLayerFracRemoved;
462 dSandCollapse += dLost;
463 dSandConsLost += dLost;
464 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetSandDepth(dSandDepth - dLost);
465 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetNotchSandLost(0);
468 dCoarseDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetCoarseDepth();
469 dAvailable = dCoarseDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetNotchCoarseLost();
474 double const dLost = dAvailable * dNotchLayerFracRemoved;
475 dCoarseCollapse += dLost;
476 dCoarseConsLost += dLost;
477 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetCoarseDepth(dCoarseDepth - dLost);
478 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetNotchCoarseLost(0);
482 m_pRasterGrid->m_Cell[nX][nY].IncrCliffCollapseErosion(dFineCollapse, dSandCollapse, dCoarseCollapse);
488 dPostCollapseCliffElev =
m_pRasterGrid->m_Cell[nX][nY].dGetSedimentTopElev();
491 LogStream <<
m_ulIter <<
": cliff collapse at [" << nX <<
"][" << nY <<
"], original cliff elevation = " << dOrigCliffTopElev <<
", new cliff elevation = " << dPostCollapseCliffElev <<
", change in elevation = " << dOrigCliffTopElev - dPostCollapseCliffElev << endl;
536 int const nCoastSize =
m_VCoast[nCoast].nGetCoastlineSize();
543 int const nPoly =
m_pRasterGrid->m_Cell[nXCliff][nYCliff].nGetPolygonID();
559 if ((nTalusWidthInCells % 2) == 0)
560 nTalusWidthInCells++;
563 vector<int> VnTalusProfileCoastStartPoint(nCoastSize);
566 VnTalusProfileCoastStartPoint[0] = nStartPoint;
575 if ((nCount % 2) != 0)
576 nTmpPoint = nStartPoint + nSigned;
580 nTmpPoint = nStartPoint - nSigned;
585 if ((nTmpPoint < 0) || (nTmpPoint > (nCoastSize - 1)))
595 VnTalusProfileCoastStartPoint[nn] = nTmpPoint;
599 }
while (nn < nCoastSize);
601 bool bHitFirstCoastPoint =
false;
602 bool bHitLastCoastPoint =
false;
604 double dTotSandToDepositAllProfiles = dSandFromCollapse;
605 double dTotCoarseToDepositAllProfiles = dCoarseFromCollapse;
606 double dTotSandDepositedAllProfiles = 0;
607 double dTotCoarseDepositedAllProfiles = 0;
610 for (
int nAcross = 0; nAcross < nCoastSize; nAcross++)
612 bool bDoSandDepositionOnThisProfile =
false;
613 bool bSandDepositionCompletedOnThisProfile =
false;
614 bool bDoCoarseDepositionOnThisProfile =
false;
615 bool bCoarseDepositionCompletedOnThisProfile =
false;
623 double dTargetSandToDepositOnThisProfile = dTotSandToDepositAllProfiles / nTalusWidthInCells;
624 double dTargetCoarseToDepositOnThisProfile = dTotCoarseToDepositAllProfiles / nTalusWidthInCells;
629 double dSandProp = 0.5;
630 double dCoarseProp = 1 - dSandProp;
632 if (dTargetSandToDepositOnThisProfile + dTargetCoarseToDepositOnThisProfile > 0)
634 dSandProp = dTargetSandToDepositOnThisProfile / (dTargetSandToDepositOnThisProfile + dTargetCoarseToDepositOnThisProfile);
635 dCoarseProp = 1 - dSandProp;
638 double dSandDepositedOnThisProfile = 0;
639 double dCoarseDepositedOnThisProfile = 0;
641 if (dTotSandToDepositAllProfiles > 0)
643 bDoSandDepositionOnThisProfile =
true;
646 bSandDepositionCompletedOnThisProfile =
true;
650 bSandDepositionCompletedOnThisProfile =
true;
652 if (dTotCoarseToDepositAllProfiles > 0)
654 bDoCoarseDepositionOnThisProfile =
true;
657 bCoarseDepositionCompletedOnThisProfile =
true;
661 bCoarseDepositionCompletedOnThisProfile =
true;
663 if (bSandDepositionCompletedOnThisProfile && bCoarseDepositionCompletedOnThisProfile)
671 int const nThisPoint = VnTalusProfileCoastStartPoint[nAcross];
675 bHitFirstCoastPoint =
true;
677 if (nThisPoint == nCoastSize - 1)
678 bHitLastCoastPoint =
true;
690 bool bJustDepositWhatWeCan =
false;
693 int nSeawardOffset = 1;
698 if (bJustDepositWhatWeCan || (bSandDepositionCompletedOnThisProfile && bCoarseDepositionCompletedOnThisProfile))
712 if (dCliffHeightFrac < 1)
726 bJustDepositWhatWeCan =
true;
738 dCliffHeightFrac = 1;
743 if (bHitFirstCoastPoint && bHitLastCoastPoint)
746 LogStream <<
m_ulIter <<
": unable to deposit sufficient unconsolidated talus from cliff collapse at [" << nXCliff <<
"][" << nYCliff <<
"] nStartPoint = " << nStartPoint <<
" nThisPoint = " << nThisPoint << endl
747 <<
"\tnSeawardOffset = " << nSeawardOffset <<
" dCliffHeightFrac = " << dCliffHeightFrac <<
" nAcross = " << nAcross << endl
748 <<
"\tdTargetSandToDepositOnThisProfile = " << dTargetSandToDepositOnThisProfile <<
" dSandDepositedOnThisProfile = " << dSandDepositedOnThisProfile <<
" dTotSandToDepositAllProfiles = " << dTotSandToDepositAllProfiles <<
" dTotSandDepositedAllProfiles = " << dTotSandDepositedAllProfiles << endl
749 <<
"\tdTargetCoarseToDepositOnThisProfile = " << dTargetCoarseToDepositOnThisProfile <<
" dCoarseDepositedOnThisProfile = " << dCoarseDepositedOnThisProfile <<
" dTotCoarseToDepositAllProfiles = " << dTotCoarseToDepositAllProfiles <<
" dTotCoarseDepositedAllProfiles = " << dTotCoarseDepositedAllProfiles << endl;
755 double const dThisProfileLength = (nTalusProfileLenInCells + nSeawardOffset + 1) *
m_dCellSide;
759 int const nRtn =
nGetCoastNormalEndPoint(nCoast, nThisPoint, nCoastSize, &PtStart, dThisProfileLength, &PtEnd, &PtiEnd,
false);
764 LogStream <<
m_ulIter <<
": unable to deposit sufficient unconsolidated talus from cliff collapse, could not find a solution for the end point of the Dean profile" << endl;
770 if (PtStart == PtEnd)
779 vector<CGeom2DPoint> VTmpProfile;
780 VTmpProfile.push_back(PtStart);
781 VTmpProfile.push_back(PtEnd);
782 vector<CGeom2DIPoint> VCellsUnderProfile;
787 int const nRasterProfileLength =
static_cast<int>(VCellsUnderProfile.size());
790 if (nRasterProfileLength - nSeawardOffset < 3)
796 else if (nRasterProfileLength - nSeawardOffset == 3)
799 bJustDepositWhatWeCan =
true;
802 vector<double> dVProfileNow(nRasterProfileLength, 0);
803 vector<bool> bVProfileValid(nRasterProfileLength,
true);
808 for (
int n = 0; n < nRasterProfileLength; n++)
810 int const nX = VCellsUnderProfile[n].nGetX();
811 int const nY = VCellsUnderProfile[n].nGetY();
813 dVProfileNow[n] =
m_pRasterGrid->m_Cell[nX][nY].dGetSedimentTopElev();
817 bVProfileValid[n] =
false;
821 double const dCliffHeight = dPreCollapseCliffElev - dPostCollapseCliffElev;
822 double const dTalusTopElev = dPostCollapseCliffElev + (dCliffHeight * dCliffHeightFrac);
830 double const dTalusSlopeLength = dThisProfileLength - ((nSeawardOffset - 1) *
m_dCellSide);
839 dA = (dTalusTopElev - dVProfileNow[nRasterProfileLength - 1]) / pow(dTalusSlopeLength,
DEAN_POWER);
842 double const dInc = dTalusSlopeLength / (nRasterProfileLength - nSeawardOffset - 2);
843 vector<double> dVDeanProfile(nRasterProfileLength);
846 CalcDeanProfile(&dVDeanProfile, dInc, dTalusTopElev, dA,
true, nSeawardOffset, dTalusTopElev);
849 double const dTotElevDiff =
dSubtractProfiles(&dVDeanProfile, &dVProfileNow, &bVProfileValid);
880 if (!bJustDepositWhatWeCan && (dTotElevDiff < (dTargetSandToDepositOnThisProfile + dTargetCoarseToDepositOnThisProfile)))
889 for (
int n = 0; n < nRasterProfileLength; n++)
892 if (bDoSandDepositionOnThisProfile)
895 bSandDepositionCompletedOnThisProfile =
true;
898 bSandDepositionCompletedOnThisProfile =
false;
902 if (bDoCoarseDepositionOnThisProfile)
905 bCoarseDepositionCompletedOnThisProfile =
true;
908 bCoarseDepositionCompletedOnThisProfile =
false;
912 if (bSandDepositionCompletedOnThisProfile && bCoarseDepositionCompletedOnThisProfile)
920 int const nX = VCellsUnderProfile[n].nGetX();
921 int const nY = VCellsUnderProfile[n].nGetY();
927 int const nTopLayer =
m_pRasterGrid->m_Cell[nX][nY].nGetTopNonZeroLayerAboveBasement();
936 cerr <<
"All layers have zero thickness" << endl;
941 if (dVDeanProfile[n] > dVProfileNow[n])
944 double dSandToDeposit = 0;
946 if (bDoSandDepositionOnThisProfile)
948 dSandToDeposit = (dVDeanProfile[n] - dVProfileNow[n]) * dSandProp;
949 dSandToDeposit =
tMin(dSandToDeposit, (dTargetSandToDepositOnThisProfile - dSandDepositedOnThisProfile), (dTotSandToDepositAllProfiles - dTotSandDepositedAllProfiles));
951 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->AddSandDepth(dSandToDeposit);
956 dSandDepositedOnThisProfile += dSandToDeposit;
957 dTotSandDepositedAllProfiles += dSandToDeposit;
960 double dCoarseToDeposit = 0;
962 if (bDoCoarseDepositionOnThisProfile)
964 dCoarseToDeposit = (dVDeanProfile[n] - dVProfileNow[n]) * dCoarseProp;
965 dCoarseToDeposit =
tMin(dCoarseToDeposit, (dTargetCoarseToDepositOnThisProfile - dCoarseDepositedOnThisProfile), (dTotCoarseToDepositAllProfiles - dTotCoarseDepositedAllProfiles));
967 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->AddCoarseDepth(dCoarseToDeposit);
972 dCoarseDepositedOnThisProfile += dCoarseToDeposit;
973 dTotCoarseDepositedAllProfiles += dCoarseToDeposit;
983 m_pRasterGrid->m_Cell[nX][nY].AddSandTalusDeposition(dSandToDeposit);
984 m_pRasterGrid->m_Cell[nX][nY].AddCoarseTalusDeposition(dCoarseToDeposit);
994 else if (dVDeanProfile[n] < dVProfileNow[n])
997 double const dThisLowering = dVProfileNow[n] - dVDeanProfile[n];
1000 double const dExistingAvailableFine =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->dGetFineDepth();
1001 double const dExistingAvailableSand =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->dGetSandDepth();
1002 double const dExistingAvailableCoarse =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->dGetCoarseDepth();
1005 int const nFineWeight = (dExistingAvailableFine > 0 ? 1 : 0);
1006 int const nSandWeight = (dExistingAvailableSand > 0 ? 1 : 0);
1007 int const nCoarseWeight = (dExistingAvailableCoarse > 0 ? 1 : 0);
1017 double const dFine =
tMin(dExistingAvailableFine, dFineLowering);
1018 double const dRemaining = dExistingAvailableFine - dFine;
1021 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->SetFineDepth(dRemaining);
1041 double const dSandToErode =
tMin(dExistingAvailableSand, dSandLowering);
1042 double const dRemaining = dExistingAvailableSand - dSandToErode;
1045 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->SetSandDepth(dRemaining);
1054 dTargetSandToDepositOnThisProfile += dSandToErode;
1055 dTotSandToDepositAllProfiles += dSandToErode;
1069 double const dCoarseToErode =
tMin(dExistingAvailableCoarse, dCoarseLowering);
1070 double const dRemaining = dExistingAvailableCoarse - dCoarseToErode;
1073 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->SetCoarseDepth(dRemaining);
1082 dTargetCoarseToDepositOnThisProfile += dCoarseToErode;
1083 dTotCoarseToDepositAllProfiles += dCoarseToErode;
1106 if (bDoSandDepositionOnThisProfile)
1109 bSandDepositionCompletedOnThisProfile =
true;
1112 if (bDoCoarseDepositionOnThisProfile)
1115 bCoarseDepositionCompletedOnThisProfile =
true;
1118 if (bSandDepositionCompletedOnThisProfile && bCoarseDepositionCompletedOnThisProfile)
1126 LogStream <<
ERR <<
m_ulIter <<
": non-zero dTotSandToDepositAllProfiles = " << dTotSandToDepositAllProfiles << endl;
1130 LogStream <<
ERR <<
m_ulIter <<
": non-zero dTotCoarseToDepositAllProfiles = " << dTotCoarseToDepositAllProfiles << endl;