package wdv; import java.text.DecimalFormat; /** * PlanetTemp.java * * Implemented after Planet Temp Calculator from Simonelli et. al. * * Created on Dec 27, 2010, 6:20:48 PM * * @author Van */ public class PlanetTemp extends javax.swing.JApplet { /** Initializes the applet PlanetTemp */ @Override public void init() { try { java.awt.EventQueue.invokeAndWait(new Runnable() { public void run() { initComponents(); calcAndDisplayTempAndLifetime(); } }); } catch (Exception ex) { ex.printStackTrace(); } } /** This method is called from within the init() method to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { javax.swing.JPanel jPanelDisplay = new javax.swing.JPanel(); jPanelStar = new javax.swing.JPanel(); jLabelStarPanel = new javax.swing.JLabel(); jLabelMassInput = new javax.swing.JLabel(); jTextFieldMass = new javax.swing.JTextField(); jLabelMassUnits = new javax.swing.JLabel(); jLabelLifetime = new javax.swing.JLabel(); jLabelOutputLifetime = new javax.swing.JLabel(); jLabelLifetimeUnits = new javax.swing.JLabel(); javax.swing.JButton jButton1 = new javax.swing.JButton(); jTextFieldDistance = new javax.swing.JTextField(); jLabel9 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jTextFieldBondAlbedo = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jTextFieldGreenhouse = new javax.swing.JTextField(); jLabel11 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); javax.swing.JButton jButton2 = new javax.swing.JButton(); jLabel13 = new javax.swing.JLabel(); jLabelTempKUnits = new javax.swing.JLabel(); jLabelTempCUnits = new javax.swing.JLabel(); jLabelTempFUnits = new javax.swing.JLabel(); jLabelOutputTempK = new javax.swing.JLabel(); jLabelOutputTempC = new javax.swing.JLabel(); jLabelOutputTempF = new javax.swing.JLabel(); jLabelSurfTemp = new javax.swing.JLabel(); jPanelDisplay.setBackground(new java.awt.Color(153, 203, 153)); jPanelStar.setBackground(new java.awt.Color(0, 0, 0)); jPanelStar.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jPanelStar.setForeground(new java.awt.Color(255, 255, 204)); jLabelStarPanel.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelStarPanel.setForeground(new java.awt.Color(255, 255, 204)); jLabelStarPanel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabelStarPanel.setText("Candidate Star"); jLabelMassInput.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelMassInput.setForeground(new java.awt.Color(255, 255, 204)); jLabelMassInput.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabelMassInput.setText("Mass"); jLabelMassInput.setToolTipText("Mass of Candidate Star"); jTextFieldMass.setBackground(new java.awt.Color(255, 255, 204)); jTextFieldMass.setColumns(10); jTextFieldMass.setFont(new java.awt.Font("Verdana", 0, 12)); jTextFieldMass.setHorizontalAlignment(javax.swing.JTextField.CENTER); jTextFieldMass.setText("1.0"); jTextFieldMass.setMaximumSize(new java.awt.Dimension(50, 20)); jTextFieldMass.setMinimumSize(new java.awt.Dimension(50, 20)); jTextFieldMass.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextFieldMassActionPerformed(evt); } }); jLabelMassUnits.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelMassUnits.setForeground(new java.awt.Color(255, 255, 204)); jLabelMassUnits.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabelMassUnits.setText("Sols"); jLabelLifetime.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelLifetime.setForeground(new java.awt.Color(255, 255, 204)); jLabelLifetime.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabelLifetime.setText("Lifetime"); jLabelLifetime.setToolTipText("Lifetime of Candidate Star"); jLabelOutputLifetime.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelOutputLifetime.setForeground(new java.awt.Color(255, 255, 204)); jLabelOutputLifetime.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabelOutputLifetime.setText("10,000,000,000"); jLabelLifetimeUnits.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelLifetimeUnits.setForeground(new java.awt.Color(255, 255, 204)); jLabelLifetimeUnits.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabelLifetimeUnits.setText("Years"); jButton1.setBackground(new java.awt.Color(0, 0, 0)); jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/wdv/images/star.png"))); // NOI18N jButton1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton1.setPreferredSize(new java.awt.Dimension(120, 120)); jTextFieldDistance.setBackground(new java.awt.Color(255, 255, 204)); jTextFieldDistance.setColumns(10); jTextFieldDistance.setFont(new java.awt.Font("Verdana", 0, 12)); jTextFieldDistance.setHorizontalAlignment(javax.swing.JTextField.CENTER); jTextFieldDistance.setText("1.0"); jTextFieldDistance.setMaximumSize(new java.awt.Dimension(50, 20)); jTextFieldDistance.setMinimumSize(new java.awt.Dimension(50, 20)); jTextFieldDistance.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextFieldDistanceActionPerformed(evt); } }); jLabel9.setFont(new java.awt.Font("Verdana", 0, 12)); jLabel9.setForeground(new java.awt.Color(255, 255, 204)); jLabel9.setText("Star - Planet Distance"); jLabel10.setFont(new java.awt.Font("Verdana", 0, 12)); jLabel10.setForeground(new java.awt.Color(255, 255, 204)); jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel10.setText("AU"); jLabel1.setFont(new java.awt.Font("Verdana", 0, 12)); jLabel1.setForeground(new java.awt.Color(255, 255, 204)); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("Candidate Planet"); jTextFieldBondAlbedo.setBackground(new java.awt.Color(255, 255, 204)); jTextFieldBondAlbedo.setColumns(10); jTextFieldBondAlbedo.setFont(new java.awt.Font("Verdana", 0, 12)); jTextFieldBondAlbedo.setHorizontalAlignment(javax.swing.JTextField.CENTER); jTextFieldBondAlbedo.setText("29"); jTextFieldBondAlbedo.setMaximumSize(new java.awt.Dimension(50, 20)); jTextFieldBondAlbedo.setMinimumSize(new java.awt.Dimension(50, 20)); jTextFieldBondAlbedo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextFieldBondAlbedoActionPerformed(evt); } }); jLabel5.setFont(new java.awt.Font("Verdana", 0, 12)); jLabel5.setForeground(new java.awt.Color(255, 255, 204)); jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel5.setText("Bond Albedo"); jLabel8.setFont(new java.awt.Font("Verdana", 0, 12)); jLabel8.setForeground(new java.awt.Color(255, 255, 204)); jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel8.setText("% Reflectance"); jTextFieldGreenhouse.setBackground(new java.awt.Color(255, 255, 204)); jTextFieldGreenhouse.setColumns(10); jTextFieldGreenhouse.setFont(new java.awt.Font("Verdana", 0, 12)); jTextFieldGreenhouse.setHorizontalAlignment(javax.swing.JTextField.CENTER); jTextFieldGreenhouse.setText("1"); jTextFieldGreenhouse.setMaximumSize(new java.awt.Dimension(50, 20)); jTextFieldGreenhouse.setMinimumSize(new java.awt.Dimension(50, 20)); jTextFieldGreenhouse.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextFieldGreenhouseActionPerformed(evt); } }); jLabel11.setFont(new java.awt.Font("Verdana", 0, 12)); jLabel11.setForeground(new java.awt.Color(255, 255, 204)); jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel11.setText("Greenhouse Effect"); jLabel12.setFont(new java.awt.Font("Verdana", 0, 12)); jLabel12.setForeground(new java.awt.Color(255, 255, 204)); jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel12.setText("0 to 500"); jButton2.setBackground(new java.awt.Color(0, 0, 0)); jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/wdv/images/planet.jpg"))); // NOI18N jButton2.setBorderPainted(false); jButton2.setPreferredSize(new java.awt.Dimension(120, 120)); jLabel13.setFont(new java.awt.Font("Verdana", 0, 12)); jLabel13.setForeground(new java.awt.Color(102, 102, 102)); jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel13.setText("Earth=1,Venus=200"); jLabelTempKUnits.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelTempKUnits.setForeground(new java.awt.Color(255, 255, 204)); jLabelTempKUnits.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabelTempKUnits.setText("°K"); jLabelTempCUnits.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelTempCUnits.setForeground(new java.awt.Color(255, 255, 204)); jLabelTempCUnits.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabelTempCUnits.setText("°C"); jLabelTempFUnits.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelTempFUnits.setForeground(new java.awt.Color(255, 255, 204)); jLabelTempFUnits.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabelTempFUnits.setText("°F"); jLabelOutputTempK.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelOutputTempK.setForeground(new java.awt.Color(255, 255, 204)); jLabelOutputTempK.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabelOutputTempK.setText("init"); jLabelOutputTempC.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelOutputTempC.setForeground(new java.awt.Color(255, 255, 204)); jLabelOutputTempC.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabelOutputTempC.setText("init"); jLabelOutputTempF.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelOutputTempF.setForeground(new java.awt.Color(255, 255, 204)); jLabelOutputTempF.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabelOutputTempF.setText("init"); jLabelSurfTemp.setFont(new java.awt.Font("Verdana", 0, 12)); jLabelSurfTemp.setForeground(new java.awt.Color(255, 255, 204)); jLabelSurfTemp.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabelSurfTemp.setText("Surface Temperature"); javax.swing.GroupLayout jPanelStarLayout = new javax.swing.GroupLayout(jPanelStar); jPanelStar.setLayout(jPanelStarLayout); jPanelStarLayout.setHorizontalGroup( jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelStarLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelStarLayout.createSequentialGroup() .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabelLifetime, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabelMassInput, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabelStarPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jTextFieldMass, javax.swing.GroupLayout.DEFAULT_SIZE, 136, Short.MAX_VALUE) .addComponent(jLabelOutputLifetime, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jTextFieldDistance, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1) .addComponent(jTextFieldBondAlbedo, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jTextFieldGreenhouse, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel13)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel12, javax.swing.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE) .addComponent(jLabel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel10) .addComponent(jLabelLifetimeUnits) .addComponent(jLabelMassUnits)) .addGap(27, 27, 27) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanelStarLayout.createSequentialGroup() .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabelOutputTempK, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabelOutputTempC, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabelOutputTempF, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabelTempKUnits) .addComponent(jLabelTempCUnits) .addComponent(jLabelTempFUnits))))) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelStarLayout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 265, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabelSurfTemp) .addGap(124, 124, 124))) .addContainerGap()) ); jPanelStarLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel9, jLabelLifetime, jLabelMassInput}); jPanelStarLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabelLifetimeUnits, jLabelMassUnits}); jPanelStarLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel11, jLabel5}); jPanelStarLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel12, jLabel8}); jPanelStarLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel13, jLabelOutputLifetime, jLabelStarPanel, jTextFieldMass}); jPanelStarLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jTextFieldBondAlbedo, jTextFieldGreenhouse}); jPanelStarLayout.setVerticalGroup( jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelStarLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelStarLayout.createSequentialGroup() .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelStarLayout.createSequentialGroup() .addComponent(jLabelStarPanel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabelMassUnits) .addComponent(jTextFieldMass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanelStarLayout.createSequentialGroup() .addGap(25, 25, 25) .addComponent(jLabelMassInput))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabelOutputLifetime) .addComponent(jLabelLifetime) .addComponent(jLabelLifetimeUnits)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jTextFieldDistance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel9) .addComponent(jLabel10))) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelStarLayout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jTextFieldBondAlbedo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel5) .addComponent(jLabel8)) .addGap(18, 18, 18) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jTextFieldGreenhouse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel11) .addComponent(jLabel12)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel13)) .addComponent(jButton2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanelStarLayout.createSequentialGroup() .addComponent(jLabelOutputTempK) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabelOutputTempC) .addComponent(jLabelSurfTemp)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabelOutputTempF)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanelStarLayout.createSequentialGroup() .addComponent(jLabelTempKUnits) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelStarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelStarLayout.createSequentialGroup() .addGap(22, 22, 22) .addComponent(jLabelTempFUnits)) .addComponent(jLabelTempCUnits)))) .addContainerGap(25, Short.MAX_VALUE)) ); jPanelStarLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jLabel1, jTextFieldBondAlbedo, jTextFieldGreenhouse}); jPanelStarLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jLabelOutputLifetime, jTextFieldMass}); jPanelStarLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jLabelLifetime, jLabelMassInput}); jPanelStarLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jLabelLifetimeUnits, jLabelMassUnits}); jPanelStarLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jLabel11, jLabel5, jLabel9}); jPanelStarLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jLabel12, jLabel8}); javax.swing.GroupLayout jPanelDisplayLayout = new javax.swing.GroupLayout(jPanelDisplay); jPanelDisplay.setLayout(jPanelDisplayLayout); jPanelDisplayLayout.setHorizontalGroup( jPanelDisplayLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelDisplayLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanelStar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); jPanelDisplayLayout.setVerticalGroup( jPanelDisplayLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelDisplayLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanelStar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanelDisplay, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanelDisplay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); }// //GEN-END:initComponents private void jTextFieldBondAlbedoActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jTextFieldBondAlbedoActionPerformed {//GEN-HEADEREND:event_jTextFieldBondAlbedoActionPerformed calcAndDisplayTempAndLifetime(); }//GEN-LAST:event_jTextFieldBondAlbedoActionPerformed private void jTextFieldGreenhouseActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jTextFieldGreenhouseActionPerformed {//GEN-HEADEREND:event_jTextFieldGreenhouseActionPerformed calcAndDisplayTempAndLifetime(); }//GEN-LAST:event_jTextFieldGreenhouseActionPerformed private void jTextFieldDistanceActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jTextFieldDistanceActionPerformed {//GEN-HEADEREND:event_jTextFieldDistanceActionPerformed calcAndDisplayTempAndLifetime(); }//GEN-LAST:event_jTextFieldDistanceActionPerformed private void jTextFieldMassActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jTextFieldMassActionPerformed {//GEN-HEADEREND:event_jTextFieldMassActionPerformed calcAndDisplayTempAndLifetime(); }//GEN-LAST:event_jTextFieldMassActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables javax.swing.JLabel jLabel1; javax.swing.JLabel jLabel10; javax.swing.JLabel jLabel11; javax.swing.JLabel jLabel12; javax.swing.JLabel jLabel13; javax.swing.JLabel jLabel5; javax.swing.JLabel jLabel8; javax.swing.JLabel jLabel9; javax.swing.JLabel jLabelLifetime; javax.swing.JLabel jLabelLifetimeUnits; javax.swing.JLabel jLabelMassInput; javax.swing.JLabel jLabelMassUnits; javax.swing.JLabel jLabelOutputLifetime; javax.swing.JLabel jLabelOutputTempC; javax.swing.JLabel jLabelOutputTempF; javax.swing.JLabel jLabelOutputTempK; javax.swing.JLabel jLabelStarPanel; javax.swing.JLabel jLabelSurfTemp; javax.swing.JLabel jLabelTempCUnits; javax.swing.JLabel jLabelTempFUnits; javax.swing.JLabel jLabelTempKUnits; javax.swing.JPanel jPanelStar; javax.swing.JTextField jTextFieldBondAlbedo; javax.swing.JTextField jTextFieldDistance; javax.swing.JTextField jTextFieldGreenhouse; javax.swing.JTextField jTextFieldMass; // End of variables declaration//GEN-END:variables /** * */ public void calcAndDisplayTempAndLifetime() { DecimalFormat Temperature = new DecimalFormat("###,###"); DecimalFormat Lifetime = new DecimalFormat("###,###,###,###,###,000"); double mass = Double.parseDouble(this.jTextFieldMass.getText()); double albedo = Double.parseDouble(this.jTextFieldBondAlbedo.getText()) / 100.0; double greenhouse = Double.parseDouble(this.jTextFieldGreenhouse.getText()); double distance = Double.parseDouble(this.jTextFieldDistance.getText()); double tempK = calculateSurfaceTemperature(albedo, mass, distance, greenhouse); double tempC = tempK - 273.15; double tempF = tempK * (1.8) - 459.67; double lifetime = pow(10, 10) * pow(mass, -2.0); jLabelOutputLifetime.setText(Lifetime.format(lifetime)); jLabelOutputTempK.setText(Temperature.format(tempK)); jLabelOutputTempC.setText(Temperature.format(tempC)); jLabelOutputTempF.setText(Temperature.format(tempF)); } /** * * @param albedo - reflectance as value from 0.0 to 1.0 * @param mass - mass of star in unit suns * @param distance - distance from star to planet in AU * @param greenhouse - constant from 0 to 500, Earth is 1.0, Venus is 200.0 * @return - planet surface temperature in degrees Kelvin * */ public double calculateSurfaceTemperature(double albedo, double mass, double distance, double greenhouse) { double earthSunDistanceInCm = 1.495978707E13; // Pitjeva and Standish 2009 page 370 as of 2009 +/- 300 cm double stefanBoltzmanConstant = 5.6704E-05; // wiki double luminosityConstant = 3.846E33; // Simonelli double greenhouseConstant = 0.5841; // Simonelli double luminosity = luminosityConstant*pow(mass,3); double planetStarDistanceInCm = distance * earthSunDistanceInCm; double tau = greenhouseConstant*greenhouse; double term1 = (1.0 - albedo) * luminosity/(16.0 *Math.PI*stefanBoltzmanConstant); double T_eff = pow( term1, 0.25 ) * (1.0/sqrt(planetStarDistanceInCm)); double T__eq = pow( T_eff, 4 ) * (1.0 + (3.0 * tau / 4.0)); double T_sur = T__eq/0.9; double T_Kel = pow(T_sur, 0.25); return (T_Kel); } /** * Interface to math exponentiation method. * @param value * @param exponent * @return value raised to the exponent */ public double pow(double value, double exponent) { return (Math.pow(value, exponent)); } /** * Interface to square root method. * @param value * @return square root of value */ public double sqrt(double value) { return (Math.sqrt(value)); } /** * * @param s * @return s with commas. */ public String withCommas(String s) { if (s.length() < 4) { return s; } return withCommas(s.substring(0, s.length() - 3)) + "," + s.substring(s.length() - 3, s.length()); } }