STYLE: lerp and emplace_back to simplify streamline coding

This commit is contained in:
Mark Olesen
2023-02-01 18:39:19 +01:00
parent 1cc72ea7e3
commit f180740b03
3 changed files with 49 additions and 70 deletions

View File

@ -6,7 +6,7 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2015 OpenFOAM Foundation Copyright (C) 2015 OpenFOAM Foundation
Copyright (C) 2015-2022 OpenCFD Ltd. Copyright (C) 2015-2023 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -272,33 +272,29 @@ void Foam::functionObjects::streamLineBase::storePoint
DynamicList<vectorList>& newVectors DynamicList<vectorList>& newVectors
) const ) const
{ {
const label sz = newTrack.size();
const List<point>& track = allTracks_[tracki]; const List<point>& track = allTracks_[tracki];
newTrack.append((1.0-w)*track[lefti] + w*track[righti]); newTrack.push_back(lerp(track[lefti], track[righti], w));
// Scalars // Scalars
{ {
newScalars.append(scalarList(allScalars_.size())); scalarList& newVals = newScalars.emplace_back(allScalars_.size());
scalarList& newVals = newScalars[sz];
forAll(allScalars_, scalari) forAll(allScalars_, i)
{ {
const scalarList& trackVals = allScalars_[scalari][tracki]; const scalarList& trackVals = allScalars_[i][tracki];
newVals[scalari] = (1.0-w)*trackVals[lefti] + w*trackVals[righti]; newVals[i] = lerp(trackVals[lefti], trackVals[righti], w);
} }
} }
// Vectors // Vectors
{ {
newVectors.append(vectorList(allVectors_.size())); vectorList& newVals = newVectors.emplace_back(allVectors_.size());
vectorList& newVals = newVectors[sz];
forAll(allVectors_, vectori) forAll(allVectors_, i)
{ {
const vectorList& trackVals = allVectors_[vectori][tracki]; const vectorList& trackVals = allVectors_[i][tracki];
newVals[vectori] = (1.0-w)*trackVals[lefti] + w*trackVals[righti]; newVals[i] = lerp(trackVals[lefti], trackVals[righti], w);
} }
} }
} }
@ -343,9 +339,9 @@ void Foam::functionObjects::streamLineBase::trimToBox
segmenti-1, segmenti-1,
segmenti, segmenti,
newTracks.last(), newTracks.back(),
newScalars.last(), newScalars.back(),
newVectors.last() newVectors.back()
); );
if (!bb.contains(endPt)) if (!bb.contains(endPt))
@ -363,14 +359,14 @@ void Foam::functionObjects::streamLineBase::trimToBox
segmenti-1, segmenti-1,
segmenti, segmenti,
newTracks.last(), newTracks.back(),
newScalars.last(), newScalars.back(),
newVectors.last() newVectors.back()
); );
newTracks.last().shrink(); newTracks.back().shrink();
newScalars.last().shrink(); newScalars.back().shrink();
newVectors.last().shrink(); newVectors.back().shrink();
} }
} }
} }
@ -382,18 +378,7 @@ void Foam::functionObjects::streamLineBase::trimToBox
if (bb.intersects(startPt, endPt, clipPt)) if (bb.intersects(startPt, endPt, clipPt))
{ {
// New track // New track
newTracks.append const label defltCapacity(track.size()/10);
(
new DynamicList<point>(track.size()/10)
);
newScalars.append
(
new DynamicList<scalarList>(track.size()/10)
);
newVectors.append
(
new DynamicList<vectorList>(track.size()/10)
);
// Store point and interpolated values // Store point and interpolated values
storePoint storePoint
@ -404,9 +389,9 @@ void Foam::functionObjects::streamLineBase::trimToBox
segmenti-1, segmenti-1,
segmenti, segmenti,
newTracks.last(), newTracks.emplace_back(defltCapacity),
newScalars.last(), newScalars.emplace_back(defltCapacity),
newVectors.last() newVectors.emplace_back(defltCapacity)
); );
if (!bb.contains(endPt)) if (!bb.contains(endPt))
@ -427,14 +412,14 @@ void Foam::functionObjects::streamLineBase::trimToBox
segmenti-1, segmenti-1,
segmenti, segmenti,
newTracks.last(), newTracks.back(),
newScalars.last(), newScalars.back(),
newVectors.last() newVectors.back()
); );
newTracks.last().shrink(); newTracks.back().shrink();
newScalars.last().shrink(); newScalars.back().shrink();
newVectors.last().shrink(); newVectors.back().shrink();
} }
} }
} }
@ -442,7 +427,7 @@ void Foam::functionObjects::streamLineBase::trimToBox
} }
// Last point // Last point
if (bb.contains(track.last())) if (bb.contains(track.back()))
{ {
storePoint storePoint
( (
@ -452,9 +437,9 @@ void Foam::functionObjects::streamLineBase::trimToBox
track.size()-2, track.size()-2,
track.size()-1, track.size()-1,
newTracks.last(), newTracks.back(),
newScalars.last(), newScalars.back(),
newVectors.last() newVectors.back()
); );
} }
} }
@ -476,9 +461,9 @@ void Foam::functionObjects::streamLineBase::trimToBox(const treeBoundBox& bb)
if (track.size()) if (track.size())
{ {
// New track. Assume it consists of the whole track // New track. Assume it consists of the whole track
newTracks.append(new DynamicList<point>(track.size())); newTracks.emplace_back(track.size());
newScalars.append(new DynamicList<scalarList>(track.size())); newScalars.emplace_back(track.size());
newVectors.append(new DynamicList<vectorList>(track.size())); newVectors.emplace_back(track.size());
// Trim, split and append to newTracks // Trim, split and append to newTracks
trimToBox(bb, tracki, newTracks, newScalars, newVectors); trimToBox(bb, tracki, newTracks, newScalars, newVectors);

View File

@ -6,7 +6,7 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2019-2022 OpenCFD Ltd. Copyright (C) 2019-2023 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -57,17 +57,17 @@ Foam::vector Foam::streamLineParticle::interpolateFields
if if
( (
sampledPositions_.empty() sampledPositions_.empty()
|| magSqr(sampledPositions_.last() - position) > Foam::sqr(SMALL) || sampledPositions_.back().distSqr(position) > Foam::sqr(SMALL)
) )
{ {
// Store new location // Store new location
sampledPositions_.append(position); sampledPositions_.push_back(position);
// Scalar fields // Scalar fields
sampledScalars_.resize(td.vsInterp_.size()); sampledScalars_.resize(td.vsInterp_.size());
forAll(td.vsInterp_, i) forAll(td.vsInterp_, i)
{ {
sampledScalars_[i].append sampledScalars_[i].push_back
( (
td.vsInterp_[i].interpolate(tetCoords, tetIs, tetIs.face()) td.vsInterp_[i].interpolate(tetCoords, tetIs, tetIs.face())
); );
@ -77,7 +77,7 @@ Foam::vector Foam::streamLineParticle::interpolateFields
sampledVectors_.resize(td.vvInterp_.size()); sampledVectors_.resize(td.vvInterp_.size());
forAll(td.vvInterp_, i) forAll(td.vvInterp_, i)
{ {
sampledVectors_[i].append sampledVectors_[i].push_back
( (
td.vvInterp_[i].interpolate(tetCoords, tetIs, tetIs.face()) td.vvInterp_[i].interpolate(tetCoords, tetIs, tetIs.face())
); );
@ -85,7 +85,7 @@ Foam::vector Foam::streamLineParticle::interpolateFields
if (td.vvInterp_.get(i) == &(td.UInterp_)) if (td.vvInterp_.get(i) == &(td.UInterp_))
{ {
foundU = true; foundU = true;
U = sampledVectors_[i].last(); U = sampledVectors_[i].back();
} }
} }
} }
@ -272,19 +272,16 @@ bool Foam::streamLineParticle::move
// Transfer particle data into trackingData. // Transfer particle data into trackingData.
{ {
td.allPositions_.append(vectorList()); td.allPositions_.emplace_back().transfer(sampledPositions_);
td.allPositions_.last().transfer(sampledPositions_);
} }
forAll(sampledScalars_, i) forAll(sampledScalars_, i)
{ {
td.allScalars_[i].append(scalarList()); td.allScalars_[i].emplace_back().transfer(sampledScalars_[i]);
td.allScalars_[i].last().transfer(sampledScalars_[i]);
} }
forAll(sampledVectors_, i) forAll(sampledVectors_, i)
{ {
td.allVectors_[i].append(vectorList()); td.allVectors_[i].emplace_back().transfer(sampledVectors_[i]);
td.allVectors_[i].last().transfer(sampledVectors_[i]);
} }
} }

View File

@ -6,7 +6,7 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2017 OpenCFD Ltd. Copyright (C) 2017-2023 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -117,19 +117,16 @@ bool Foam::wallBoundedStreamLineParticle::move
// Transfer particle data into trackingData. // Transfer particle data into trackingData.
{ {
td.allPositions_.append(vectorList()); td.allPositions_.emplace_back().transfer(sampledPositions_);
td.allPositions_.last().transfer(sampledPositions_);
} }
forAll(sampledScalars_, i) forAll(sampledScalars_, i)
{ {
td.allScalars_[i].append(scalarList()); td.allScalars_[i].emplace_back().transfer(sampledScalars_[i]);
td.allScalars_[i].last().transfer(sampledScalars_[i]);
} }
forAll(sampledVectors_, i) forAll(sampledVectors_, i)
{ {
td.allVectors_[i].append(vectorList()); td.allVectors_[i].emplace_back().transfer(sampledVectors_[i]);
td.allVectors_[i].last().transfer(sampledVectors_[i]);
} }
} }