253int CSimulation::nDoCliffCollapse(
int const nCoast,
CRWCliff * pCliff,
double &dFineCollapse,
double &dSandCollapse,
double &dCoarseCollapse,
double &dPreCollapseCliffElev,
double &dPostCollapseCliffElev)
272 double dOrigCliffTopElev =
m_pRasterGrid->m_Cell[nX][nY].dGetSedimentTopElev();
278 int nNotchLayer =
m_pRasterGrid->m_Cell[nX][nY].nGetLayerAtElev(dNotchElev);
291 LogStream <<
m_ulIter <<
": " <<
WARN <<
"in nDoCliffCollapse(), [" << nX <<
"][" << nY <<
"] has nNotchLayer = " << nNotchLayer <<
", this has elevation = " << dNotchElev <<
" which is above sediment top elevation (" <<
m_pRasterGrid->m_Cell[nX][nY].dGetSedimentTopElev() <<
")" << endl;
299 int nTopLayer =
m_pRasterGrid->m_Cell[nX][nY].nGetTopLayerAboveBasement();
304 LogStream <<
m_ulIter <<
": " <<
WARN <<
"in nDoCliffCollapse(), [" << nX <<
"][" << nY <<
"] nTopLayer = " << nTopLayer << endl;
317 dPreCollapseCliffElev =
m_pRasterGrid->m_Cell[nX][nY].dGetSedimentTopElev();
320 double dAvailable = 0;
321 double dFineConsLost = 0;
322 double dFineUnconsLost = 0;
323 double dSandConsLost = 0;
324 double dSandUnconsLost = 0;
325 double dCoarseConsLost = 0;
326 double dCoarseUnconsLost = 0;
329 for (
int n = nTopLayer; n > nNotchLayer; n--)
332 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetFineDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetNotchFineLost();
336 dFineCollapse += dAvailable;
337 dFineUnconsLost += dAvailable;
338 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetFineDepth(0);
339 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetNotchFineLost(0);
342 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetSandDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetNotchSandLost();
346 dSandCollapse += dAvailable;
347 dSandUnconsLost += dAvailable;
348 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetSandDepth(0);
349 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetNotchSandLost(0);
352 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetCoarseDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->dGetNotchCoarseLost();
356 dCoarseCollapse += dAvailable;
357 dCoarseUnconsLost += dAvailable;
358 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetCoarseDepth(0);
359 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetUnconsolidatedSediment()->SetNotchCoarseLost(0);
363 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetFineDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetNotchFineLost();
367 dFineCollapse += dAvailable;
368 dFineConsLost += dAvailable;
369 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetFineDepth(0);
370 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetNotchFineLost(0);
373 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetSandDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetNotchSandLost();
377 dSandCollapse += dAvailable;
378 dSandConsLost += dAvailable;
379 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetSandDepth(0);
380 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetNotchSandLost(0);
383 dAvailable =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetCoarseDepth() -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->dGetNotchCoarseLost();
387 dCoarseCollapse += dAvailable;
388 dCoarseConsLost += dAvailable;
389 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetCoarseDepth(0);
390 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(n)->pGetConsolidatedSediment()->SetNotchCoarseLost(0);
395 double dNotchLayerTop =
m_pRasterGrid->m_Cell[nX][nY].dCalcLayerElev(nNotchLayer);
396 double dNotchLayerThickness =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->dGetTotalThickness();
397 double dNotchLayerFracRemoved = (dNotchLayerTop - dNotchElev) / dNotchLayerThickness;
400 double dFineDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetFineDepth();
401 dAvailable = dFineDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetNotchFineLost();
406 double dLost = dAvailable * dNotchLayerFracRemoved;
407 dFineCollapse += dLost;
408 dFineUnconsLost += dLost;
409 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetFineDepth(dFineDepth - dLost);
410 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetNotchFineLost(0);
413 double dSandDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetSandDepth();
414 dAvailable = dSandDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetNotchSandLost();
419 double dLost = dAvailable * dNotchLayerFracRemoved;
420 dSandCollapse += dLost;
421 dSandUnconsLost += dLost;
422 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetSandDepth(dSandDepth - dLost);
423 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetNotchSandLost(0);
426 double dCoarseDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetCoarseDepth();
427 dAvailable = dCoarseDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->dGetNotchCoarseLost();
432 double dLost = dAvailable * dNotchLayerFracRemoved;
433 dCoarseCollapse += dLost;
434 dCoarseUnconsLost += dLost;
435 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetCoarseDepth(dCoarseDepth - dLost);
436 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetUnconsolidatedSediment()->SetNotchCoarseLost(0);
440 dFineDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetFineDepth();
441 dAvailable = dFineDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetNotchFineLost();
446 double dLost = dAvailable * dNotchLayerFracRemoved;
447 dFineCollapse += dLost;
448 dFineConsLost += dLost;
449 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetFineDepth(dFineDepth - dLost);
450 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetNotchFineLost(0);
453 dSandDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetSandDepth();
454 dAvailable = dSandDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetNotchSandLost();
459 double dLost = dAvailable * dNotchLayerFracRemoved;
460 dSandCollapse += dLost;
461 dSandConsLost += dLost;
462 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetSandDepth(dSandDepth - dLost);
463 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetNotchSandLost(0);
466 dCoarseDepth =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetCoarseDepth();
467 dAvailable = dCoarseDepth -
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->dGetNotchCoarseLost();
472 double dLost = dAvailable * dNotchLayerFracRemoved;
473 dCoarseCollapse += dLost;
474 dCoarseConsLost += dLost;
475 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetCoarseDepth(dCoarseDepth - dLost);
476 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nNotchLayer)->pGetConsolidatedSediment()->SetNotchCoarseLost(0);
480 m_pRasterGrid->m_Cell[nX][nY].IncrCliffCollapseErosion(dFineCollapse, dSandCollapse, dCoarseCollapse);
486 dPostCollapseCliffElev =
m_pRasterGrid->m_Cell[nX][nY].dGetSedimentTopElev();
489 LogStream <<
m_ulIter <<
": cliff collapse at [" << nX <<
"][" << nY <<
"], original cliff elevation = " << dOrigCliffTopElev <<
", new cliff elevation = " << dPostCollapseCliffElev <<
", change in elevation = " << dOrigCliffTopElev - dPostCollapseCliffElev << endl;
534 int nCoastSize =
m_VCoast[nCoast].nGetCoastlineSize();
541 int nPoly =
m_pRasterGrid->m_Cell[nXCliff][nYCliff].nGetPolygonID();
557 if ((nTalusWidthInCells % 2) == 0)
558 nTalusWidthInCells++;
561 vector<int> VnTalusProfileCoastStartPoint(nCoastSize);
564 VnTalusProfileCoastStartPoint[0] = nStartPoint;
573 if ((nCount % 2) != 0)
574 nTmpPoint = nStartPoint + nSigned;
578 nTmpPoint = nStartPoint - nSigned;
583 if ((nTmpPoint < 0) || (nTmpPoint > (nCoastSize - 1)))
593 VnTalusProfileCoastStartPoint[nn] = nTmpPoint;
597 }
while (nn < nCoastSize);
599 bool bHitFirstCoastPoint =
false;
600 bool bHitLastCoastPoint =
false;
602 double dTotSandToDepositAllProfiles = dSandFromCollapse;
603 double dTotCoarseToDepositAllProfiles = dCoarseFromCollapse;
604 double dTotSandDepositedAllProfiles = 0;
605 double dTotCoarseDepositedAllProfiles = 0;
608 for (
int nAcross = 0; nAcross < nCoastSize; nAcross++)
610 bool bDoSandDepositionOnThisProfile =
false;
611 bool bSandDepositionCompletedOnThisProfile =
false;
612 bool bDoCoarseDepositionOnThisProfile =
false;
613 bool bCoarseDepositionCompletedOnThisProfile =
false;
621 double dTargetSandToDepositOnThisProfile = dTotSandToDepositAllProfiles / nTalusWidthInCells;
622 double dTargetCoarseToDepositOnThisProfile = dTotCoarseToDepositAllProfiles / nTalusWidthInCells;
627 double dSandProp = 0.5;
628 double dCoarseProp = 1 - dSandProp;
630 if (dTargetSandToDepositOnThisProfile + dTargetCoarseToDepositOnThisProfile > 0)
632 dSandProp = dTargetSandToDepositOnThisProfile / (dTargetSandToDepositOnThisProfile + dTargetCoarseToDepositOnThisProfile);
633 dCoarseProp = 1 - dSandProp;
636 double dSandDepositedOnThisProfile = 0;
637 double dCoarseDepositedOnThisProfile = 0;
639 if (dTotSandToDepositAllProfiles > 0)
641 bDoSandDepositionOnThisProfile =
true;
644 bSandDepositionCompletedOnThisProfile =
true;
648 bSandDepositionCompletedOnThisProfile =
true;
650 if (dTotCoarseToDepositAllProfiles > 0)
652 bDoCoarseDepositionOnThisProfile =
true;
655 bCoarseDepositionCompletedOnThisProfile =
true;
659 bCoarseDepositionCompletedOnThisProfile =
true;
661 if (bSandDepositionCompletedOnThisProfile && bCoarseDepositionCompletedOnThisProfile)
669 int nThisPoint = VnTalusProfileCoastStartPoint[nAcross];
673 bHitFirstCoastPoint =
true;
675 if (nThisPoint == nCoastSize - 1)
676 bHitLastCoastPoint =
true;
688 bool bJustDepositWhatWeCan =
false;
691 int nSeawardOffset = 1;
696 if (bJustDepositWhatWeCan || (bSandDepositionCompletedOnThisProfile && bCoarseDepositionCompletedOnThisProfile))
710 if (dCliffHeightFrac < 1)
724 bJustDepositWhatWeCan =
true;
736 dCliffHeightFrac = 1;
741 if (bHitFirstCoastPoint && bHitLastCoastPoint)
744 LogStream <<
m_ulIter <<
": unable to deposit sufficient unconsolidated talus from cliff collapse at [" << nXCliff <<
"][" << nYCliff <<
"] nStartPoint = " << nStartPoint <<
" nThisPoint = " << nThisPoint << endl <<
"\tnSeawardOffset = " << nSeawardOffset <<
" dCliffHeightFrac = " << dCliffHeightFrac <<
" nAcross = " << nAcross << endl <<
"\tdTargetSandToDepositOnThisProfile = " << dTargetSandToDepositOnThisProfile <<
" dSandDepositedOnThisProfile = " << dSandDepositedOnThisProfile <<
" dTotSandToDepositAllProfiles = " << dTotSandToDepositAllProfiles <<
" dTotSandDepositedAllProfiles = " << dTotSandDepositedAllProfiles << endl <<
"\tdTargetCoarseToDepositOnThisProfile = " << dTargetCoarseToDepositOnThisProfile <<
" dCoarseDepositedOnThisProfile = " << dCoarseDepositedOnThisProfile <<
" dTotCoarseToDepositAllProfiles = " << dTotCoarseToDepositAllProfiles <<
" dTotCoarseDepositedAllProfiles = " << dTotCoarseDepositedAllProfiles << endl;
750 double dThisProfileLength = (nTalusProfileLenInCells + nSeawardOffset + 1) *
m_dCellSide;
754 int nRtn =
nGetCoastNormalEndPoint(nCoast, nThisPoint, nCoastSize, &PtStart, dThisProfileLength, &PtEnd, &PtiEnd,
false);
759 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;
765 if (PtStart == PtEnd)
774 vector<CGeom2DPoint> VTmpProfile;
775 VTmpProfile.push_back(PtStart);
776 VTmpProfile.push_back(PtEnd);
777 vector<CGeom2DIPoint> VCellsUnderProfile;
782 int nRasterProfileLength =
static_cast<int>(VCellsUnderProfile.size());
785 if (nRasterProfileLength - nSeawardOffset < 3)
791 else if (nRasterProfileLength - nSeawardOffset == 3)
794 bJustDepositWhatWeCan =
true;
797 vector<double> dVProfileNow(nRasterProfileLength, 0);
798 vector<bool> bVProfileValid(nRasterProfileLength,
true);
803 for (
int n = 0; n < nRasterProfileLength; n++)
805 int nX = VCellsUnderProfile[n].nGetX();
806 int nY = VCellsUnderProfile[n].nGetY();
808 dVProfileNow[n] =
m_pRasterGrid->m_Cell[nX][nY].dGetSedimentTopElev();
812 bVProfileValid[n] =
false;
816 double dCliffHeight = dPreCollapseCliffElev - dPostCollapseCliffElev;
817 double dTalusTopElev = dPostCollapseCliffElev + (dCliffHeight * dCliffHeightFrac);
825 double dTalusSlopeLength = dThisProfileLength - ((nSeawardOffset - 1) *
m_dCellSide);
834 dA = (dTalusTopElev - dVProfileNow[nRasterProfileLength - 1]) / pow(dTalusSlopeLength,
DEAN_POWER);
837 double dInc = dTalusSlopeLength / (nRasterProfileLength - nSeawardOffset - 2);
838 vector<double> dVDeanProfile(nRasterProfileLength);
841 CalcDeanProfile(&dVDeanProfile, dInc, dTalusTopElev, dA,
true, nSeawardOffset, dTalusTopElev);
844 double dTotElevDiff =
dSubtractProfiles(&dVDeanProfile, &dVProfileNow, &bVProfileValid);
875 if (! bJustDepositWhatWeCan && (dTotElevDiff < (dTargetSandToDepositOnThisProfile + dTargetCoarseToDepositOnThisProfile)))
884 for (
int n = 0; n < nRasterProfileLength; n++)
887 if (bDoSandDepositionOnThisProfile)
890 bSandDepositionCompletedOnThisProfile =
true;
893 bSandDepositionCompletedOnThisProfile =
false;
897 if (bDoCoarseDepositionOnThisProfile)
900 bCoarseDepositionCompletedOnThisProfile =
true;
903 bCoarseDepositionCompletedOnThisProfile =
false;
907 if (bSandDepositionCompletedOnThisProfile && bCoarseDepositionCompletedOnThisProfile)
915 int nX = VCellsUnderProfile[n].nGetX();
916 int nY = VCellsUnderProfile[n].nGetY();
922 int nTopLayer =
m_pRasterGrid->m_Cell[nX][nY].nGetTopNonZeroLayerAboveBasement();
931 cerr <<
"All layers have zero thickness" << endl;
936 if (dVDeanProfile[n] > dVProfileNow[n])
939 double dSandToDeposit = 0;
941 if (bDoSandDepositionOnThisProfile)
943 dSandToDeposit = (dVDeanProfile[n] - dVProfileNow[n]) * dSandProp;
944 dSandToDeposit =
tMin(dSandToDeposit, (dTargetSandToDepositOnThisProfile - dSandDepositedOnThisProfile), (dTotSandToDepositAllProfiles - dTotSandDepositedAllProfiles));
946 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->AddSandDepth(dSandToDeposit);
951 dSandDepositedOnThisProfile += dSandToDeposit;
952 dTotSandDepositedAllProfiles += dSandToDeposit;
955 double dCoarseToDeposit = 0;
957 if (bDoCoarseDepositionOnThisProfile)
959 dCoarseToDeposit = (dVDeanProfile[n] - dVProfileNow[n]) * dCoarseProp;
960 dCoarseToDeposit =
tMin(dCoarseToDeposit, (dTargetCoarseToDepositOnThisProfile - dCoarseDepositedOnThisProfile), (dTotCoarseToDepositAllProfiles - dTotCoarseDepositedAllProfiles));
962 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->AddCoarseDepth(dCoarseToDeposit);
967 dCoarseDepositedOnThisProfile += dCoarseToDeposit;
968 dTotCoarseDepositedAllProfiles += dCoarseToDeposit;
978 m_pRasterGrid->m_Cell[nX][nY].AddSandTalusDeposition(dSandToDeposit);
979 m_pRasterGrid->m_Cell[nX][nY].AddCoarseTalusDeposition(dCoarseToDeposit);
989 else if (dVDeanProfile[n] < dVProfileNow[n])
992 double dThisLowering = dVProfileNow[n] - dVDeanProfile[n];
995 double dExistingAvailableFine =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->dGetFineDepth();
996 double dExistingAvailableSand =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->dGetSandDepth();
997 double dExistingAvailableCoarse =
m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->dGetCoarseDepth();
1000 int nFineWeight = (dExistingAvailableFine > 0 ? 1 : 0);
1001 int nSandWeight = (dExistingAvailableSand > 0 ? 1 : 0);
1002 int nCoarseWeight = (dExistingAvailableCoarse > 0 ? 1 : 0);
1012 double dFine =
tMin(dExistingAvailableFine, dFineLowering);
1013 double dRemaining = dExistingAvailableFine - dFine;
1016 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->SetFineDepth(dRemaining);
1036 double dSandToErode =
tMin(dExistingAvailableSand, dSandLowering);
1037 double dRemaining = dExistingAvailableSand - dSandToErode;
1040 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->SetSandDepth(dRemaining);
1049 dTargetSandToDepositOnThisProfile += dSandToErode;
1050 dTotSandToDepositAllProfiles += dSandToErode;
1064 double dCoarseToErode =
tMin(dExistingAvailableCoarse, dCoarseLowering);
1065 double dRemaining = dExistingAvailableCoarse - dCoarseToErode;
1068 m_pRasterGrid->m_Cell[nX][nY].pGetLayerAboveBasement(nTopLayer)->pGetUnconsolidatedSediment()->SetCoarseDepth(dRemaining);
1077 dTargetCoarseToDepositOnThisProfile += dCoarseToErode;
1078 dTotCoarseToDepositAllProfiles += dCoarseToErode;
1101 if (bDoSandDepositionOnThisProfile)
1104 bSandDepositionCompletedOnThisProfile =
true;
1107 if (bDoCoarseDepositionOnThisProfile)
1110 bCoarseDepositionCompletedOnThisProfile =
true;
1113 if (bSandDepositionCompletedOnThisProfile && bCoarseDepositionCompletedOnThisProfile)
1121 LogStream <<
ERR <<
m_ulIter <<
": non-zero dTotSandToDepositAllProfiles = " << dTotSandToDepositAllProfiles << endl;
1125 LogStream <<
ERR <<
m_ulIter <<
": non-zero dTotCoarseToDepositAllProfiles = " << dTotCoarseToDepositAllProfiles << endl;