| |
| # **************************************************************************** |
| # Copyright (c) 2015 UT-Battelle, LLC. |
| # All rights reserved. This program and the accompanying materials |
| # are made available under the terms of the Eclipse Public License v1.0 |
| # which accompanies this distribution, and is available at |
| # http://www.eclipse.org/legal/epl-v10.html |
| # |
| # Contributors: |
| # Initial API and implementation and/or initial documentation - Kasper |
| # Gammeltoft, Jay Jay Billings |
| # |
| # This is an example script designed to show how to use ease with ICE. It |
| # creates a new Reflectivity Model and shows how to customize and build up |
| # the layers in the model from scratch. |
| # **************************************************************************** |
| |
| # Needed imports from ICE |
| from org.eclipse.ice.datastructures.form import Material |
| |
| # Load the Platform module for accessing OSGi services |
| loadModule('/System/Platform') |
| |
| # Get the core service from ICE for creating and accessing objects. |
| coreService = getService(org.eclipse.ice.core.iCore.ICore); |
| |
| # Create the reflectivity model to be used and get its reference. The create item |
| # method will return a string representing the number of that item, so use int() to |
| # convert it to an integer. |
| reflectModel = coreService.getItem(int(coreService.createItem("Reflectivity Model"))) |
| |
| # Gets the list component used as the data for the table (is on tab 2) |
| listComp = reflectModel.getComponent(2) |
| |
| # Now we want to build up the list from our own data, so we can do that here. |
| |
| # The first step would be to clear the list so that we can start adding to it. Clearing |
| # the list requires the locks as multiple operations are happening and we need to |
| # protect the list from multiple threads trying to access it at the same time. |
| listComp.getReadWriteLock().writeLock().lock() |
| listComp.clear() |
| listComp.getReadWriteLock().writeLock().unlock() |
| |
| # Create the layer of air |
| air = Material() |
| air.setName("Air") |
| air.setProperty("Material ID", 1) |
| air.setProperty("Thickness (A)", 200) |
| air.setProperty("Roughness (A)", 0) |
| air.setProperty(Material.SCAT_LENGTH_DENSITY, 0) |
| air.setProperty(Material.MASS_ABS_COHERENT, 0) |
| air.setProperty(Material.MASS_ABS_INCOHERENT, 0) |
| |
| # Create the Aluminum Oxide layer |
| AlOx = Material() |
| AlOx.setName("AlOx") |
| AlOx.setProperty("Material ID", 2) |
| AlOx.setProperty("Thickness (A)", 25) |
| AlOx.setProperty("Roughness (A)", 10.2) |
| AlOx.setProperty(Material.SCAT_LENGTH_DENSITY, 1.436e-6) |
| AlOx.setProperty(Material.MASS_ABS_COHERENT, 6.125e-11) |
| AlOx.setProperty(Material.MASS_ABS_INCOHERENT, 4.47e-12) |
| |
| # Create the Aluminum layer |
| Al = Material() |
| Al.setName("Al") |
| Al.setProperty("Material ID", 3) |
| Al.setProperty("Thickness (A)", 500) |
| Al.setProperty("Roughness (A)", 11.4) |
| Al.setProperty(Material.SCAT_LENGTH_DENSITY, 2.078e-6) |
| Al.setProperty(Material.MASS_ABS_COHERENT, 2.87e-13) |
| Al.setProperty(Material.MASS_ABS_INCOHERENT, 1.83e-12) |
| |
| # Create the Aluminum Silicate layer |
| AlSiOx = Material() |
| AlSiOx.setName("AlSiOx") |
| AlSiOx.setProperty("Material ID", 4) |
| AlSiOx.setProperty("Thickness (A)", 10) |
| AlSiOx.setProperty("Roughness (A)", 17.2) |
| AlSiOx.setProperty(Material.SCAT_LENGTH_DENSITY, 1.489e-6) |
| AlSiOx.setProperty(Material.MASS_ABS_COHERENT, 8.609e-9) |
| AlSiOx.setProperty(Material.MASS_ABS_INCOHERENT, 6.307e-10) |
| |
| # Create the Silicon layer |
| Si = Material() |
| Si.setName("Si") |
| Si.setProperty("Material ID", 5) |
| Si.setProperty("Thickness (A)", 100) |
| Si.setProperty("Roughness (A)", 17.5) |
| Si.setProperty(Material.SCAT_LENGTH_DENSITY, 2.07e-6) |
| Si.setProperty(Material.MASS_ABS_COHERENT, 4.7498e-11) |
| Si.setProperty(Material.MASS_ABS_INCOHERENT, 1.9977e-12) |
| |
| # Add all of the materials back to the list (in top to bottom order) |
| listComp.getReadWriteLock().writeLock().lock() |
| listComp.add(air); |
| listComp.add(AlOx); |
| listComp.add(Al); |
| listComp.add(AlSiOx); |
| listComp.add(Si); |
| listComp.getReadWriteLock().writeLock().unlock() |
| |
| # Finally process the model to get the results. |
| coreService.processItem(reflectModel.getId(), "Calculate Reflectivity", 1); |
| |