{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "f5ec1bf2", "metadata": {}, "outputs": [], "source": [ "import viennaps as ps # ViennaPS 2D \n", "ps.setDimension(2) # Set the simulation dimension to 2D" ] }, { "cell_type": "code", "execution_count": null, "id": "483da250", "metadata": {}, "outputs": [], "source": [ "extent = 30\n", "gridDelta = 0.3\n", "\n", "# Create a 2D simulation domain with specified x-extent and grid resolution\n", "domain = ps.Domain(xExtent=extent, gridDelta=gridDelta)" ] }, { "cell_type": "markdown", "id": "1942aa0f", "metadata": {}, "source": [ "Generate a rectangular trench in the domain to serve as the initial geometry.\n", "The trench is 10 units wide and 30 units deep." ] }, { "cell_type": "code", "execution_count": null, "id": "503cd0d0", "metadata": {}, "outputs": [], "source": [ "ps.MakeTrench(domain, trenchWidth=10.0, trenchDepth=30.0).apply()" ] }, { "cell_type": "code", "execution_count": null, "id": "fdf38fc5", "metadata": {}, "outputs": [], "source": [ "# Save the current state of the domain to a VTU file for visualization\n", "domain.saveVolumeMesh(\"singleParticleCVD_1\")" ] }, { "cell_type": "markdown", "id": "d4f63da6", "metadata": {}, "source": [ "Define a simple physical model for Chemical Vapor Deposition (CVD):\n", "- rate: base deposition rate on a flat surface\n", "- stickingProbability: how likely a particle sticks upon hitting the surface\n", "- sourceExponent: controls angular distribution of incoming particles" ] }, { "cell_type": "code", "execution_count": null, "id": "2818e5f8", "metadata": {}, "outputs": [], "source": [ "model = ps.SingleParticleProcess(\n", " rate=1.0, # Deposition rate on a flat wafer\n", " stickingProbability=0.1, # Sticking probability of particles\n", " sourceExponent=1.0, # Isotropic particle incidence\n", ")" ] }, { "cell_type": "markdown", "id": "0eb0cfaa", "metadata": {}, "source": [ "Duplicate the current top-level surface and assign the new layer to SiO2.\n", "This allows the new material to grow on top of the existing geometry." ] }, { "cell_type": "code", "execution_count": null, "id": "830e76c3", "metadata": {}, "outputs": [], "source": [ "# Duplicate the current top-level surface and assign the new layer to SiO2.\n", "# This allows the new material to grow on top of the existing geometry.\n", "domain.duplicateTopLevelSet(ps.Material.SiO2)" ] }, { "cell_type": "markdown", "id": "f36b7d19", "metadata": {}, "source": [ "Apply the CVD process for a given duration using the defined model.\n", "The geometry will evolve as material is deposited on visible surfaces." ] }, { "cell_type": "code", "execution_count": null, "id": "37967a1e", "metadata": {}, "outputs": [], "source": [ "processDuration = 10.0 # Arbitrary time units\n", "ps.Process(domain, model, processDuration).apply()" ] }, { "cell_type": "code", "execution_count": null, "id": "a5c34590", "metadata": {}, "outputs": [], "source": [ "# Save the resulting geometry after deposition for visualization \n", "domain.saveVolumeMesh(\"singleParticleCVD_2\")\n", "domain.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "191cc8ac", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.7" } }, "nbformat": 4, "nbformat_minor": 5 }