diff --git a/GUI/Model/ToCore/SampleToCore.cpp b/GUI/Model/ToCore/SampleToCore.cpp index 445ed9ae71a3bcd337652f560f8462211e03ecdc..a636d2d174eaa9e5e9eedf1976e8008a853be65c 100644 --- a/GUI/Model/ToCore/SampleToCore.cpp +++ b/GUI/Model/ToCore/SampleToCore.cpp @@ -115,18 +115,23 @@ std::unique_ptr<MultiLayer> GUI::ToCore::itemToSample(const SampleItem& sampleIt auto layer = buildLayer(*layerItem); ASSERT(layer); - if (layerItem->isTopLayer()) - sample->addLayer(*layer); - else if (const auto* t = dynamic_cast<const BasicRoughnessItem*>( - layerItem->roughnessSelection().certainItem())) { - - BasicAutoCorr autoCorr(t->sigma().dVal(), t->hurst().dVal(), - t->lateralCorrelationLength().dVal()); - LayerRoughness roughness(&autoCorr, - t->certainInterlayerModel()->createModel().release()); - sample->addLayerWithTopRoughness(*layer, roughness); - } else + if (layerItem->isTopLayer()) { sample->addLayer(*layer); + continue; + } + std::unique_ptr<AutoCorrModel> autoCorr; + std::unique_ptr<InterlayerModel> interlayer; + const RoughnessItem* roughItem = layerItem->certainRoughness(); + + if (roughItem) + interlayer = roughItem->certainInterlayerModel()->createModel(); + + if (const auto* br = dynamic_cast<const BasicRoughnessItem*>(roughItem)) + autoCorr = std::make_unique<BasicAutoCorr>(br->sigma().dVal(), br->hurst().dVal(), + br->lateralCorrelationLength().dVal()); + + LayerRoughness roughness(autoCorr.get(), interlayer.get()); + sample->addLayerWithTopRoughness(*layer, roughness); } return sample; } diff --git a/GUI/View/Realspace/RealspaceBuilder.cpp b/GUI/View/Realspace/RealspaceBuilder.cpp index e83e609cc45044b50b68c2f792d9ab1851c73e16..e97071cfe9a03915d16a42916ae621ffeaf505c3 100644 --- a/GUI/View/Realspace/RealspaceBuilder.cpp +++ b/GUI/View/Realspace/RealspaceBuilder.cpp @@ -96,11 +96,12 @@ std::unique_ptr<const double2d_t> layerRoughnessMap(const LayerItem& layerItem, std::unique_ptr<const double2d_t> result; std::unique_ptr<AutoCorrModel> autoCorr; std::unique_ptr<InterlayerModel> interlayer; + const RoughnessItem* roughItem = layerItem.certainRoughness(); - if (const RoughnessItem* r = layerItem.certainRoughness()) - interlayer = r->certainInterlayerModel()->createModel(); + if (roughItem) + interlayer = roughItem->certainInterlayerModel()->createModel(); - if (const auto* br = dynamic_cast<const BasicRoughnessItem*>(layerItem.certainRoughness())) + if (const auto* br = dynamic_cast<const BasicRoughnessItem*>(roughItem)) autoCorr = std::make_unique<BasicAutoCorr>(br->sigma().dVal(), br->hurst().dVal(), br->lateralCorrelationLength().dVal());