Skip to content
Snippets Groups Projects
Forked from gmsh / gmsh
Source project has a limited visibility.
  • Christophe Geuzaine's avatar
    174c2296
    ghost cells, take three -- ghost cells are now fully functional (for · 174c2296
    Christophe Geuzaine authored
    single file IO)
    
    TWO BIG WARNINGS:
    
    1) The MSH file version has been bumped from 2.1 to 2.2 because if a
    mesh has partitions, the meaning of the tags has changed. Tag 3 used
    to be the partition id; now tag 3 contains the number of partitions
    (self+ghosts, if necessary), and the next tag(s) contain(s) the
    partition(s) id(s). Ghost partitions have < 0 ids. The (new) default
    behaviour is to not save partition numbers by default if there are
    none.
    
    2) There is an issue for split-file IO (one file per partition), due
    to our on-the-fly renumbering of the elements (we would need a global
    pass+store an inverse multimap to have the correct ghost element
    numbers in a split-file scheme). The problem comes from the multiple
    physicals -> multiple copies of the same MElement* in the MSH file +
    our refusal to store an index in MElement. We need to discuss this
    before we implement split-file IO in parallel...
    
    
    
    PS -- I also changed the way we write binary files. We now save blobs
    of single elements. This is fully compatible with old versions, but
    might slow down reading large files. I did not see any performance hit
    on my machine, but this should be tested more thoroughly. Third party
    codes can still write larger binary blobs if they want to, but Gmsh
    itself now writes small blobs, which makes the writeMSH routine much
    simpler.
    
    
    174c2296
    History
    ghost cells, take three -- ghost cells are now fully functional (for
    Christophe Geuzaine authored
    single file IO)
    
    TWO BIG WARNINGS:
    
    1) The MSH file version has been bumped from 2.1 to 2.2 because if a
    mesh has partitions, the meaning of the tags has changed. Tag 3 used
    to be the partition id; now tag 3 contains the number of partitions
    (self+ghosts, if necessary), and the next tag(s) contain(s) the
    partition(s) id(s). Ghost partitions have < 0 ids. The (new) default
    behaviour is to not save partition numbers by default if there are
    none.
    
    2) There is an issue for split-file IO (one file per partition), due
    to our on-the-fly renumbering of the elements (we would need a global
    pass+store an inverse multimap to have the correct ghost element
    numbers in a split-file scheme). The problem comes from the multiple
    physicals -> multiple copies of the same MElement* in the MSH file +
    our refusal to store an index in MElement. We need to discuss this
    before we implement split-file IO in parallel...
    
    
    
    PS -- I also changed the way we write binary files. We now save blobs
    of single elements. This is fully compatible with old versions, but
    might slow down reading large files. I did not see any performance hit
    on my machine, but this should be tested more thoroughly. Third party
    codes can still write larger binary blobs if they want to, but Gmsh
    itself now writes small blobs, which makes the writeMSH routine much
    simpler.