Ich habe FiPy nicht verwendet, sondern nur OpenFOAM , aber ich denke, einige Punkte auf beiden Homepages legen nahe, dass es stark davon abhängt, was Sie simulieren möchten.
OpenFOAM hat bereits einige Löser implementiert (meistens CFD, da Ihr Profil die rechnergestützte Plasmaphysik angibt, der mhdFoam
Löser kann das sein, was Sie wollen oder zumindest als Basis dienen, hier ist seine Benutzergruppe), kann aber erweitert werden, um andere FVM-mögliche PDEs zu lösen In FiPy müssen Sie die Gleichungen wahrscheinlich sowieso von Grund auf neu implementieren - und im letzteren Fall ist Python zumindest für mich viel komfortabler als C ++.
Es gibt einige Python-Codes, die das Leben mit OpenFOAM erleichtern: PyFoam zum Einrichten von Fällen und Pythonflu , ein Wrapper zum Schreiben von Lösern in Python (ungetestet, ich weiß nicht, wie das funktioniert).
Meiner Erfahrung nach ist das Einrichten eines Falls in OpenFOAM ziemlich mühsam und Sie werden höchstwahrscheinlich ohnehin Skripte schreiben, um das Mesh-Setup usw. zu automatisieren. Daher weiß ich nicht, ob FiPy tatsächlich so viel mehr Aufwand erfordern würde, selbst wenn Sie eines verwenden würden von OpenFOAMs bereits implementierten Solvern. Und sollten Sie sich für Python für dieses Scripting entscheiden, können Sie vermutlich den größten Teil des Codes so schreiben, dass die Entscheidung zwischen FiPy und OpenFOAM auf einen Unterschied von weniger als 100 Codezeilen hinausläuft, dh es sollte nicht so sein Es ist schwierig, Ihre Meinung später zu ändern, besonders wenn dies vorher geplant wurde.
Die wichtigeren Punkte sind natürlich, wie viel Zeit das erste Setup benötigt und wie gut es funktioniert. Ich konnte auch keine Vergleiche finden, also müsstest du sie selbst vergleichen ...
Hätte ich OpenFOAM noch nicht verwendet und müsste ein System simulieren, für das OpenFOAM noch keinen Solver bereitstellt, würde ich FiPy höchstwahrscheinlich zuerst ausprobieren, da ich Python gegenüber C ++ bevorzuge. Aber wie bereits erwähnt, könnte man zusammen mit PyFoam wahrscheinlich ein ziemlich allgemeines Framework entwickeln, um die beiden zu vergleichen ... Wenn jedoch ein OpenFOAM-Löser verwendet werden könnte, würde ich wahrscheinlich dieses verwenden.