Skip to content

Commit

Permalink
Add threshold value for coverage delta metric (#113)
Browse files Browse the repository at this point in the history
* Refactor coverge initialization and test for convergence

* Add info message when repeating flux calculation

* Add timer for additional flux calculation
  • Loading branch information
tobre1 authored Feb 24, 2025
1 parent f267bb8 commit b0dee56
Show file tree
Hide file tree
Showing 10 changed files with 219 additions and 180 deletions.
2 changes: 1 addition & 1 deletion examples/holeEtching/holeEtching.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ int main(int argc, char *argv[]) {
Process<NumericType, D> process;
process.setDomain(geometry);
process.setProcessModel(model);
process.setMaxCoverageInitIterations(20);
process.setCoverageDeltaThreshold(1e-4);
process.setNumberOfRaysPerPoint(params.get("raysPerPoint"));
process.setProcessDuration(params.get("processTime"));
process.setIntegrationScheme(
Expand Down
20 changes: 10 additions & 10 deletions examples/holeEtching/testFluxes.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,8 @@
vps.Time.setUnit("min")

# hole geometry parameters
gridDelta = 0.025 # um
xExtent = 1.0
yExtent = 1.0
gridDelta = 0.03 # um
extent = 3.0
holeRadius = 0.175
maskHeight = 1.2
taperAngle = 1.193
Expand Down Expand Up @@ -62,22 +61,23 @@

# geometry setup, all units in um
geometry = vps.Domain(
gridDelta=params["gridDelta"],
xExtent=params["xExtent"],
yExtent=params["yExtent"],
gridDelta=gridDelta,
xExtent=extent,
yExtent=extent,
)
vps.MakeHole(
domain=geometry,
holeRadius=params["holeRadius"],
holeRadius=holeRadius,
holeDepth=0.0,
maskHeight=params["maskHeight"],
maskTaperAngle=params["taperAngle"],
holeShape=vps.HoleShape.Half,
maskHeight=maskHeight,
maskTaperAngle=taperAngle,
# holeShape=vps.HoleShape.Half,
).apply()

process = vps.Process()
process.setDomain(geometry)
process.setMaxCoverageInitIterations(20)
process.setCoverageDeltaThreshold(1e-4)
process.setProcessDuration(processDuration)
process.setIntegrationScheme(integrationScheme)
process.setNumberOfRaysPerPoint(numberOfRaysPerPoint)
Expand Down
1 change: 0 additions & 1 deletion include/viennaps/models/psFluorocarbonEtching.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,6 @@ class FluorocarbonSurfaceModel : public SurfaceModel<NumericType> {
calculateVelocities(SmartPointer<viennals::PointData<NumericType>> fluxes,
const std::vector<Vec3D<NumericType>> &coordinates,
const std::vector<NumericType> &materialIds) override {
updateCoverages(fluxes, materialIds);
const auto numPoints = materialIds.size();
std::vector<NumericType> etchRate(numPoints, 0.);

Expand Down
1 change: 0 additions & 1 deletion include/viennaps/models/psSF6O2Etching.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ class SF6O2SurfaceModel : public SurfaceModel<NumericType> {
calculateVelocities(SmartPointer<viennals::PointData<NumericType>> fluxes,
const std::vector<Vec3D<NumericType>> &coordinates,
const std::vector<NumericType> &materialIds) override {
updateCoverages(fluxes, materialIds);
const auto numPoints = fluxes->getScalarData(0)->size();
std::vector<NumericType> etchRate(numPoints, 0.);

Expand Down
1 change: 0 additions & 1 deletion include/viennaps/models/psTEOSDeposition.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ class SingleTEOSSurfaceModel : public SurfaceModel<NumericType> {
SmartPointer<viennals::PointData<NumericType>> rates,
const std::vector<std::array<NumericType, 3>> &coordinates,
const std::vector<NumericType> &materialIDs) override {
updateCoverages(rates, materialIDs);
// define the surface reaction here
auto particleFlux = rates->getScalarData("particleFlux");
std::vector<NumericType> velocity(particleFlux->size(), 0.);
Expand Down
Loading

0 comments on commit b0dee56

Please sign in to comment.