//************************************************************************ // --- Logiciel MEF++ // --- // --- Copyright 1996-2006 GIREF, Université Laval // --- TOUS DROITS RÉSERVÉS // --- ALL RIGHTS RESERVED // --- // --- Ce logiciel est couvert par la Loi sur le droit d'auteur. // --- L'utilisation, ou la modification de ce logiciel sous toutes ses // --- formes, que ce soit code source ou code compilé, à des fins // --- personnelles et non commerciales sont autorisées sans frais pour // --- autant que la présente notice de copyright ainsi que cette // --- permission apparaissent dans toutes les copies ainsi que dans la // --- documentation. // --- Le GIREF et l'Université Laval ne prétendent en aucune façon que // --- ce logiciel convient à un emploi quelconque. Celui-ci est // --- distribué sans aucune garantie implicite ou explicite. //************************************************************************ //******************************************************************** // Nom du fichier: VerifieMailalge.cc // // Description: Programme qui appele VerifieElementsNormalises // //******************************************************************** #include "MEFPPUtil.h" #include "ChaineCar.h" #include "fonctionsChaineCar.h" #include "InitialisationArgvArgc.h" #include "InitialisationTraitementSignal.h" #include "Maillage.h" #include "NormalisateurElements.h" #include "PAStdStreamEcritureUnique.h" #include "PETScInitialisation.h" #include "traducteurERMsg.h" #include "VerifieElementsNormalises.h" #include int main(int argc, char *argv[]) { //*********************************** //* BLOC: Initialisations générales * //*********************************** PETScInitialisation lPETScInit(&argc, &argv); initialiseTraitementSignal(); sInitialisationArgvArgc.asgnArguments(argc, argv); const std::vector lArgv = sInitialisationArgvArgc.reqArgv(); // On déclare une variable qui contiendra potentiellement un message d'erreur ERMsg lMsg = ERMsg(ERMsg::OK); // On recupere le GroupeProcessus associe a PETSC_COMM_WORLD const PAGroupeProcessus lGroupeGlobal = PETScInitialisation::reqPetscCommWorld(); // On déclare les variables qui seront extraites de la ligne de commande std::string lPrefixeEntree; std::string lPrefixeSortie; // Vérification des paramètres passés à la ligne de commande. const Entier lNbArg = lArgv.size(); if (lNbArg != 2) { std::string lNomProgramme = sInitialisationArgvArgc.reqNomProgramme(); std::string lMessageUsage = "USAGE: \n"; lMessageUsage += enleveCheminAccesFichier(lNomProgramme); lMessageUsage += " Prefixe_maillage_entree "; lMsg.ajoute(ERMsg(ERMsg::ERREUR, lMessageUsage)); } else if (lGroupeGlobal.reqNbProcessus() != 1) { std::string lNomProgramme = sInitialisationArgvArgc.reqNomProgramme(); std::string lMessageUsage = "Erreur: ne fonctionne qu'en sequentiel \n"; lMsg.ajoute(ERMsg(ERMsg::ERREUR, lMessageUsage)); } else { lPrefixeEntree = lArgv[1]; } Maillage lMaillage; if (lMsg) { lMsg = lMaillage.importe(lPrefixeEntree); } if (lMsg) { VerifieElementsNormalises lVerifieElementsNormalises; bool lVrai(true); const bool lElementsNormalises = lVerifieElementsNormalises(lMaillage,lVrai); if (!lElementsNormalises) { std::cout << std::endl<< "Le maillage n'est pas normalise " << lPrefixeEntree <<".mail"<< std::endl << std::endl; } else { std::cout << std::endl<< "OK. Le maillage est normalise " << std::endl<< std::endl; } } // Traitement d'erreur: si une erreur s'est produite, on l'affiche. if(!lMsg) { PAStdStreamEcritureUnique lCerr(std::cerr, lGroupeGlobal, 0); lCerr << traducteurERMsg(lMsg); return 1; } return 0; }