Skip to content

Commit

Permalink
Added ViennaPS application (#25)
Browse files Browse the repository at this point in the history
* Small fixes in psGDSGeometry and psMakeTrench

* Added make plane function and height offsets for geometry functions

* Added ViennaPS application

* Added directional etching model

* Fixed float error in geometric advection

* Added documentation for config files

* Fixed error in directional etching

* Fixed error 3D psMakeTrench base offset

* Added planarization function

* Build application in testing

* Format code
  • Loading branch information
tobre1 authored Dec 13, 2022
1 parent 6c44c59 commit 0b66bcf
Show file tree
Hide file tree
Showing 30 changed files with 1,298 additions and 97 deletions.
6 changes: 5 additions & 1 deletion .github/workflows/linux_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,15 @@ jobs:
cmake -B ./build \
-D ViennaLS_DIR=${{github.workspace}}/viennals/install/lib/cmake/ViennaLS/ \
-D ViennaRay_DIR=${{github.workspace}}/viennaray/install/lib/cmake/ViennaRay/ \
-D VIENNAPS_BUILD_EXAMPLES=ON
-D VIENNAPS_BUILD_EXAMPLES=ON \
-D VIENNAPS_BUILD_APPLICATION=ON
- name: Build Examples
run: cmake --build ./build --target buildExamples

- name: Build application
run: cmake --build ./build --target buildApplication

- name: Run
working-directory: ${{github.workspace}}/build/Examples/InterpolationDemo
run: ./InterpolationDemo
6 changes: 5 additions & 1 deletion .github/workflows/macos_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,15 @@ jobs:
-D OpenMP_C_LIB_NAMES="omp" \
-D OpenMP_CXX_LIB_NAMES="omp" \
-D OpenMP_omp_LIBRARY="$(brew --prefix libomp)/lib/libomp.a" \
-D VIENNAPS_BUILD_EXAMPLES=ON
-D VIENNAPS_BUILD_EXAMPLES=ON \
-D VIENNAPS_BUILD_APPLICATION=ON
- name: Build Examples
run: cmake --build ./build --target buildExamples

- name: Build application
run: cmake --build ./build --target buildApplication

- name: Run
working-directory: ${{github.workspace}}/build/Examples/InterpolationDemo
run: ./InterpolationDemo
5 changes: 4 additions & 1 deletion .github/workflows/windows_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,14 @@ jobs:
# ViennaPS
- name: Configure ViennaPS
run: |
cmake -B ${{github.workspace}}/build -DViennaLS_DIR=${{github.workspace}}/viennals/install/lib/cmake/ViennaLS/ -DViennaRay_DIR=${{github.workspace}}/viennaray/install/lib/cmake/ViennaRay/ -D CMAKE_CXX_FLAGS="-openmp:llvm" -D VIENNAPS_BUILD_EXAMPLES=ON
cmake -B ${{github.workspace}}/build -DViennaLS_DIR=${{github.workspace}}/viennals/install/lib/cmake/ViennaLS/ -DViennaRay_DIR=${{github.workspace}}/viennaray/install/lib/cmake/ViennaRay/ -D CMAKE_CXX_FLAGS="-openmp:llvm" -D VIENNAPS_BUILD_EXAMPLES=ON -D VIENNAPS_BUILD_APPLICATION=ON
- name: Build ViennaPS Examples
run: cmake --build ${{github.workspace}}/build/Examples --config ${{env.BUILD_TYPE}}

- name: Build ViennaPS Application
run: cmake --build ${{github.workspace}}/build/app --config ${{env.BUILD_TYPE}}

- name: Run ViennaPS Example
working-directory: ${{github.workspace}}/build/Examples/InterpolationDemo/${{env.BUILD_TYPE}}
shell: bash
Expand Down
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,14 @@ if(VIENNAPS_BUILD_EXAMPLES)
add_subdirectory(Examples)
endif(VIENNAPS_BUILD_EXAMPLES)

# ##################################################################################################
# BUILD VIENNAPS APPLICATION
# ##################################################################################################
option(VIENNAPS_BUILD_APPLICATION "Build ViennaPS application." OFF)
if(VIENNAPS_BUILD_APPLICATION)
add_subdirectory(app)
endif(VIENNAPS_BUILD_APPLICATION)

# ##################################################################################################
# INSTALL
# ##################################################################################################
Expand Down
2 changes: 1 addition & 1 deletion Examples/GDSReader/GDSReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ int main(int argc, char **argv) {
psGDSReader<NumericType, D>(mask, "mask.gds").apply();

// geometry setup
NumericType *bounds = mask->getBounds();
double *bounds = mask->getBounds();
auto geometry = psSmartPointer<psDomain<NumericType, D>>::New();

// substrate plane
Expand Down
3 changes: 2 additions & 1 deletion Examples/HoleEtching/HoleEtching.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ int main(int argc, char *argv[]) {
geometry, params.gridDelta /* grid delta */, params.xExtent /*x extent*/,
params.yExtent /*y extent*/, params.holeRadius /*hole radius*/,
params.maskHeight /* mask height*/,
params.taperAngle /* tapering angle in degrees */, true /*create mask*/)
params.taperAngle /* tapering angle in degrees */, 0 /* base height */,
false /* periodic boundary */, true /*create mask*/)
.apply();

SF6O2Etching<NumericType, D> model(params.totalIonFlux /*ion flux*/,
Expand Down
2 changes: 1 addition & 1 deletion Examples/TrenchDeposition/TrenchDeposition.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ int main(int argc, char *argv[]) {
geometry, params.gridDelta /* grid delta */, params.xExtent /*x extent*/,
params.yExtent /*y extent*/, params.trenchWidth /*trench width*/,
params.trenchHeight /*trench height*/,
params.taperAngle /* tapering angle */, false /*create mask*/)
params.taperAngle /* tapering angle */)
.apply();

// copy top layer to capture deposition
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ int main(int argc, char *argv[]) {
auto geometry = psSmartPointer<psDomain<NumericType, D>>::New();
psMakeTrench<NumericType, D>(geometry, params.gridDelta, params.xExtent,
params.yExtent, params.trenchWidth,
params.trenchHeight, false /*create mask*/)
params.trenchHeight)
.apply();

// copy top layer to capture deposition
Expand Down
1 change: 1 addition & 0 deletions Examples/VolumeModel/VolumeModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ int main(int argc, char *argv[]) {
auto geometry = psSmartPointer<psDomain<NumericType, D>>::New();
psMakeFin<NumericType, D>(geometry, params.gridDelta, params.xExtent,
params.yExtent, params.finWidth, params.finHeight,
0. /* base height*/, false /*periodic boundary*/,
false /*create mask*/)
.apply();

Expand Down
16 changes: 15 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ The examples can be built using CMake (make sure all dependencies are installed/
```bash
mkdir build && cd build
cmake .. -DVIENNAPS_BUILD_EXAMPLES=ON
make buildExamples
```

The examples can then be executed in their respective folders with the config files
Expand Down Expand Up @@ -96,13 +97,26 @@ By changing the dimension of the hole etching example (_D = 2_), we can easily s
<img src="https://raw.githubusercontent.com/ViennaTools/ViennaPS/master/data/images/sidewall_tapering.svg" width=700 style="background-color:white;">
</div>

## Application

It is also possible to build an application which can parse a custom configuration file and execute pre-defined processes. The application can be built using CMake (make sure all dependencies are installed/ have been built previously):
```bash
mkdir build && cd build
cmake .. -DVIENNAPS_BUILD_APPLICATION=ON
make buildApplication
```
This creates 2 executables `ViennaPS2D` and `ViennaPS3D` which run processes in 2 or 3 dimensions respectively. Every configuration file can be run in 2D or 3D mode.

The configuration file must obey a certain structure in order to be parsed correctly. An example for a configuration file can be seen in _SampleConfig.txt_. The configuration file is parsed line by line and each succesfully parsed line is executed immediately. A detailed documentation for the configuration file can be found in **app/README.md**.


## Contributing

If you want to contribute to ViennaPS, make sure to follow the [LLVM Coding guidelines](https://llvm.org/docs/CodingStandards.html). Before creating a pull request, make sure ALL files have been formatted by clang-format, which can be done using the format-project.sh script in the root directory.

## Authors

Current contributors: Tobias Reiter, Josip Bobinac, Xaver Klemenschits, Julius Piso
Current contributors: Tobias Reiter, Julius Piso, Josip Bobinac, Xaver Klemenschits

Contact us via: [email protected]

Expand Down
Loading

0 comments on commit 0b66bcf

Please sign in to comment.