1#! /usr/bin/env python 2# -*- coding:utf-8 -*- 3# /* This file is part of MED. 4# * 5# * COPYRIGHT (C) 1999 - 2019 EDF R&D, CEA/DEN 6# * MED is free software: you can redistribute it and/or modify 7# * it under the terms of the GNU Lesser General Public License as published by 8# * the Free Software Foundation, either version 3 of the License, or 9# * (at your option) any later version. 10# * 11# * MED is distributed in the hope that it will be useful, 12# * but WITHOUT ANY WARRANTY; without even the implied warranty of 13# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# * GNU Lesser General Public License for more details. 15# * 16# * You should have received a copy of the GNU Lesser General Public License 17# * along with MED. If not, see <http://www.gnu.org/licenses/>. 18# */ 19#from __future__ import division 20 21_a=0.446948490915965 22_b=0.091576213509771 23_p1=0.11169079483905 24_p2=0.0549758718227661 25 26# /****************************************************************************** 27# * - Nom du fichier : test10.py 28# * 29# * - Description : ecriture de champs de resultats MED 30# * 31# *****************************************************************************/ 32import os 33 34from med.medfile import * 35from med.medmesh import * 36from med.medfield import * 37from med.medenum import * 38from med.medprofile import * 39from med.medlocalization import * 40from med.medlink import * 41 42exec(compile(open(os.path.join(os.path.dirname(__file__),'test10_params_f32_i64.py')).read(), os.path.join(os.path.dirname(__file__),'test10_params_f32_i64.py'), 'exec'),locals(),globals()) 43#cf test10.atpy qui lance les différents test10_TEST_PARAMS_PY.py et sauvegarde le fichier généré 44filename='test10'+PARAM_ID+'.med' 45 46# USER_MODE=MED_COMPACT_STMODE 47# USER_INTERLACE=MED_FULL_INTERLACE 48# MEDARRAY_TYPEF=MEDFLOAT 49# FIELD_TYPEF=MED_FLOAT64 50 51# /* Maillage support aux champs*/ 52# /* Ces maillages sont vides*/ 53maa1="maa1" 54maa2="maa2" 55lien_maa2 = "./testfoo.med" 56maa3= "maa3" 57 58 59# /* Caractéristiques du champ n°1 sur TRIA6 */ 60nomcha1 = "champ reel" 61comp1 = "comp1 comp2 " 62 63 # /*12345678901234561234567890123456*/ 64unit1 = "unit1 unit2 " 65ncomp1 = 2 66# /* Caractéristiques du model n° 1 de localisation des points de gauss pour le champ n°1*/ 67ngauss1_1 = 6; 68gauss1_1 = "Model n1"; 69refcoo1=MEDFLOAT([ -1.0,1.0, -1.0,-1.0, 1.0,-1.0, -1.0,0.0, 0.0,-1.0, 0.0,0.0 ]) 70 71# /* Constantes */ 72 73gscoo1_1= MEDFLOAT([ 2*_b-1, 1-4*_b, 2*_b-1, 2*_b-1, 1-4*_b, 74 2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ]) 75wg1_1 = MEDFLOAT([ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]) 76 77nval1_1 = 1*6; #/*1 valeurs et 6 points de gauss par valeur */ 78_nent1_1 = 1; #/*1 valeurs et 6 points de gauss par valeur */ 79valr1_1 = MEDARRAY_TYPEF([0.0,1.0, 2.0,3.0, 10.0,11.0, 12.0,13.0, 20.0,21.0, 22.0,23.0]) #/* 2 composantes*/ 80# /* Caractéristiques du model n° 2 de localisation des points de gauss pour le champ n°1*/ 81ngauss1_2= 3 82gauss1_2 = "Model n2" 83gscoo1_2 = MEDFLOAT([ -2.0/3,1.0/3, -2.0/3,-2.0/3, 1.0/3,-2.0/3 ]) 84wg1_2 = MEDFLOAT([ 2.0/3, 2.0/3, 2.0/3 ]) 85nval1_2 = 2*3 #/*2 valeurs et 3 points de gauss par valeur */ 86_nent1_2 = 2 #/*2 valeurs et 3 points de gauss par valeur */ 87valr1_2 = MEDARRAY_TYPEF([ 0.0,1.0, 2.0,3.0, 10.0,11.0, 12.0,13.0, 20.0,21.0, 22.0,23.0 ]) #/* 2 composantes*/ 88valr1_2p = MEDARRAY_TYPEF([ 12.0,13.0, 20.0,21.0, 22.0,23.0 ]) #/* 2 composantes*/ 89# /* Caractéristiques du model n° 3 sans points de gauss pour le champ n°1*/ 90nval1_3 = 6 #/*6 valeurs et pas de points de gauss */ 91_nent1_3 = 6 #/*6 valeurs et pas de points de gauss */ 92valr1_3 = MEDARRAY_TYPEF([ 0.0,1.0, 2.0,3.0, 10.0,11.0, 12.0,13.0, 20.0,21.0, 22.0,23.0]) #/* 2 composantes*/ 93valr1_3p = MEDARRAY_TYPEF([ 2.0,3.0, 10.0,11.0 ]) #/* 2 composantes profil1 */ 94 95# /* Caractéristiques du champ n° 2 */ 96nomcha2 = "champ entier" 97comp2 = "comp1 comp2 comp3 " 98 # /*123456789012345612345678901234561234567890123456*/ 99unit2 = "unit1 unit2 unit3 "; 100ncomp2 = 3 101nval2 = 5 #/*5 valeurs */ 102valr2 = MEDARRAY_TYPEI([ 0,1,2, 10,11,12, 20,21,22, 30,31,32, 40,41,42]) # /* 3 composantes*/ 103valr2p = MEDARRAY_TYPEI([ 0,1,2, 20,21,22, 40,41,42]) # /* 3 composantes*/ 104 105# /* Profils utilisés */ 106nomprofil1 = "PROFIL(champ(1))" 107nomprofil1b = "PROFIL(champ(1b))" 108nomprofil2 = "PROFIL(champ2)" 109profil1 = MEDINT([ 2, 3 ]) 110profil2 = MEDINT([ 1, 3, 5 ]) 111 112# /* Caractéristiques du champ n° 3 */ 113nomcha3 = "champ entier 3" 114comp3 = "comp1 comp2 " 115 # /*123456789012345612345678901234561234567890123456*/ 116unit3 = "unit1 unit2 "; 117dtunit = "s" 118ncomp3 = 2 119nval3 = 5*4 #/*5 valeurs et 4 noeuds par element*/ 120_nent3 = 5 #/*5 valeurs et 4 noeuds par element*/ 121valr3 = MEDARRAY_TYPEI([ 0,1, 10,11, 20,21, 30,31, 122 40,41, 50,51, 60,61, 70,71, 123 80,81, 90,91, 100,101, 110,111, 124 120,121, 130,131, 140,141, 150,151, 125 160,161, 170,171, 180,181, 190,191]) #/* 2 composantes*/ 126valr3p = MEDARRAY_TYPEI([ 0,1, 10,11, 20,21, 30,31, 127 80,81, 90,91, 100,101, 110,111, 128 160,161, 170,171, 180,181, 190,191]) #/* 2 composantes*/ 129 130 131nomcoo = "x y z " 132unicoo = "cm cm cm " 133 134 135# /* ouverture du fichier */ 136fid=MEDfileVersionOpen(filename,MED_ACC_CREAT,MED_NUM_MAJEUR,MED_NUM_MINEUR,MED_NUM_RELEASE) 137 138# /* creation de maa1 de dimension 3*/ 139MEDmeshCr( fid, maa1, 3, 3, MED_UNSTRUCTURED_MESH, 140 "Maillage vide","s", MED_SORT_DTIT, 141 MED_CARTESIAN, nomcoo, unicoo) 142 143# /* creation de maa3 de dimension 3*/ 144MEDmeshCr( fid, maa3, 3, 3, MED_UNSTRUCTURED_MESH, 145 "Maillage vide","s", MED_SORT_DTIT, 146 MED_CARTESIAN, nomcoo, unicoo) 147 148# /* creation du champ réel n°1 */ 149MEDfieldCr(fid,nomcha1,FIELD_TYPEF,ncomp1,comp1,unit1,dtunit,maa1) 150 151# /* creation du champ entier n°2 */ 152MEDfieldCr(fid,nomcha2,FIELD_TYPEI,ncomp2,comp2,unit2,dtunit,maa2) 153 154# /* creation du lien au fichier distant contenant maa2 */ 155MEDlinkWr(fid,maa2,lien_maa2) 156 157 158# /* creation de la localisation des points de Gauss modèle n°1 */ 159MEDlocalizationWr(fid, gauss1_1, MED_TRIA6, MED_TRIA6//100, refcoo1, 160 USER_INTERLACE, ngauss1_1, gscoo1_1, wg1_1, 161 MED_NO_INTERPOLATION, MED_NO_MESH_SUPPORT ) 162 163# /* creation de la localisation des points de Gauss modèle n°2 */ 164MEDlocalizationWr(fid, gauss1_2, MED_TRIA6, MED_TRIA6//100, refcoo1, 165 USER_INTERLACE,ngauss1_2, gscoo1_2, wg1_2, 166 MED_NO_INTERPOLATION, MED_NO_MESH_SUPPORT) 167 168 169# /* ecriture du champ n°1*/ 170# /* enregistre uniquement les composantes n°2 de valr1_1, et n'utilise ni pas de temps ni n° d'ordre*/ 171 172MEDfieldValueWithProfileWr(fid, nomcha1,MED_NO_DT,MED_NO_IT,0.0,MED_CELL,MED_TRIA6, 173 USER_MODE,MED_ALLENTITIES_PROFILE, gauss1_1, 174 USER_INTERLACE, 2, _nent1_1, valr1_1 ) 175 176 177# /* enregistre uniquement les composantes n°1 de valr1_1, et n'utilise ni pas de temps ni n° d'ordre */ 178 179MEDfieldValueWithProfileWr(fid, nomcha1,MED_NO_DT,MED_NO_IT,0.0,MED_CELL,MED_TRIA6, 180 USER_MODE,MED_ALLENTITIES_PROFILE, 181 gauss1_1,USER_INTERLACE, 1, _nent1_1, valr1_1 ) 182 183# /* enregistre uniquement les composantes n°1 de valr1_2, au pas de temps n°1(5.5), n'utilise pas de n°d'ordre*/ 184# /* ce champ repose sur le maillage maa2 qui est distant */ 185 186MEDfieldValueWithProfileWr(fid, nomcha1,1,MED_NO_IT,5.5,MED_CELL,MED_TRIA6, 187 USER_MODE,MED_ALLENTITIES_PROFILE, 188 gauss1_2,USER_INTERLACE, 1, _nent1_2, valr1_2 ) 189 190# /*Ce test utilise un deuxième maillag pour un même champ, ceci n'existe plus en 3.0*/ 191# /* enregistre uniquement les composantes n°2 de valr1_2, au pas de temps n°1(5.5), n'utilise pas de n°d'ordre*/ 192# /* ce champ repose sur le maillage maa1 qui est local */ 193 194MEDfieldValueWithProfileWr(fid, nomcha1,1,1,5.5,MED_CELL,MED_TRIA6,USER_MODE,MED_ALLENTITIES_PROFILE, 195 gauss1_1,USER_INTERLACE, 2, _nent1_1, valr1_1 ) 196 197# /* enregistre uniquement les composantes n°1 de valr1_1, au pas de temps n°1(5.5), et n°d'itération n°2*/ 198# /* ce champ repose sur le maillage maa3 qui est local */ 199 200MEDfieldValueWithProfileWr(fid, nomcha1,1,2,5.5,MED_CELL,MED_TRIA6,USER_MODE,MED_ALLENTITIES_PROFILE, 201 gauss1_2,USER_INTERLACE, 1, _nent1_2, valr1_2 ) 202 203# /* Creation d'un profil (selection du deuxieme élément de valr1_1) */ 204# /* On n'utilise que la première valeur (2) du profil */ 205MEDprofileWr(fid,nomprofil1,1,profil1) 206MEDprofileWr(fid,nomprofil1b,1,profil1) 207 208# /* enregistre toutes les composantes du deuxième élèment de valr1_1 (premier élément en stockage compact de valr1p), 209# au pas de temps n°2(5.6), et n°d'itération n°2 */ 210 211MEDfieldValueWithProfileWr(fid, nomcha1,2,2,5.6,MED_CELL,MED_TRIA6,USER_MODE,nomprofil1, 212 MED_NO_LOCALIZATION,USER_INTERLACE, MED_ALL_CONSTITUENT, nval1_3, valr1_3p ) 213 214# /* enregistre toutes les composantes du deuxième élément de valr1_1 (premier élément en stockage compact de valr1p), 215# au pas de temps n°2(5.6), et n°d'itération n°2 */ 216 217MEDfieldValueWithProfileWr(fid, nomcha1,2,2,5.6,MED_CELL,MED_TRIA6,USER_MODE,nomprofil1b, 218 gauss1_2,USER_INTERLACE, MED_ALL_CONSTITUENT, _nent1_2, valr1_2p ) 219 220 221MEDfieldValueWithProfileWr(fid, nomcha1,3,2,5.7,MED_CELL,MED_TRIA6,USER_MODE,nomprofil1, 222 MED_NO_LOCALIZATION,USER_INTERLACE, 2, _nent1_3,valr1_3p ) 223 224# /* Ecriture du champ n° 2 */ 225 226 227MEDfieldValueWr(fid, nomcha2,MED_NO_DT,MED_NO_IT,0, 228 MED_DESCENDING_EDGE,MED_SEG2, 229 USER_INTERLACE, 1, nval2, valr2 ) 230 231MEDfieldValueWr(fid, nomcha2,MED_NO_DT,MED_NO_IT,0,MED_NODE,MED_NONE, 232 USER_INTERLACE, 2, nval2, valr2 ) 233 234MEDfieldValueWr(fid, nomcha2,MED_NO_DT,MED_NO_IT,0,MED_DESCENDING_FACE,MED_TRIA6, 235 USER_INTERLACE, 3, nval2, valr2 ) 236 237# /* Creation d'un profil (selection des éléments 1,3,5 de valr2) */ 238# /* On utilise les trois valeurs du profil */ 239MEDprofileWr(fid,nomprofil2,3,profil2) 240 241MEDfieldValueWithProfileWr(fid, nomcha2,MED_NO_DT,MED_NO_IT,0,MED_CELL,MED_TRIA6,USER_MODE,nomprofil2, 242 MED_NO_LOCALIZATION,USER_INTERLACE, 3, nval2, valr2p ) 243 244# /* creation du champ entier n°3 */ 245MEDfieldCr(fid,nomcha3,FIELD_TYPEI,ncomp3,comp3,unit3,dtunit,maa1) 246 247 # /* Ecriture du champ n° 3 */ 248 249MEDfieldValueWr(fid, nomcha3,MED_NO_DT,MED_NO_IT,0,MED_CELL,MED_QUAD4, 250 USER_INTERLACE, 1, nval3, valr3 ) 251 252MEDfieldValueWr(fid, nomcha3,MED_NO_DT,MED_NO_IT,0,MED_NODE_ELEMENT,MED_QUAD4, 253 USER_INTERLACE, MED_ALL_CONSTITUENT, _nent3, valr3 ) 254 255MEDfieldValueWithProfileWr(fid, nomcha3,MED_NO_DT,MED_NO_IT,0,MED_NODE_ELEMENT,MED_QUAD4,USER_MODE,nomprofil2, 256 MED_NO_LOCALIZATION,USER_INTERLACE, MED_ALL_CONSTITUENT, _nent3, valr3p ) 257 258 259MEDfileClose(fid) 260