ヘリウムの浮力計算サンプル

◆直径1.5mの場合
・生地(0.2[kg/m^2])の重量

表面積[m^2] x 生地の重量[kg/m^2] = 生地の総重量[kg]
(4 * 3.14 * 0.75^2) * 0.2 = 1.413[kg]


・バルーンの体積計算

4/3 * 3.14 * 0.75^3 = 1.765[m^3]


・バルーンの体積からヘリウムの浮力を逆算

1.765[m^3] * 1.06[kg/m^3] = 1.872[kg]


・積載可能な重量

積載可能な重量 = 浮力 - 生地の体積 = 1.872[kg] - 1.413[kg] = 0.459[kg] = 459[g]


となります。


◆ソース添付 calc_buoyancy.pl

#!/usr/bin/perl
#============================================
# Name: 浮力を計算する
# Author: Yuki ANAI
# Update: 2012/02/20
# Usage1: $ perl calc_buoyancy.pl -kiji 201 -tyokkei 100
# Usage2: $ perl calc_buoyancy.pl -furyoku 100
#============================================
use strict;
use warnings;
use utf8;
use Data::Dumper;
use Getopt::Long;

# 生地の厚さ(kg/m^2)
my $CLOSS = 0.2;
# バルーンの半径(m)
my $RADIUS = 0.75;
# 浮力
my $BUOYANCY = -1;
# 気温(°C)
my $TEMPERATURE = 15;
# デバッグ
my $DEBUG = 1;

# 引数取得
GetOptions(
  'closs=i'             => \$CLOSS,
  'radius=s'            => \$RADIUS,
  'buoyancy=i'          => \$BUOYANCY,
  'temperature=i'       => \$TEMPERATURE,
  'debug=i'             => \$DEBUG
);

# マルチバイト文字のwarningめんどくさい
no warnings;

# 設定確認
print '=====================================', $/;
print 'closs(生地の重量): ', $CLOSS, '[kg/m^2]', $/;
print 'radius(バルーンの半径): ', $RADIUS, '[m]', $/;
print 'buoyancy(浮力): ', $BUOYANCY, '[kg]', $/;
print 'temperature(気温): ', $TEMPERATURE, '[*C]', $/;
print 'debug(デバッグ): ', $DEBUG, $/;
print '=====================================', $/;

# 浮力から逆算モード
if ($BUOYANCY != -1) {

}
# 生地とバルーン半径から浮力計算モード
else {
  # TODO: 密度計算 0.178
  my $helium_density = 1.06; # 15°Cの時

  # 生地の総重量計算
  # 表面積[m^2] x 生地の重量[kg/m^2] = 生地の総重量[kg]
  my $closs_cost = (4 * 3.14 * ($RADIUS ** 2)) * $CLOSS;
  print 'closs_cost:', $closs_cost, '[kg]', $/;

  # バルーンの体積計算
  # (4 * π * r^3) / 3 = バルーンの体積[m^3]
  my $balloon_volume = (4 * 3.14 * ($RADIUS ** 3)) / 3;
  print 'balloon_volume:', $balloon_volume, '[m^3]', $/;

  # バルーンの体積からヘリウムの浮力を逆算
  # バルーンの体積[m^3] * kg/m^3あたりのヘリウムの浮力[kg/m^3] = ヘリウムの浮力[kg]
  my $helium_buoyancy = $balloon_volume * $helium_density;
  print 'helium_buoyancy:', $helium_buoyancy, '[kg]', $/;

  # 積載可能重量
  # 積載可能な重量 = バルーンの浮力 - 生地の体積
  $BUOYANCY = $helium_buoyancy - $closs_cost;
  print 'buoyancy:', $BUOYANCY, '[kg] = ', $BUOYANCY * 1000, '[g]', $/;
}

1;