Select Git revision
GModelIO_Mesh.cpp
Forked from
gmsh / gmsh
Source project has a limited visibility.
-
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.
Christophe Geuzaine authoredsingle 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.
Callbacks.cpp 133.83 KiB
// $Id: Callbacks.cpp,v 1.515 2007-02-26 08:25:37 geuzaine Exp $
//
// Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to <gmsh@geuz.org>.
#include <signal.h>
#include <time.h>
#include <map>
#include "Gmsh.h"
#include "GmshUI.h"
#include "Geo.h"
#include "GeoStringInterface.h"
#include "findLinks.h"
#include "Generator.h"
#include "SecondOrder.h"
#include "Draw.h"
#include "SelectBuffer.h"
#include "Views.h"
#include "CreateFile.h"
#include "OpenFile.h"
#include "CommandLine.h"
#include "Context.h"
#include "Options.h"
#include "GUI.h"
#include "GUI_Extras.h"
#include "Callbacks.h"
#include "Plugin.h"
#include "PluginManager.h"
#include "Visibility.h"
#include "Numeric.h"
#include "Solvers.h"
#include "OS.h"
#include "GModel.h"
extern Context_T CTX;
extern GUI *WID;
extern GModel *GMODEL;
// Helper routines
void UpdateViewsInGUI()
{
if(WID) {
WID->check_anim_buttons();
if(WID->get_context() == 3)
WID->set_context(menu_post, 0);
WID->reset_option_browser();
WID->reset_clip_browser();
WID->reset_external_view_list();
}
}
int SetGlobalShortcut(int event)