00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <med.h>
00020 #define MESGERR 1
00021 #include <med_utils.h>
00022 #include <math.h>
00023
00024 #ifndef M_PI_2
00025 # define M_PI_2 1.57079632679489661923
00026 #endif
00027
00028 #ifndef M_PI_4
00029 # define M_PI_4 0.78539816339744830962
00030 #endif
00031
00032 #ifdef DEF_LECT_ECR
00033 #define MODE_ACCES MED_ACC_RDWR
00034 #elif DEF_LECT_AJOUT
00035 #define MODE_ACCES MED_ACC_RDEXT
00036 #else
00037 #define MODE_ACCES MED_ACC_CREAT
00038 #endif
00039
00040 int main (int argc, char **argv)
00041
00042
00043 {
00044 med_err ret = 0;
00045 med_idt fid;
00046
00047 med_int mdim = 2;
00048
00049 char maa[MED_NAME_SIZE+1] = "maa1";
00050
00051 med_int nnoe = 4;
00052
00053
00054 med_float coo[8] = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0};
00055 med_float coo_2[8] = {0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0};
00056
00057
00058
00059 char nomcoo[2*MED_SNAME_SIZE+1] = "x y ";
00060 char unicoo[2*MED_SNAME_SIZE+1] = "cm cm ";
00061
00062
00063
00064
00065 char nomnoe[4*MED_SNAME_SIZE+1] = "nom1 nom2 nom3 nom4 ";
00066 med_int numnoe[4] = {1,2,3,4};
00067 med_int nufano[4] = {0,1,2,2};
00068 const med_float phi1=0;
00069 const med_float phi2=M_PI_4;
00070 const med_float phi3=M_PI_2;
00071 med_float trsf1[7]= {0,0,0, cos(phi1/2), 0, sin(phi1/2), 0 };
00072 med_float trsf2[7]= {0,0,0, cos(phi2/2), 0, sin(phi2/2), 0 };
00073 med_float trsf3[7]= {0,0,0, cos(phi3/2), 0, sin(phi3/2), 0 };
00074
00075
00076 if ((fid = MEDfileOpen("Test_MEDmeshNodeCoordinateTrsfWr.med",MODE_ACCES)) < 0){
00077 MESSAGE("Erreur à l'ouverture du fichier : ");
00078 return -1;
00079 }
00080
00081
00082
00083 if (MEDmeshCr( fid, maa, mdim, mdim, MED_UNSTRUCTURED_MESH,
00084 "un maillage pour Test_MEDmeshNodeCoordinateTrsfWr","s", MED_SORT_DTIT,
00085 MED_CARTESIAN, nomcoo, unicoo) < 0) {
00086 MESSAGE("Erreur a la creation du maillage : "); SSCRUTE(maa);
00087 ret = -1;
00088 }
00089
00090
00091
00092 if (MEDmeshNodeCoordinateWr(fid,maa,MED_NO_DT,MED_NO_IT,MED_UNDEF_DT,
00093 MED_FULL_INTERLACE,nnoe, coo) < 0) {
00094 MESSAGE("Erreur a l'ecriture des coordonnees des noeuds");
00095 ret = -1;
00096 }
00097
00098
00099 if (MEDmeshEntityNameWr(fid,maa,MED_NO_DT,MED_NO_IT,MED_NODE,MED_NONE,nnoe,nomnoe) < 0) {
00100 MESSAGE("Erreur a l'ecriture des noms des noeuds");
00101 ret = -1;
00102 }
00103
00104
00105 if (MEDmeshEntityNumberWr(fid,maa,MED_NO_DT,MED_NO_IT,MED_NODE,MED_NONE,nnoe,numnoe) < 0) {
00106 MESSAGE("Erreur a l'ecriture des numeros des noeuds");
00107 ret = -1;
00108 }
00109
00110
00111 if (MEDmeshEntityFamilyNumberWr(fid,maa,MED_NO_DT,MED_NO_IT,MED_NODE,MED_NONE,nnoe,nufano) < 0) {
00112 MESSAGE("Erreur a l'ecriture des numeros de familles des noeuds");
00113 ret = -1;
00114 }
00115
00116
00117
00118 fprintf(stdout,"Un message d'erreur est attendu: \n");
00119 if ( MEDmeshNodeCoordinateTrsfWr(fid,maa,MED_NO_DT,MED_NO_IT,0.4,trsf1) >= 0) {
00120 MESSAGE("Erreur a l'ecriture de la transformation géométrique n°1");
00121 MESSAGE("Aucune transformation géométrique à la séquence de calcul MED_NO_DT,MED_NO_IT n'est possible.");
00122 }
00123 fprintf(stdout,"Fin du message d'erreur attendu\n :");
00124
00125
00126
00127 if ( MEDmeshNodeCoordinateTrsfWr(fid,maa,1,1,0.4,trsf1) < 0) {
00128 MESSAGE("Erreur a l'ecriture de la transformation géométrique n°1");
00129 ret = -1;
00130 }
00131
00132
00133
00134 fprintf(stdout,"Un message d'erreur est attendu : \n");
00135 if (MEDmeshNodeCoordinateWr(fid,maa,1,1, 0.5,
00136 MED_FULL_INTERLACE,nnoe, coo_2) >= 0) {
00137 MESSAGE("Erreur a l'ecriture des coordonnees des noeuds");
00138 MESSAGE("Aucune ecriture des coordonnees des noeuds n'est possible sur une séquence de calcul comportant "\
00139 "une transformation géométrique.");
00140 }
00141 fprintf(stdout,"Fin du message d'erreur attendu :\n");
00142
00143
00144
00145 if (MEDmeshNodeCoordinateWr(fid,maa,2,1, 0.5,
00146 MED_FULL_INTERLACE,nnoe, coo_2) < 0) {
00147 MESSAGE("Erreur a l'ecriture des coordonnees des noeuds");
00148 ret = -1;
00149 }
00150
00151
00152
00153 fprintf(stdout,"Un message d'erreur est attendu\n :");
00154 if ( MEDmeshNodeCoordinateTrsfWr(fid,maa,2,1,0.5,trsf2) >= 0) {
00155 MESSAGE("Erreur a l'ecriture de la transformation géométrique n°2");
00156 MESSAGE("Aucune transformation géométrique à une séquence de calcul comportant de nouvelles coordonnées n'est possible.");
00157 }
00158 fprintf(stdout,"Fin du message d'erreur attendu\n :");
00159
00160
00161
00162 if ( MEDmeshNodeCoordinateTrsfWr(fid,maa,2,2,0.6,trsf2) < 0) {
00163 MESSAGE("Erreur a l'ecriture de la transformation géométrique n°2");
00164 ret = -1;
00165 }
00166
00167
00168
00169 if ( MEDmeshNodeCoordinateTrsfWr(fid,maa,3,2,0.7,trsf3) < 0) {
00170 MESSAGE("Erreur a l'ecriture de la transformation géométrique n°3");
00171 ret = -1;
00172 }
00173
00174 if ( MEDmeshComputationStepCr(fid,maa, 3,2, 3,3, 3.3) < 0) {
00175 MESSAGE("Erreur a la creation d'un pas de temps du maillage maa");
00176 }
00177
00178
00179 numnoe[2]=200;
00180 if (MEDmeshEntityNumberWr(fid,maa,3,3,MED_NODE,MED_NONE,nnoe,numnoe) < 0) {
00181 MESSAGE("Erreur a l'ecriture des numeros des noeuds");
00182 ret = -1;
00183 }
00184
00185 if ( MEDmeshComputationStepCr(fid,maa, 3,3, 3,4, 3.4) < 0) {
00186 MESSAGE("Erreur a la creation d'un pas de temps du maillage maa");
00187 }
00188
00189
00190
00191
00192 if (MEDfileClose(fid) < 0) {
00193 MESSAGE("Erreur a la fermeture du fichier test4.med");
00194 return -1;
00195 }
00196 return ret;
00197 }
00198
00199
00200
00201