[PYTHON] Exécutez NASA CEA sur Mac OS X

Opérations requises pour exécuter le CEA de la NASA avec des commandes. Windows est relativement facile, mais Mac est un peu ennuyeux. J'ai essayé Mac Book Air, OSX yosemite Pour ceux qui savent ce qu'est le CEA.

Si vous pouvez lire l'anglais, veuillez vous référer au PDF et à YouTube ci-dessous. Tout est écrit. http://spase.stanford.edu/CEA_files/cea_how_to_gfortran_snowleo.pdf https://www.youtube.com/watch?v=CGpxfxmqA-c

gfortran Installez XCode et les outils de ligne de commande pour utiliser GCC. Vous pouvez maintenant compiler Fortran avec la commande gfortran. http://qiita.com/ShinichiOkayama/items/962e55ac7f8920a5f007

Téléchargement et chemin du CEA

Accédez à ce site du NASA Glen Research Center. http://www.grc.nasa.gov/WWW/CEAWeb/ceaguiDownload-unix.htm Téléchargez le fichier suivant à partir d'ici et déplacez-le vers le dossier que vous souhaitez installer.

J'ai créé un dossier appelé ~ / Applications / NASAcea. スクリーンショット 2015-02-27 00.41.56.png

Démarrez maintenant le terminal. Allez dans ~ / Applications / NASAcea sur le terminal et

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

Et décongeler. En outre, entrez les paramètres suivants comme paramètres d'autorisation de fichier.

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

Maintenant, transmettez le chemin d'accès au dossier pour qu'il puisse être exécuté.

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

Également utilisé par d'autres utilisateurs

Pour le rendre disponible à d'autres utilisateurs, procédez comme suit. Non requis pour un usage personnel.

sudo vi /etc/paths

Ajoutez donc ce qui suit à la dernière ligne de ce fichier:

~/Applications/NASAcea

Mise à jour du fichier CEA

Mettez à jour le fichier exécutable. Entrez ce qui suit au terminal.

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

Après cela, entrez les commandes afin de mettre à jour la bibliothèque. (Au lieu de copier et coller en continu, insérez ligne par ligne). [Ajout] FCEA2 a un chemin, et lors de l'exécution dans un autre répertoire, il est nécessaire de le mettre dans le répertoire où thrmo.inp, trans.inp, cea2.inp est exécuté à l'avance. Après avoir exécuté la commande suivante, il est normal que le fichier trans.lib, thermo.lib, (cea2.lib) contienne des caractères illisibles dans le fichier binaire. Dans le cas des fichiers de, je ne l'ai pas bien dit.

FCEA2
trans
FCEA2
thermo
FCEA2
cea2

C'est tout.

échantillon

À titre de test, montrons les performances du moteur de fusée Kerosin / LOX. Créez un fichier texte appelé sample.inp. L'extension .inp est importante. Le contenu est le suivant.

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

Allez maintenant dans le dossier avec sample.inp sur le terminal et

FCEA2
sample

Cette deuxième ligne contient la partie nom du fichier inp. C'est le résultat car un fichier appelé sample.out apparaît dans le même dossier.

Si vous ne savez pas comment créer un fichier .inp pour CEA, écrivez ce que vous voulez faire avec la version en ligne de CEA et cliquez dessus. Enfin, le fichier .inp apparaîtra avec le fichier de résultat, alors reportez-vous à cela. https://cearun.grc.nasa.gov/

référence

Il y a un exemple vers la fin de l'article appelé NASA-RP1311. http://www.frad.t.u-tokyo.ac.jp/public/cea/doc/xRP-1311P2.pdf Par exemple, en ce qui concerne les fusées, c'est dans les EXEMPLES 8 ~ 14. La partie du problème à la fin après le commentaire # doit être un fichier .inp.

Scripté

Les résultats produits par le CEA sont démodés et difficiles à résumer, il est donc nécessaire de les résumer. Essayez-le avec un script python. Certaines personnes créent des interfaces CEA dans Matlab https://github.com/PurdueH2Lab/MatlabCEA Plutôt que de créer une interface décente, la frapper directement avec un script serait une approche simple. Par exemple, calculons les performances d'un moteur-fusée à oxygène liquide / hydrogène liquide. Vous pouvez l'utiliser en modifiant le nom du fichier ou la partie du fichier .inp selon le cas. Placez le fichier .py suivant dans le même dossier que FCEA2 et exécutez .py depuis le terminal. J'ai déménagé dans le dossier FCEA2 (~ / Applications / NASAcea) avec ipython

run LH2LO2.py

Est en cours d'exécution.

LH2LO2.py


# -*- coding: utf-8 -*-
import sys
reload(sys)
#Modifiez le code de caractère par défaut.
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' #Fichier créé temporairement
	
	# ---- .création de fichier inp----
	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') #Ouvrir en mode écriture
	f.write(str) #Ecrire la chaîne d'argument dans un fichier
	f.close() #Fermer le fichier

	# ----Commande FCEA2----
	#L'emplacement de FCEA2~/Applications/NASAcea/FCEA2 est utilisé, mais réécrivez le cas échéant
	cmd = '~/Applications/NASAcea/FCEA2'
	p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
	p.communicate(file_name)

	# ---- .lecture du fichier plt----
	output_file = file_name + '.plt'
	with open(output_file, 'r') as f:
	    reader = csv.reader(f, delimiter=' ')
	    header = next(reader)  #Ignorer l'en-tête

	    index = 0
	    for row in reader:
	    	while row.count("") > 0:
	    		row.remove("")
	        # print row          #Affichage de la liste ligne par ligne
	        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]

	#Supprimer le fichier
	os.remove(input_file)
	os.remove(output_file)

	return data

if __name__ == '__main__': #main (commence ici)
	data_file = '00output.csv'

	plt.ion()
	plt.figure()

	# ----Spécification des paramètres----
	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]) #Emplacement de stockage des données à écrire en CSV
	# ----Bouclez la commande----
	#Dans cet exemple, la pression de la chambre de combustion est sur l'axe horizontal, O/Je veux TRACER avec F sur l'axe vertical, donc O/Boucle dans l'ordre de F → pression
	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 #Pression de la chambre de combustion MPa
		of = data_array[:,1] # O/F
		Isp = data_array[:,2] / g #Poussée spécifique maritime sec
		Ivac = data_array[:,3] / g #Poussée spécifique sous vide sec
		Cf = data_array[:,4] #Coefficient de poussée Cf
		# ---- PLOT ----Par exemple, TRACEZ la pression de la chambre de combustion et la poussée relative en mer.
		plt.plot(press, Isp, label='O/F=%.1f' % (j))
		# ----      ----
		save_array = np.vstack([save_array, data_array])

	# ----Enregistrer les résultats au format CSV----
	header = u'chamber[MPa]\tof[-]\tisp[sec]\tivac[sec]\taeat[-]\tcf[-]'
	np.savetxt(data_file, save_array, fmt='%.3f', delimiter='\t', header = header)

	# ----Paramètres PLOT----
	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)

J'obtiens ce résultat. figure_1.png

Recommended Posts

Exécutez NASA CEA sur Mac OS X
Mémo sur Mac OS X
Installez Sphinx sur MacOSX
Installez mitmproxy sur Mac OS X
Installez pgmagick sur Mac OS X 10.9
Aws-cli installé sur Mac OS X Lion
Préparation à l'exécution d'ImageMagick + im4java sur Mac OS
Shpinx (Python Document Builder) sur Mac OS X
Préparation à l'utilisation de aws cli sur Mac OS X
Création d'un environnement pour "Tello_Video" sur Mac OS X
Essayez d'utiliser E-Cell 4 sur Windows 7 ou Mac OS X
Exécutez Tensorflow 2.x sur Python 3.7
Créer un environnement de développement Python sur Mac OS X
Utilisation de plusieurs versions de Python sur Mac OS X (2) Utilisation
Utilisation du SDK NAOqi 2.4.2 Python avec Mac OS X El Capitan
Comment installer Theano sur Mac OS X avec homebrew
Installez Scipy sur Mac OS Sierra
Utilisation de plusieurs versions de Python sur Mac OS X (1) Installation de plusieurs ver
Suite ・ Notes sur la préparation de l'environnement de développement Python sur Mac OS X
Installez lp_solve sur Mac OSX et appelez-le avec python.
Sphinx-autobuild (0.5.2) sous Windows7, Python 3.5.1, Sphinx 1.3.5
Installez Sphinx sur MacOSX
Comment installer Theano sur Mac OS X 10.10 (en utilisant pyenv, anaconda)
Construction de l'environnement de développement Mac OS X Mavericks 10.9.5
Installez matplotlib sur OS X El Capitan
Comment effacer Python 2.x sur Mac.
Construction de l'environnement GeoDjango + SQLite sur OS X
Construction de l'environnement de développement Mac OS X Yosemite 10.10
Mémo de construction de l'environnement de développement Mac OS X
[Juste une note] Jusqu'à ce que Keras + TensorFlow fonctionne sur Mac OSX Sierra
python sur mac
Mettez Python 2.7.x dans pyenv sur Mac OSX 10.15.5
Construction de l'environnement de développement Mac OS X Mountain Lion 10.8.5
Installation de TensorFlow 0.11.0rc2 sur OS X El Capitan (10.11.6)
Exécutez le wrapper Python de l'API Qiita v2 dans un environnement Python 3 (Mac OS X 10.11 (El Capitan))
Lorsque l'importation de tkinter n'est pas possible avec Mac OS X 10.11.3 (El Capitan) + pyenv + Python 3.5.1.
Instructions d'utilisation de l'interface de ligne de commande AWS (Python / awscli) sous Mac OS X
Créer un environnement Python d'apprentissage automatique sur Mac OS
mac OS X 10.15.x pyenv Python Si vous ne pouvez pas installer
Créer un environnement de développement Python avec OS X Lion
Installez pyenv sur Mac
Pyenv + virtualenv sur Mac
Installez Ansible sur Mac
Exécutez Django sur PythonAnywhere
Installez Python sur Mac
Installer Python 3 dans un environnement Mac
Exécutez mysqlclient sur Lambda
installation de numba sur mac
J'ai installé Caffe pour pouvoir faire du Deep Learning avec MAC OS X El Capitan
Installez Python 3.4 sur Mac
Installer mecab sur Mac
installer mecab-python sur Mac
Essayez deepdream sur Mac
Remarque: lorsque Python est exécuté sur ImageJ Fiji, java.lang.IllegalArgumentException apparaît et sa solution (mac OS)
Nombre de mots avec Apache Spark et python (Mac OS X)
Présentation de l'utilitaire de package de roues delocate pour Mac OS X
Tester Python avec Miniconda dans un environnement OS X et Linux avec travis-ci
Procédure de construction de l'environnement pour la salle de sport "Open AI Gym" qui entraîne l'IA à des jeux sur Mac OS X