org.gjt.universe.accrete
Class Protoplanet

java.lang.Object
  |
  +--org.gjt.universe.accrete.AccreteObject
        |
        +--org.gjt.universe.accrete.Protoplanet
All Implemented Interfaces:
PhysicalConstants

public final class Protoplanet
extends AccreteObject
implements PhysicalConstants

Implements a body which can accrete dust and gas.

Copyright information

This Java class is copyright 1998 by Carl Burke. All rights reserved. Substantial sections of this code were previously distributed in different form as part of 'starform' (copyright 1989 Matthew Burdick)

This software is provided absolutely free and without warranty, including but not limited to the implied warranties of merchantability and fitness for a purpose. You may use this code for any legal purpose provided that you do not charge for it; this implies that you may use this code as a component of a commercial system as long as the additional functionality of the commercial system is greater than what this code provides and that the commercial system is not primarily intended as a simulation of solar system formation. In other words, if you want to write a science-fiction computer game that uses the code in this package to build objects which are used in the game, that's great and permitted; if you use this code to make a kickass solar-system-builder, you are not allowed to distribute that software except for free.

You are allowed and encouraged to modify this software, provided that this copyright notice remains intact. This notice may be reformatted, but not removed.

If you do use this software, I and the contributing authors listed under "Acknowledgements" would appreciate some recognition. If you make changes, I would appreciate it if you would pass those changes back to me for possible inclusion in the master. At the time this notice was prepared, my email address is cburke@mitre.org and the home page for this software is http://www.geocities.com/Area51/6902/w_accr.html.

Acknowledgements

Matt Burdick, the author of 'starform' (freeware copyright 1989); much of the code (particularly planetary environments) was adapted from this.

Andrew Folkins, the author of 'accretion' (public domain) for the Amiga; I used chunks of his code when creating my displays.

Ed Taychert of Irony Games, for the algorithm he uses to classify terrestrial planets in his tabular CGI implementation of 'starform'.

Paul Schlyter, who provided information about computing planetary positions.


Field Summary
 double a
           
 double crit_mass
           
 double dust_density
           
 double e
           
 boolean gas_giant
           
 double mass
           
 Protoplanet next_planet
           
static double PROTOPLANET_MASS
           
 double reduced_mass
           
 
Fields inherited from class org.gjt.universe.accrete.AccreteObject
cr
 
Fields inherited from interface org.gjt.universe.accrete.PhysicalConstants
A1_20, A2_20, AIRLESS_ICE_ALBEDO, ALPHA, AMMONIA, ANGSTROM, ARGON, ATOMIC_HYDROGEN, ATOMIC_NITROGEN, ATOMIC_OXYGEN, B, BETA_20, BK, CARBON_DIOXIDE, CARBON_MONOXIDE, CHANGE_IN_EARTH_ANG_VEL, CLOUD_ALBEDO, CLOUD_COVERAGE_FACTOR, CM_PER_AU, CM_PER_KM, CM_PER_METER, CO2, DAYS_IN_A_YEAR, DEG_TO_RAD, DUST_DENSITY_COEFF, EARTH_ACCELERATION, EARTH_ALBEDO, EARTH_AXIAL_TILT, EARTH_CONVECTION_FACTOR, EARTH_DENSITY, EARTH_EFFECTIVE_TEMP, EARTH_EXOSPHERE_TEMP, EARTH_MASS_IN_GRAMS, EARTH_RADIUS, EARTH_SURF_PRES_IN_MILLIBARS, EARTH_WATER_MASS_PER_AREA, ECCENTRICITY_COEFF, FREEZING_POINT_OF_WATER, G, GAS_GIANT_ALBEDO, GAS_RETENTION_THRESHOLD, GRAV_CONSTANT, GREENHOUSE_EFFECT_CONST, H2, H2O, HELIUM, HYDROGEN_SULPHIDE, ICE_ALBEDO, INCREDIBLY_LARGE_NUMBER, J, K, KELVIN_CELCIUS_DIFFERENCE, KM_EARTH_RADIUS, KM_PER_AU, KRYPTON, MEARTH, METHANE, MH, MILLIBARS_PER_BAR, MOL_HYDROGEN, MOL_NITROGEN, MOL_OXYGEN, MOLAR_GAS_CONST, N, N2, NEON, NITRIC_OXIDE, NITROGEN_DIOXIDE, NITROUS_OXIDE, O2, OZONE, PI, Q1_36, Q2_36, RAD_TO_DEG, RADIANS_PER_ROTATION, ROCKY_AIRLESS_ALBEDO, ROCKY_ALBEDO, SECONDS_PER_HOUR, SOLAR_MASS_IN_GRAMS, SULPH_DIOXIDE, SULPH_TRIOXIDE, SUN_MASS_IN_EARTH_MASSES, WATER_ALBEDO, WATER_VAPOR, XENON
 
Constructor Summary
Protoplanet(double in, double out)
          Constructs a new seed protoplanet at a random location within the specified range.
Protoplanet(Protoplanet p)
          Copy constructor
 
Method Summary
 boolean accretes_gas()
          Determines if the protoplanet is massy enough to accrete gas.
 double inner_effect_limit(double cloud_eccentricity)
          Calculates innermost limit of gravitational influence.
 double inner_reduced_limit(double cloud_eccentricity)
          Calculates innermost limit of gravitational influence.
 double mass_density(boolean dust, boolean gas)
          Calculates unit density of material to be accreted from the specified dust band.
 boolean massOK()
          Verifies that the protoplanet mass is non-zero and also different from the injected seed size.
 double outer_effect_limit(double cloud_eccentricity)
          Calculates outermost limit of gravitational influence.
 double outer_reduced_limit(double cloud_eccentricity)
          Calculates outermost limit of gravitational influence.
 void print()
          Not currently implemented; really should be toString() anyway.
 void reduce_mass()
          Performs the mass 'reduction' calculation for the inner accretion loop.
 
Methods inherited from class org.gjt.universe.accrete.AccreteObject
about, LognormalDeviate, nextDouble, NormalDeviate, random_eccentricity, random_number
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROTOPLANET_MASS

public static double PROTOPLANET_MASS

a

public double a

e

public double e

mass

public double mass

reduced_mass

public double reduced_mass

crit_mass

public double crit_mass

dust_density

public double dust_density

gas_giant

public boolean gas_giant

next_planet

public Protoplanet next_planet
Constructor Detail

Protoplanet

public Protoplanet(double in,
                   double out)
Constructs a new seed protoplanet at a random location within the specified range.

Parameters:
in - Minimum semi-major axis of orbit
out - Maximum semi-major axis of orbit

Protoplanet

public Protoplanet(Protoplanet p)
Copy constructor

Method Detail

inner_effect_limit

public double inner_effect_limit(double cloud_eccentricity)
Calculates innermost limit of gravitational influence. The limit depends on orbital eccentricity of the protoplanet and the shape of the initial cloud as well as the mass.

Parameters:
cloud_eccentricity - Eccentricity of the dust disc (0.0 to 1.0)

outer_effect_limit

public double outer_effect_limit(double cloud_eccentricity)
Calculates outermost limit of gravitational influence. The limit depends on orbital eccentricity of the protoplanet and the shape of the initial cloud as well as the mass.

Parameters:
cloud_eccentricity - Eccentricity of the dust disc (0.0 to 1.0)

inner_reduced_limit

public double inner_reduced_limit(double cloud_eccentricity)
Calculates innermost limit of gravitational influence. This version uses 'reduced mass'... I don't have a copy of Dole's paper here, so I'm not sure what that really means. The limit depends on orbital eccentricity of the protoplanet and the shape of the initial cloud as well as the mass.

Parameters:
cloud_eccentricity - Eccentricity of the dust disc (0.0 to 1.0)

outer_reduced_limit

public double outer_reduced_limit(double cloud_eccentricity)
Calculates outermost limit of gravitational influence. This version uses 'reduced mass'... I don't have a copy of Dole's paper here, so I'm not sure what that really means. The limit depends on orbital eccentricity of the protoplanet and the shape of the initial cloud as well as the mass.

Parameters:
cloud_eccentricity - Eccentricity of the dust disc (0.0 to 1.0)

print

public void print()
Not currently implemented; really should be toString() anyway.


massOK

public boolean massOK()
Verifies that the protoplanet mass is non-zero and also different from the injected seed size.


accretes_gas

public boolean accretes_gas()
Determines if the protoplanet is massy enough to accrete gas.


reduce_mass

public void reduce_mass()
Performs the mass 'reduction' calculation for the inner accretion loop.


mass_density

public double mass_density(boolean dust,
                           boolean gas)
Calculates unit density of material to be accreted from the specified dust band.



Copyright © 2001 Universe Dev Team All Rights Reserved.