1 package com.billkuker.rocketry.motorsim.grain;
\r
3 import java.awt.geom.Area;
\r
4 import java.beans.PropertyChangeListener;
\r
5 import java.util.HashSet;
\r
6 import java.util.Set;
\r
8 import javax.measure.quantity.Length;
\r
9 import javax.measure.quantity.Volume;
\r
10 import javax.measure.unit.SI;
\r
12 import org.jscience.physics.amount.Amount;
\r
14 import com.billkuker.rocketry.motorsim.Grain;
\r
15 import com.billkuker.rocketry.motorsim.MotorPart;
\r
17 public class CompoundGrain extends MotorPart implements Grain {
\r
19 private Set<Grain> grains = new HashSet<Grain>();
\r
21 public CompoundGrain(){
\r
25 public void add( Grain g ){
\r
29 public void addPropertyChangeListener(PropertyChangeListener listener) {
\r
30 for ( Grain g : grains )
\r
31 if ( g instanceof MotorPart )
\r
32 ((MotorPart)g).addPropertyChangeListener(listener);
\r
35 public void removePropertyChangeListener(PropertyChangeListener listener) {
\r
36 for ( Grain g : grains )
\r
37 if ( g instanceof MotorPart )
\r
38 ((MotorPart)g).removePropertyChangeListener(listener);
\r
41 public Area getCrossSection(Amount<Length> regression) {
\r
42 Area a = new Area();
\r
43 for ( Grain g : grains )
\r
44 a.add( g.getCrossSection(regression) );
\r
48 public Area getSideView(Amount<Length> regression) {
\r
49 Area a = new Area();
\r
50 for ( Grain g : grains )
\r
51 a.add( g.getSideView(regression) );
\r
55 public Amount<javax.measure.quantity.Area> surfaceArea(
\r
56 Amount<Length> regression) {
\r
57 Amount<javax.measure.quantity.Area> a = Amount.valueOf(0, SI.SQUARE_METRE);
\r
58 for ( Grain g : grains )
\r
59 a = a.plus(g.surfaceArea(regression));
\r
63 public Amount<Volume> volume(Amount<Length> regression) {
\r
64 Amount<Volume> v = Amount.valueOf(0, SI.CUBIC_METRE);
\r
65 for ( Grain g : grains )
\r
66 v = v.plus(g.volume(regression));
\r
70 public Amount<Length> webThickness() {
\r
71 Amount<Length> l = Amount.valueOf(0, SI.MILLIMETER);
\r
72 for ( Grain g : grains ){
\r
73 Amount<Length> gl = g.webThickness();
\r
74 if ( gl.isGreaterThan(l) )
\r