1 /*  This file is part of MED.
2  *
3  *  COPYRIGHT (C) 1999 - 2019  EDF R&D, CEA/DEN
4  *  MED is free software: you can redistribute it and/or modify
5  *  it under the terms of the GNU Lesser General Public License as published by
6  *  the Free Software Foundation, either version 3 of the License, or
7  *  (at your option) any later version.
8  *
9  *  MED is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU Lesser General Public License for more details.
13  *
14  *  You should have received a copy of the GNU Lesser General Public License
15  *  along with MED.  If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 
19 #include <med.h>
20 #include <med_config.h>
21 #include <med_outils.h>
22 #include <string.h>
23 #include <stdlib.h>
24 
25 /**\ingroup MEDmesh
26   \brief \MEDmeshElementConnectivityAdvancedWrBrief
27   \param fid \fid
28   \param meshname \meshname
29   \param numdt \numdt
30   \param numit \numit
31   \param dt \dt
32   \param entitype \entitype
33   \param geotype \geotype
34   \param cmode \cmode
35   \param filter \filter
36   \param connectivity \connectivity
37   \retval med_err \error
38   \details \MEDmeshElementConnectivityAdvancedWrDetails
39  */
40 
MEDmeshElementConnectivityAdvancedWr(const med_idt fid,const char * const meshname,const med_int numdt,const med_int numit,const med_float dt,const med_entity_type entitype,const med_geometry_type geotype,const med_connectivity_mode cmode,const med_filter * const filter,const med_int * const connectivity)41 med_err MEDmeshElementConnectivityAdvancedWr(const med_idt               fid,
42 					     const char*  const          meshname,
43 					     const med_int               numdt,
44 					     const med_int               numit,
45 					     const med_float             dt,
46 					     const med_entity_type       entitype,
47 					     const med_geometry_type     geotype,
48 					     const med_connectivity_mode cmode,
49 					     const med_filter * const    filter,
50 					     const med_int* const  connectivity)
51 {
52   med_err _ret=-1;
53   char            _geotypename[MED_NAME_SIZE+1] = "";
54 
55 if (_MEDcheckVersion30(fid) < 0) goto ERROR;
56 
57   if ( entitype == MED_STRUCT_ELEMENT ) {
58 
59     /*Dans le cas particulier des particules,
60       la connectivité est vide et l'utilisation de profils est interdite.*/
61     if ( MEDstructElementName(fid, geotype,_geotypename) < 0 ) {
62       MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"MEDstructElementName");
63       ISCRUTE_int(geotype);goto ERROR;
64     }
65 
66     if ( !strcmp(_geotypename,"MED_PARTICLE") )
67       if ( strlen((*filter).profilename ) ){
68 	MED_ERR_(_ret,MED_ERR_USE,MED_ERR_PROFILE,(*filter).profilename);
69 	goto ERROR;
70       }
71   }
72 
73   _ret = _MEDmeshAdvancedWr(fid,
74 			    meshname,
75 			    MED_CONNECTIVITY,
76 			    MED_NO_NAME,
77 			    MED_INTERNAL_UNDEF,
78 			    numdt,
79 			    numit,
80 			    dt,
81 			    entitype,
82 			    geotype,
83 			    cmode,
84 			    MED_UNDEF_STMODE,
85 			    MED_NO_PROFILE,
86 			    MED_UNDEF_INTERLACE,
87 			    MED_ALL_CONSTITUENT,
88 			    filter,
89 			    MED_UNDEF_SIZE,
90 			    connectivity);
91 
92  ERROR:
93  return _ret;
94 }
95