mupif:mupif
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
mupif:mupif [2014/10/18 12:07] – Updated (MMP suppport, Sourceforge link) bp | mupif:mupif [2016/05/02 14:20] (current) – bp | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== MuPIF ====== | ====== MuPIF ====== | ||
- | {{ : | + | {{ : |
- | The design supports various coupling strategies, discretization techniques, and also the distributed | + | A reliable multiscale/ |
====== Description ====== | ====== Description ====== | ||
===== Framework Design ===== | ===== Framework Design ===== | ||
+ | One of the main objectives is to develop an integrated modelling platform targeted to multiscale and multi-physics engineering problems. The approach followed in MuPIF is based on an system of distributed, | ||
+ | {{ : | ||
- | The object-oriented data structure | + | The complex simulation pipeline developed in MuPIF consists of top-level script in Python language (called scenario) enriched by newly introduced |
- | {{ : | + | |
- | A computational domain is represented by a class derived from abstract '' | ||
- | ===== Parallel and distributed environments ===== | ||
- | |||
- | In a case of parallel and distributed applicatios, | ||
- | |||
- | {{ : | ||
- | |||
- | |||
- | The data retrieval and processing should be reformed in parallel as well, without compromising the scalability. Particularly, | ||
- | |||
- | Moreover, when source field view will locally cache the remote data, the source field values are transfered only once. This concept of parallel field transfer is illustrated in following figure, where simple interpolation field projection is used. On the computing nodes containing target sub-domains, | ||
- | |||
- | |||
- | The setup of mapping context on target application computing nodes requires global representation of remote data. This is needed, because the target application should not be aware of source application deployment. Therefore, an application agents have to be created by individual applications. They essentially hide the distributed character of underlying mesh or field and manage the proper message dispatching to individual computing nodes containing distributed data. The application agent implements the application interface and its role is represent the overall global access point for application. Agent is aware of distributed application data structure, which allows to to execute data request operations efficiently by splitting them based on application partitioning, | ||
===== Implementation ===== | ===== Implementation ===== | ||
Line 29: | Line 16: | ||
- | |||
- | The initial idea was to build an abstract communication layer, for example on top of XML-RPC protocol. Recently, the Pyro library has been discovered. Pyro is short for PYthon Remote Objects. It is an advanced and powerful Distributed Object Technology system written entirely in Python, that is designed to be very easy to use. When using Pyro, user just designs his/her Python objects. With only a few lines of extra code, Pyro takes care of the network communication between the objects once they are splited over different machines on the network. Care is taken of all the socket programming details, one just call a method on a remote object as if it were a local object - the use of remote objects is (almost) transparent. This is achieved by the introduction of so called proxies. A proxy is a special kind of object that acts as if it were the actual -remote- object. Proxies forward method calls to the remote objects, and pass results back to the calling code. Pyro also provides Naming Service which keeps record of the location of objects. | ||
- | |||
- | The utilization of Pyro allows to fully concentrate on application design, the distributed processing and data exchange is conveniently and transparently handled by Pyro. This is particularly convenient in initial phases of project, where the focus is put on design and prototype implementation of the framework. | ||
===== Documentation ===== | ===== Documentation ===== | ||
- | * Online [[http://mech.fsv.cvut.cz/mupif/refman|Reference | + | * Online [[https://sourceforge.net/p/mupif/wiki/ |
====== How to get MuPIF ====== | ====== How to get MuPIF ====== | ||
- | Download of MuPIF release versions: | + | The easiest installation happens through Python Package Index (pip) which takes care of dependencies |
- | * {{: | + | < |
- | * {{: | + | pip install |
- | + | ||
- | The development version now hosted at SourceForge [[http:// | + | |
- | + | ||
- | Related download | + | |
- | * OOFEM project homepage | + | |
- | + | ||
- | ====== How to use MuPIF ====== | + | |
- | The framework provides a high-level support for mutual data exchange between individual applications. | + | |
- | Each application should provide its implementation | + | |
- | + | ||
- | Framework includes support for different discretization techniques and specific field transfer operators, aware of underlying physical phenomena. The field representation and field exchange methods support various data types (scalar, vector, and tensorial values), independent on actual discretization. | + | |
- | + | ||
- | ===== Minimal working example ===== | + | |
- | This minimal working MuPIF script illustrates how to invoke oofem FEM solver using Mupif API, request solution field, and how to visualize this field using MayaVi. | + | |
- | + | ||
- | < | + | |
- | #run this code as " | + | |
- | + | ||
- | #include MuPIF modules | + | |
- | from oofem_interface import * | + | |
- | from mupif import field | + | |
- | from mupif import timestep | + | |
- | from mupif import util | + | |
- | + | ||
- | # MayaVi stuff | + | |
- | from enthought.mayavi.scripts import mayavi2 | + | |
- | from enthought.mayavi.sources.vtk_data_source import VTKDataSource | + | |
- | from enthought.mayavi.modules.outline import Outline | + | |
- | from enthought.mayavi.modules.surface import Surface | + | |
- | from enthought.mayavi.modules.vectors import Vectors | + | |
- | + | ||
- | + | ||
- | def main(): | + | |
- | global mayavi | + | |
- | + | ||
- | # create new timestep | + | |
- | tstep = timestep.TimeStep(1.0, | + | |
- | try: | + | |
- | #create new oofem interface, pass problem input as parameter | + | |
- | oofem = OOFEM_API(" | + | |
- | #solve the problem | + | |
- | oofem.solve(tstep) | + | |
- | #request displacement field | + | |
- | f = oofem.giveField(field.FieldID.FID_Displacement, | + | |
- | except APIError as e: | + | |
- | print " | + | |
- | + | ||
- | # initialize MaiaVi visualizer to display the resuts | + | |
- | # first, create tvtk data source from solution field | + | |
- | src = util.field2VTKDataSource(f) | + | |
- | + | ||
- | #setup MayaVi scene | + | |
- | mayavi.add_source(src) | + | |
- | mayavi.add_module(Outline()) | + | |
- | m = Surface() | + | |
- | m.actor.property.representation=' | + | |
- | mayavi.add_module(m) | + | |
- | + | ||
- | if __name__ == ' | + | |
- | + | ||
- | mayavi.new_scene() | + | |
- | main() | + | |
- | | + | |
</ | </ | ||
+ | Alternatively, | ||
+ | ====== Demonstration of platform use ====== | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
Line 116: | Line 39: | ||
* B. Patzák, D. Rypl, and J. Kruis. Mupif – a distributed multi-physics integration tool. Advances in Engineering Software, 60–61(0): | * B. Patzák, D. Rypl, and J. Kruis. Mupif – a distributed multi-physics integration tool. Advances in Engineering Software, 60–61(0): | ||
* B. Patzák. Design of a multi-physics integration tool. In B. H. V. Topping, J. M. Adam, F. J. Pallares, R. Bru, and M. L. Romero, editors, Proceedings of the Seventh International Conference on Engineering Computational Technology, Stirlingshire, | * B. Patzák. Design of a multi-physics integration tool. In B. H. V. Topping, J. M. Adam, F. J. Pallares, R. Bru, and M. L. Romero, editors, Proceedings of the Seventh International Conference on Engineering Computational Technology, Stirlingshire, | ||
- | + | | |
- | ===== Similar projects ===== | + | |
- | | + | |
- | * D. Brown, K. Chand, W. Henshaw, B. Miller, J. Painter, R. Pember, B. Philip, D. Quinlan | + | |
- | * ALEGRA, [[http:// | + | |
- | * AVS- Advanced Visual Systems, [[http:// | + | |
===== Authors & Credits ===== | ===== Authors & Credits ===== | ||
Mupif developpers: | Mupif developpers: | ||
* Bořek Patzák (Lead Developper) | * Bořek Patzák (Lead Developper) | ||
- | * Daniel Rypl | + | * Vit Šmilauer |
- | * Jaroslav Kruis | + | * Guillaume Pacquaut |
+ | * Václav Šmilauer | ||
+ | * Former developpers: | ||
- | Acknowledgements: | + | ===== Acknowledgements===== |
* The development of MuPIF has been funded by Grant Agency of the Czech Republic - Projects No. P105/ | * The development of MuPIF has been funded by Grant Agency of the Czech Republic - Projects No. P105/ | ||
- | * The development is at present | + | * The development is at present |
+ |
mupif/mupif.1413626877.txt.gz · Last modified: 2014/10/18 12:07 by bp