[PYTHON] Führen Sie NASA CEA unter Mac OS X aus

Operationen, die erforderlich sind, um die CEA der NASA mit Befehlen auszuführen. Windows ist relativ einfach, aber Mac ist etwas nervig. Ich habe Mac Book Air, OSX Yosemite ausprobiert Für diejenigen, die wissen, was CEA ist.

Wenn Sie Englisch lesen können, lesen Sie bitte das PDF und Youtube unten. Es ist alles geschrieben. http://spase.stanford.edu/CEA_files/cea_how_to_gfortran_snowleo.pdf https://www.youtube.com/watch?v=CGpxfxmqA-c

gfortran Installieren Sie die XCode- und Befehlszeilentools, um GCC zu verwenden. Jetzt können Sie Fortran mit dem Befehl gfortran kompilieren. http://qiita.com/ShinichiOkayama/items/962e55ac7f8920a5f007

CEA Download und Pfad

Besuchen Sie diese Website des NASA Glen Research Center. http://www.grc.nasa.gov/WWW/CEAWeb/ceaguiDownload-unix.htm Laden Sie die folgende Datei von hier herunter und verschieben Sie sie in den Ordner, den Sie installieren möchten.

Ich habe einen Ordner namens ~ / Applications / NASAcea erstellt. スクリーンショット 2015-02-27 00.41.56.png

Starten Sie nun das Terminal. Gehen Sie auf dem Terminal zu ~ / Applications / NASAcea und

zcat CEA+Fortran.tar.Z | tar xvf -
zcat CEAexec-mac.tar.Z | tar xvf -
zcat CEAgui-jar.tar.Z | tar xvf -

Und auftauen. Geben Sie außerdem Folgendes als Dateiberechtigungseinstellungen ein.

chmod a+x b1b2b3
chmod a+x syntax
chmod a+x FCEA2
chmod a+x runCEA.sh

Übergeben Sie nun den Pfad an den Ordner, damit er ausgeführt werden kann.

echo 'export PATH=$HOME/Applications/NASAcea:$PATH' >> ~/.bash_profile
bash -login

Wird auch von anderen Benutzern verwendet

Gehen Sie wie folgt vor, um es anderen Benutzern zur Verfügung zu stellen. Nicht für den persönlichen Gebrauch erforderlich.

sudo vi /etc/paths

Fügen Sie der letzten Zeile dieser Datei Folgendes hinzu:

~/Applications/NASAcea

Aktualisierung der CEA-Datei

Aktualisieren Sie die ausführbare Datei. Geben Sie am Terminal Folgendes ein.

gfortran cea2.f
mv a.out FCEA2
gfortran b1b2b3.f
mv a.out b1b2b3
gfortran syntax.f
mv a.out syntax

Geben Sie danach Befehle ein, um die Bibliothek zu aktualisieren. (Anstatt kontinuierlich zu kopieren und einzufügen, fügen Sie Zeile für Zeile ein.) [Addition] FCEA2 hat einen Pfad, und wenn es in einem anderen Verzeichnis ausgeführt wird, muss es in das Verzeichnis gestellt werden, in dem thrmo.inp, trans.inp, cea2.inp vorab ausgeführt wird. Nach dem Ausführen des folgenden Befehls ist es normal, dass die Datei trans.lib, thermo.lib (cea2.lib) unlesbare Zeichen in der Binärdatei enthält. Bei Dateien von habe ich es nicht gut gesagt.

FCEA2
trans
FCEA2
thermo
FCEA2
cea2

Das ist es.

Stichprobe

Lassen Sie uns als Test die Leistung des Kerosin / LOX-Raketentriebwerks zeigen. Erstellen Sie eine Textdatei mit dem Namen sample.inp. Die Erweiterung .inp ist wichtig. Der Inhalt ist wie folgt.

sample.inp


problem    o/f=2.5,
    rocket  equilibrium  frozen  nfz=2 
  p,bar=100,
  pi/p=100,
react  
  fuel=RP-1 wt=100  t,k=298.15  
  oxid=O2(L) wt=100  t,k=90.17  
output  
    plot o/f isp aeat cf t 
end

Gehen Sie nun in den Ordner mit sample.inp auf dem Terminal und

FCEA2
sample

Diese zweite Zeile enthält den Namensteil der INP-Datei. Dies ist das Ergebnis, da eine Datei mit dem Namen sample.out im selben Ordner angezeigt wird.

Wenn Sie nicht wissen, wie Sie eine INP-Datei für CEA erstellen, schreiben Sie, was Sie mit der Online-Version von CEA tun möchten, und klicken Sie darauf. Schließlich wird die INP-Datei zusammen mit der Ergebnisdatei angezeigt. https://cearun.grc.nasa.gov/

Referenz

Gegen Ende des Dokuments gibt es ein Beispiel mit dem Namen NASA-RP1311. http://www.frad.t.u-tokyo.ac.jp/public/cea/doc/xRP-1311P2.pdf Zum Beispiel in Bezug auf Raketen ist es in BEISPIEL 8 ~ 14. Der Teil vom Problem bis zum Ende nach dem Kommentar # sollte eine INP-Datei sein.

Skripted

Die von CEA erzielten Ergebnisse sind altmodisch und schwer zusammenzufassen, daher ist es notwendig, sie zusammenzufassen. Versuchen Sie es mit einem Python-Skript. Einige Leute machen CEA-Schnittstellen in Matlab https://github.com/PurdueH2Lab/MatlabCEA Anstatt eine anständige Oberfläche zu erstellen, wäre es ein einfacher Ansatz, sie direkt mit einem Skript zu treffen. Berechnen wir zum Beispiel die Leistung eines Raketentriebwerks mit flüssigem Sauerstoff / flüssigem Wasserstoff. Sie können es verwenden, indem Sie den Dateinamen oder den Teil der INP-Datei entsprechend ändern. Legen Sie die folgende .py-Datei im selben Ordner wie FCEA2 ab und führen Sie .py vom Terminal aus. Ich bin mit ipython in den FCEA2-Ordner (~ / Applications / NASAcea) gewechselt

run LH2LO2.py

Läuft.

LH2LO2.py


# -*- coding: utf-8 -*-
import sys
reload(sys)
#Ändern Sie den Standardzeichencode.
sys.setdefaultencoding('utf-8')

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from matplotlib.font_manager import FontProperties
from scipy import optimize
import csv
import os
import subprocess

# for Mac
font_path = '/Library/Fonts/Osaka.ttf'
font_prop = matplotlib.font_manager.FontProperties(fname=font_path)
matplotlib.rcParams['font.family'] = font_prop.get_name()

def cea (set_of, set_chamber):
	file_name = '00temp' #Vorübergehend erstellte Datei
	
	# ---- .Erstellung einer INP-Datei----
	input_file = file_name + '.inp'
	str = """problem    o/f=%.1f,
	    rocket  equilibrium  frozen  nfz=2 
	  p,bar = %d
	  pi/p= %d
	react  
	  fuel=H2(L) wt=100  t,k=20.27  
	  oxid=O2(L) wt=100  t,k=90.17  
	output  
	    plot p pi/p o/f isp ivac aeat cf t 
	end
	""" % (set_of, set_chamber, set_chamber)
	 
	f = open(input_file, 'w') #Im Schreibmodus öffnen
	f.write(str) #Schreiben Sie die Argumentzeichenfolge in eine Datei
	f.close() #Datei schließen

	# ----FCEA2-Befehl----
	#Der Standort von FCEA2~/Applications/NASAcea/FCEA2 wird verwendet, aber entsprechend neu geschrieben
	cmd = '~/Applications/NASAcea/FCEA2'
	p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
	p.communicate(file_name)

	# ---- .plt Datei gelesen----
	output_file = file_name + '.plt'
	with open(output_file, 'r') as f:
	    reader = csv.reader(f, delimiter=' ')
	    header = next(reader)  #Header überspringen

	    index = 0
	    for row in reader:
	    	while row.count("") > 0:
	    		row.remove("")
	        # print row          #Liste zeilenweise auflisten
	        if index == 0:
	        	chamber = float(row[0])
	        elif index == 2:
	        	of = float(row[2])
	        	isp = float(row[3])
	        	ivac = float(row[4])
	        	aeat = float(row[5])
	        	cf = float(row[6])
	        index += 1
	    data = [chamber, of, isp, ivac, aeat, cf]

	#Datei löschen
	os.remove(input_file)
	os.remove(output_file)

	return data

if __name__ == '__main__': #main (beginnt hier)
	data_file = '00output.csv'

	plt.ion()
	plt.figure()

	# ----Parameterspezifikation----
	of_array = np.linspace(3.0, 6.0, 7)
	# chamber_array = np.linspace(5, 40, 30)
	chamber_array = np.linspace(10, 200, 30)
	data_array = np.zeros((len(chamber_array), 6))
	save_array = np.zeros([1,6]) #Lagerort der Daten, die in CSV geschrieben werden sollen
	# ----Schleife den Befehl----
	#In diesem Beispiel liegt der Brennkammerdruck auf der horizontalen Achse O./Ich möchte mit F auf der vertikalen Achse plotten, also O./Schleife in der Reihenfolge F → Druck
	for j in of_array:
		k = 0
		for i in chamber_array:
			data = cea(j, i)
			print data
			data_array[k] = np.array(data)
			k+=1
		g = 9.80665
		press = data_array[:,0] / g #Brennkammerdruck MPa
		of = data_array[:,1] # O/F
		Isp = data_array[:,2] / g #Seespezifischer Schub sek
		Ivac = data_array[:,3] / g #Spezifischer Schub im Vakuum sek
		Cf = data_array[:,4] #Schubkoeffizient Vgl
		# ---- PLOT ----Zeichnen Sie beispielsweise den Brennkammerdruck und den relativen Schub auf See.
		plt.plot(press, Isp, label='O/F=%.1f' % (j))
		# ----      ----
		save_array = np.vstack([save_array, data_array])

	# ----Speichern Sie die Ergebnisse in CSV----
	header = u'chamber[MPa]\tof[-]\tisp[sec]\tivac[sec]\taeat[-]\tcf[-]'
	np.savetxt(data_file, save_array, fmt='%.3f', delimiter='\t', header = header)

	# ----PLOT-Einstellungen----
	plt.xlim(0,20)
	plt.xlabel('Pressure (MPa)')
	plt.ylabel('Isp (sec)')
	plt.grid()
	plt.title('LOX/LH2 100%  equilibrium  frozen  nfz=2')
	plt.legend(loc='best', fontsize=12)

Ich bekomme dieses Ergebnis. figure_1.png

Recommended Posts

Führen Sie NASA CEA unter Mac OS X aus
Hinweise zur Vorbereitung der Python-Entwicklungsumgebung unter Mac OS X.
Installieren Sie Sphinx unter MacOSX
Installieren Sie mitmproxy unter Mac OS X.
Installieren Sie pgmagick unter Mac OS X 10.9
Installiert aws-cli Unter Mac OS X Lion
Vorbereiten der Ausführung von ImageMagick + im4java unter Mac OS
Shpinx (Python Document Builder) unter Mac OS X.
Vorbereiten der Verwendung von aws cli unter Mac OS X.
Erstellen einer Umgebung für "Tello_Video" unter Mac OS X.
Versuchen Sie es mit E-Cell 4 unter Windows 7 oder Mac OS X.
Führen Sie Tensorflow 2.x unter Python 3.7 aus
Erstellen Sie eine Python-Entwicklungsumgebung unter Mac OS X.
Verwenden mehrerer Versionen von Python unter Mac OS X (2) Verwendung
Verwenden von NAOqi 2.4.2 Python SDK mit Mac OS X El Capitan
So installieren Sie Theano unter Mac OS X mit Homebrew
Installieren Sie Scipy unter Mac OS Sierra
Verwenden mehrerer Versionen von Python unter Mac OS X (1) Installation von Multiple Ver
Fortsetzung ・ Hinweise zur Vorbereitung der Python-Entwicklungsumgebung unter Mac OS X.
Installieren Sie lp_solve unter Mac OSX und rufen Sie es mit Python auf.
Sphinx-Autobuild (0.5.2) unter Windows7, Python 3.5.1, Sphinx 1.3.5
Installieren Sie Sphinx unter MacOSX
So installieren Sie Theano unter Mac OS X 10.10 (mit pyenv, anaconda)
Mac OS X Mavericks 10.9.5 Aufbau einer Entwicklungsumgebung
Installieren Sie matplotlib unter OS X El Capitan
So löschen Sie Python 2.x auf einem Mac.
GeoDjango + SQLite-Umgebungskonstruktion unter OS X.
Mac OS X Yosemite 10.10 Aufbau einer Entwicklungsumgebung
Konstruktionsnotiz für die Mac OS X-Entwicklungsumgebung
[Nur eine Anmerkung] Bis Keras + TensorFlow unter Mac OSX Sierra funktioniert
Python auf Mac
Fügen Sie Python 2.7.x in pyenv unter Mac OSX 10.15.5 ein
Mac OS X Mountain Lion 10.8.5 Aufbau einer Entwicklungsumgebung
Installation von TensorFlow 0.11.0rc2 unter OS X El Capitan (10.11.6)
Führen Sie den Qiita API v2 Python-Wrapper in einer Python 3-Umgebung aus (Mac OS X 10.11 (El Capitan)).
Wenn der Import von tkinter unter Mac OS X 10.11.3 (El Capitan) + pyenv + Python 3.5.1 nicht möglich ist.
Anweisungen zur Verwendung der AWS-Befehlszeilenschnittstelle (Python / awscli) unter Mac OS X.
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
mac OS X 10.15.x pyenv Python Wenn Sie nicht installieren können
Erstellen Sie eine Python-Entwicklungsumgebung mit OS X Lion
Installieren Sie pyenv auf dem Mac
Pyenv + virtualenv auf dem Mac
Installieren Sie Ansible auf einem Mac
Führen Sie Django auf PythonAnywhere aus
Installieren Sie Python auf dem Mac
Installieren von Python 3 in einer Mac-Umgebung
Führen Sie mysqlclient auf Lambda aus
numba Installation auf dem Mac
Ich habe Caffe installiert, damit ich Deep Learning mit MAC OS X El Capitan durchführen kann
Installieren Sie Python 3.4 auf einem Mac
Installieren Sie Mecab auf dem Mac
Installieren Sie Mecab-Python auf dem Mac
Versuchen Sie Deepdream auf dem Mac
Hinweis: Wenn Python auf ImageJ Fiji ausgeführt wird, wird java.lang.IllegalArgumentException und seine Lösung (Mac OS) angezeigt.
Word Count mit Apache Spark und Python (Mac OS X)
Einführung in das Radpaket-Dienstprogramm delocate für Mac OS X.
Testen Sie Python mit Miniconda unter OS X und Linux mit travis-ci
Umgebungskonstruktionsverfahren für das Fitnessstudio "Open AI Gym", das KI in Spielen unter Mac OS X trainiert