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 \MEDmeshPolygon2WrBrief
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 polytype \polytype
34 \param cmode \cmode
35 \param indexsize \indexsize
36 \param polyindex \polyindex
37 \param connectivity \connectivity
38 \retval med_err \error
39 \details \MEDmeshPolygon2WrDetails
40 \remarks
41 \MEDmeshPolygon2Rem
42
43 */
44
45 med_err
MEDmeshPolygon2Wr(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 polytype,const med_connectivity_mode cmode,const med_int indexsize,const med_int * const polyindex,const med_int * const connectivity)46 MEDmeshPolygon2Wr(const med_idt fid,
47 const char* const meshname,
48 const med_int numdt,
49 const med_int numit,
50 const med_float dt,
51 const med_entity_type entitype,
52 const med_geometry_type polytype,
53 const med_connectivity_mode cmode,
54 const med_int indexsize,
55 const med_int * const polyindex,
56 const med_int * const connectivity )
57 {
58 med_access_mode _MED_ACCESS_MODE;
59 med_idt _meshid=0;
60 med_err _ret = -1;
61 med_data_type _datatype = MED_UNDEF_DATATYPE;
62 med_int _multi = 1;
63 /*
64 * On inhibe le gestionnaire d'erreur HDF 5
65 */
66 _MEDmodeErreurVerrouiller();
67 if (_MEDcheckVersion30(fid) < 0) goto ERROR;
68
69 if ( (_MED_ACCESS_MODE = _MEDmodeAcces(fid) ) == MED_ACC_UNDEF ) {
70 MED_ERR_(_ret,MED_ERR_UNRECOGNIZED,MED_ERR_ACCESSMODE,MED_ERR_FILE_MSG);
71 goto ERROR;
72 }
73
74 if ( _MED_ACCESS_MODE == MED_ACC_RDONLY) {
75 MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_ACCESSMODE,MED_ERR_FILE_MSG);
76 ISCRUTE_int(_MED_ACCESS_MODE);
77 goto ERROR;
78 }
79
80
81 /* Tester le type d'entité ?
82 * MAILLE Ok
83 * FACE OK
84 * ARETE ?
85 * NOEUD KO
86 * NOEUD_MAILLE ?
87 */
88
89 /* ISCRUTE(indexsize); */
90 /* ISCRUTE(polyindex[indexsize-1] - polyindex[0]); */
91
92 switch(polytype)
93 {
94 case MED_POLYGON:
95 break;
96 case MED_POLYGON2:
97 /*_multi est devenu inutile.*/
98 _multi=1;
99 break;
100 default:
101 MED_ERR_(_ret,MED_ERR_RANGE,MED_ERR_GEOMETRIC,MED_ERR_VALUE_MSG);
102 ISCRUTE_int(polytype);
103 goto ERROR;
104 }
105
106 if (_MEDmeshAdvancedWr(fid,
107 meshname,
108 MED_CONNECTIVITY,
109 MED_NO_NAME,
110 MED_INTERNAL_UNDEF,
111 numdt,
112 numit,
113 dt,
114 entitype,
115 polytype,
116 cmode,
117 MED_UNDEF_STMODE,
118 MED_NO_PROFILE,
119 MED_FULL_INTERLACE,
120 MED_ALL_CONSTITUENT,
121 NULL,
122 _multi*(polyindex[indexsize-1] - polyindex[0]),
123 connectivity) < 0 ) {
124 MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"_MEDmeshAdvancedWr (MED_CONNECTIVITY) ");
125 goto ERROR;
126 }
127
128 if (_MEDmeshAdvancedWr(fid,
129 meshname,
130 MED_INDEX_NODE,
131 MED_NO_NAME,
132 MED_INTERNAL_UNDEF,
133 numdt,
134 numit,
135 dt,
136 entitype,
137 polytype,
138 cmode,
139 MED_UNDEF_STMODE,
140 MED_SAME_PROFILE_INTERNAL,
141 MED_FULL_INTERLACE,
142 MED_ALL_CONSTITUENT,
143 NULL,
144 indexsize,
145 polyindex) < 0 ) {
146 MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"_MEDmeshAdvancedWr (MED_INDEX_NODES) ");
147 goto ERROR;
148 }
149
150 _ret = 0;
151
152 ERROR:
153
154 return _ret;
155
156 }
157