Télécharger TNLIN.INC

Retour à la liste

Numérotation des lignes :

  1. C***********************************************************************
  2. C TNLIN.INC INCLUDES DE TRAVAIL POUR NLIN
  3. C***********************************************************************
  4. C***********************************************************************
  5. C NOM : SELREF.INC
  6. C DESCRIPTION : Segments de description des éléments de référence.
  7. C
  8. C REFERENCES :
  9. C * @Book{dhattettouzot,
  10. C author = {Gouri Dhatt and Gilbert Touzot},
  11. C title = {Une présentation de la méthode des éléments finis},
  12. C publisher = {MALOINE S.A.},
  13. C year = {1984},
  14. C series = {Collection universitaire de Compiègne},
  15. C address = {27, rue de l'Ecole-de-Médecine, 75006 PARIS},
  16. C edition = {2}
  17. C }
  18. C
  19. C LANGAGE : ESOPE
  20. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  21. C mél : gounand@semt2.smts.cea.fr
  22. C***********************************************************************
  23. C VERSION : v1, 20/07/99, version initiale
  24. C HISTORIQUE : v1, 20/07/99, création
  25. C HISTORIQUE : v1.1 08/99, modifs pour mettre les infos sur quel noeud
  26. C correspond à quel ddl.
  27. C HISTORIQUE : v2, 19/10/99, dans ELREFS, on ne duplique plus le nom
  28. C d'élément et on utilise un segment extensible, plus
  29. C souple
  30. C HISTORIQUE : 05/05/00
  31. C v1.2 : on ne considère plus que des éléments avec
  32. C approximation nodale (moins générale) pour
  33. C nettoyer le code (peut-être n'est-ce pas très
  34. C astucieux)
  35. C HISTORIQUE :
  36. C***********************************************************************
  37. C
  38. C Segment décrivant les caractéristiques d'un élément de référence
  39. C type Lagrange ou Hermite. On se place dans le cadre d'approximations
  40. C nodales par sous-domaines.
  41. C L'ensemble des éléments de référence est initialisé dans la subroutine
  42. C inlrfs.eso
  43. C
  44. C * LNNOM, LNFORM, LNTYPL, LNESP (type ENTIER) :
  45. C longueur de chaînes de caractère.
  46. C * NOMLRF : nom unique caractérisant un élément de référence.
  47. C Notre choix de nom est la concaténation des informations
  48. C suivantes : - espace de fonctions (L2, H1)
  49. C - degré de l'approximation (D0, D1, D2)
  50. C - forme de l'élément (SEgment, TRiangle, QUadrangle,
  51. C TEtraèdre, PRisme, CUbe)
  52. C - nombre de degrés de liberté
  53. C ex: le triangle linéaire + bulle a pour nom 'H1D1TR4'
  54. C * FORME : forme géométrique de l'élément (SEGMENT, TRIANGLE,
  55. C QUADRANGLE, TETRAEDRE, PRISME, CUBE)
  56. C * TYPEL : type d'élément (LAGRANGE, HERMITE). Seul des éléments
  57. C de Lagrange sont implémentés pour l'instant.
  58. C * ESPACE : espace de discrétisation de l'inconnue sur l'élément.
  59. C (L2, H1)
  60. C * DEGRE : degré de l'approximation
  61. C * NDIMEL : dimension de l'espace de référence
  62. C * NBNOD : nombre de noeuds d'approximation de l'élément
  63. C * XCONOD : coordonnées des noeuds d'approximation
  64. C * NBDDL : nombre de degrés de liberté (ddl) de l'élément
  65. C (=NBNOD pour les éléments de Lagrange)
  66. C * NPQUAF : pour chaque ddl, le numéro du point du QUAF sur lequel
  67. C on le localise (=> sa continuité entre éléments)
  68. C * NUMCMP : pour chaque ddl, le numéro de composante qu'on lui
  69. C attribue (un point du QUAF peut supporter plusieurs ddl)
  70. C * QUENOD : pour chaque ddl, le numéro du noeud d'approximation de
  71. C l'élément de référence qui le supporte.
  72. C * ORDDER : pour chaque ddl, on indique l'ordre de dérivation par
  73. C rapport à chaque coordonnée de l'espace de référence.
  74. C exemple : si le 5eme ddl correspond à la valeur de
  75. C d^3u/dksi ddzeta^2 au 4eme noeud d'approximation,
  76. C on aura : QUENOD(5)=4 noeud
  77. C ORDDER(1,5)=1 ord. der. en ksi
  78. C ORDDER(2,5)=0 ord. der. en eta
  79. C ORDDER(3,5)=2 ord. der. en dzeta
  80. C Pour les éléments de Lagrange, on choisit en général :
  81. C QUENOD(i)=i, ORDDER(j,i)=0 tt (i,j)
  82. C * MBPOLY (type POLYNS, voir l'include SPOLYNO) : contient
  83. C les fonctions de base sur l'élément, il y en a autant que de
  84. C degrés de liberté. Les fonctions de forme sont calculés à partir
  85. C des fonctions de base (cf. kfnref.eso). Les fonctions de base
  86. C peuvent être les fonctions de forme.
  87. C
  88. C AMELIORATIONS POSSIBLES :
  89. C -----------------------
  90. C * XCONOD pourrait être un pointeur sur un segment de type MCOORD
  91. C vu sa signification...
  92. C * MBPOLY est actuellement un pointeur sur une base de polynômes.
  93. C On pourrait généraliser à d'autres types de fonctions (par exemple,
  94. C les fractions rationnelles qui servent pour les éléments pyramidaux,
  95. C hexagonaux). Il faudrait alors modifier l'objet qui est pointé par
  96. C MBPOLY et les subroutines chargés d'évaluer les fonctions de base.
  97. C
  98. SEGMENT ELREF
  99. CHARACTER*(LNNOM) NOMLRF
  100. CHARACTER*(LNFORM) FORME
  101. CHARACTER*(LNTYPL) TYPEL
  102. CHARACTER*(LNESP) ESPACE
  103. INTEGER DEGRE
  104. REAL*8 XCONOD(NDIMEL,NBNOD)
  105. INTEGER NPQUAF(NBDDL)
  106. INTEGER NUMCMP(NBDDL)
  107. INTEGER QUENOD(NBDDL)
  108. INTEGER ORDDER(NDIMEL,NBDDL)
  109. POINTEUR MBPOLY.POLYNS
  110. ENDSEGMENT
  111. C
  112. C Segment (extensible) contenant une liste d'éléments de référence.
  113. C
  114. C LISEL est la liste des pointeurs sur les éléments de référence.
  115. SEGMENT ELREFS
  116. POINTEUR LISEL(0).ELREF
  117. ENDSEGMENT
  118.  
  119.  
  120. C***********************************************************************
  121. C NOM : SFACTIV.INC
  122. C DESCRIPTION : Segments des faces actives. Sert pour les intégrations
  123. C sur les faces d'un maillage (Syntaxe de NLIN avec deux
  124. C maillages)
  125. C
  126. C LANGAGE : ESOPE
  127. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  128. C mél : gounand@semt2.smts.cea.fr
  129. C***********************************************************************
  130. C VERSION : v1, 19/12/2002, version initiale
  131. C HISTORIQUE : v1, 19/12/2002, création
  132. C HISTORIQUE :
  133. C HISTORIQUE :
  134. C
  135. C***********************************************************************
  136. *
  137. SEGMENT FACTIV
  138. POINTEUR IFACTI(NBSOUV).SFACTI
  139. ENDSEGMENT
  140. SEGMENT SFACTI
  141. POINTEUR ISFACT(NBSOFV).SSFACT
  142. ENDSEGMENT
  143. SEGMENT SSFACT
  144. LOGICAL LFACTI(NBELFV,NBELEV)
  145. ENDSEGMENT
  146. C
  147. C End of include SFACTIV
  148. C
  149.  
  150.  
  151. C***********************************************************************
  152. C NOM : SFALRF.INC
  153. C DESCRIPTION : Segments de description de familles d'éléments
  154. C de référence.
  155. C Par famille, on entend : ensemble d'éléments de formes
  156. C géométriques différentes, mais compatibles (au niveau
  157. C des espaces d'approximation)
  158. C
  159. C LANGAGE : ESOPE
  160. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  161. C mél : gounand@semt2.smts.cea.fr
  162. C***********************************************************************
  163. C VERSION : v1, 17/08/99, version initiale
  164. C HISTORIQUE : v1, 17/08/99, création
  165. C HISTORIQUE : v2, 23/03/99, mise au standard des points de Gauss
  166. C HISTORIQUE :
  167. C***********************************************************************
  168. C
  169. C Segment décrivant les caractéristiques d'une famille d'élément de
  170. C référence.
  171. C L'ensemble des familles d'éléments de référence est initialisé dans la
  172. C subroutine infals.eso
  173. C * LNNFA (type ENTIER) : longueur de chaîne de caractère.
  174. C * NOMFA : nom unique caractérisant une famille d'éléments de
  175. C référence.
  176. C * NBLRF : nombre d'éléments de la famille.
  177. C * NUQUAF : numéro d'éléments de type QUAF (cf. tableau NOMS de
  178. C CCGEOME.INC)
  179. C * ELEMF : pointeur sur les éléments de référence correspondant à
  180. C chaque QUAF
  181. C
  182. SEGMENT FALRF
  183. CHARACTER*(LNNFA) NOMFA
  184. INTEGER NUQUAF(NBLRF)
  185. POINTEUR ELEMF(NBLRF).ELREF
  186. ENDSEGMENT
  187. C
  188. C Segment (extensible) contenant une liste de familles d'éléments de
  189. C référence.
  190. C
  191. C LISFA est la liste des pointeurs sur des familles d'éléments de
  192. C référence.
  193. SEGMENT FALRFS
  194. POINTEUR LISFA(0).FALRF
  195. ENDSEGMENT
  196.  
  197.  
  198. C***********************************************************************
  199. C NOM : SFAPG.INC
  200. C DESCRIPTION : Segments de description de familles de méthodes
  201. C d'intégration type Gauss.
  202. C Par famille, on entend : ensemble de méthodes
  203. C d'intégration sur des éléments de référence de formes
  204. C géométriques différentes, mais d'ordre d'intégration
  205. C similaires.
  206. C
  207. C LANGAGE : ESOPE
  208. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  209. C mél : gounand@semt2.smts.cea.fr
  210. C***********************************************************************
  211. C VERSION : v1, 16/07/02, version initiale
  212. C HISTORIQUE : v1, 16/07/02, création
  213. C HISTORIQUE :
  214. C***********************************************************************
  215. C
  216. C Segment décrivant les caractéristiques d'une famille d'élément de
  217. C référence.
  218. C L'ensemble des familles d'éléments de référence est initialisé dans la
  219. C subroutine infals.eso
  220. C * LNNFAP (type ENTIER) : longueur de chaîne de caractère.
  221. C * NOMFAP : nom unique caractérisant une famille de méthodes
  222. C d'intégration
  223. C * NBMPG : nombre de méthodes d'intégration de la famille.
  224. C * NBQUAF : numéros d'élément de type QUAF (cf. tableau NOMS de
  225. C CCOPTIO.INC)
  226. C * MPOGAU : pointeur sur les éléments de référence correspondant à
  227. C chaque QUAF
  228. C
  229. SEGMENT FAPG
  230. CHARACTER*(LNNFAP) NOMFAP
  231. INTEGER NBQUAF(NBMPG)
  232. POINTEUR MPOGAU(NBMPG).POGAU
  233. ENDSEGMENT
  234. C
  235. C Segment (extensible) contenant une liste de familles d'éléments de
  236. C référence.
  237. C
  238. C LISFPG est la liste des pointeurs sur des familles de méthodes
  239. C d'intégration
  240.  
  241. SEGMENT FAPGS
  242. POINTEUR LISFPG(0).FAPG
  243. ENDSEGMENT
  244.  
  245.  
  246. C***********************************************************************
  247. C NOM : SIQUAF.INC
  248. C PROJET : Noyau linéaire NLIN
  249. C DESCRIPTION : Segments contenant des informations de nature
  250. C géométrique sur les élements quadratiques fluides
  251. C (QUAFs)
  252. C
  253. C LANGAGE : ESOPE
  254. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  255. C mél : gounand@semt2.smts.cea.fr
  256. C***********************************************************************
  257. C APPELES :
  258. C APPELES (E/S) :
  259. C APPELES (BLAS) :
  260. C APPELES (CALCUL) :
  261. C APPELE PAR :
  262. C***********************************************************************
  263. C VERSION : v1, 17/10/02, version initiale
  264. C HISTORIQUE : v1, 17/10/02, création
  265. C HISTORIQUE :
  266. C HISTORIQUE :
  267. C HISTORIQUE :
  268. C***********************************************************************
  269. C
  270. C Segment décrivant un élément QUAF de référence.
  271. C L'ensemble des des éléments QUAF de référence est initialisé dans la
  272. C subroutine inqfrs.eso
  273. C * NUMQUF : numéro d'éléments de type QUAF (cf. tableau NOMS de
  274. C CCGEOME.INC)
  275. C * NDIMQR : dimension de l'espace de référence
  276. C * NBNOQR : nombre de noeuds du QUAF de référence
  277. C * XCONQR : Coordonnées dans l'espace de référence des noeuds
  278. C du QUAF de référence.
  279. C * NUCENT : numéro du noeud (relativement à XCONQR) du centre de
  280. C l'élément QUAF de référence
  281. C * LFACE : objet de de type MELEME partitionné donnant les faces
  282. C de l'élément QUAF de référence relativement à la
  283. C numérotation de référence donnée par XCONQR
  284. C
  285. SEGMENT IQUAF
  286. INTEGER NUMQUF
  287. REAL*8 XCONQR(NDIMQR,NBNOQR)
  288. INTEGER NUCENT
  289. POINTEUR LFACE.MELEME
  290. ENDSEGMENT
  291. C
  292. C Segment contenant une liste d'éléments QUAF de référence
  293. C
  294. SEGMENT IQUAFS
  295. POINTEUR LISQRF(NBQRF).IQUAF
  296. ENDSEGMENT
  297.  
  298.  
  299. C***********************************************************************
  300. C NOM : SLCOMP.INC
  301. C PROJET : Noyau linéaire NLIN
  302. C DESCRIPTION : Segments contenant des informations sur les lois
  303. C de comportement
  304. C LANGAGE : ESOPE
  305. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  306. C mél : gounand@semt2.smts.cea.fr
  307. C***********************************************************************
  308. C APPELES :
  309. C APPELES (E/S) :
  310. C APPELES (BLAS) :
  311. C APPELES (CALCUL) :
  312. C APPELE PAR :
  313. C***********************************************************************
  314. C VERSION : v1, 10/05/04, version initiale
  315. C HISTORIQUE : v1, 10/05/04, création
  316. C HISTORIQUE :
  317. C HISTORIQUE :
  318. C HISTORIQUE :
  319. C***********************************************************************
  320. C
  321. C Segment décrivant une loi de comportement
  322. C L'ensemble de ces segments est initialisé dans incoms.eso
  323. C * NOMCOM : nom de la loi de comportement de longueur LNNCOM
  324. C * NCOCOF : nombre de coeff dont dépend la loi
  325. C * DERCOF(ICOCOF) = 0 : la loi dépend uniquement du coeff ICOCOF
  326. C = 1 : la loi dépend uniquement d'au moins une
  327. C dérivée spatiale du coeff ICOCOF
  328. C = 2 : la loi dépend du coeff ICOCOF et d'une de ses
  329. C dérivées
  330. C * LTREF = .FALSE. : la loi de comportement ne dépend pas
  331. C des éléments associés à la transformation
  332. C élément de référence -> élément réel
  333. C = .TRUE. : le contraire
  334. C
  335. SEGMENT COMP
  336. CHARACTER*8 NOMCOM
  337. INTEGER DERCOF(NCOCOF)
  338. LOGICAL LTREF
  339. ENDSEGMENT
  340. C
  341. C Segment contenant une liste d'infos sur les comportements
  342. C
  343. SEGMENT COMPS
  344. POINTEUR LISCOM(NBCOMP).COMP
  345. ENDSEGMENT
  346.  
  347.  
  348. C***********************************************************************
  349. C NOM : SMCHAEL.INC
  350. C DESCRIPTION : Mes champs par éléments ! Objets temporaires pour nlin.
  351. C
  352. C LANGAGE : ESOPE
  353. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  354. C mél : gounand@semt2.smts.cea.fr
  355. C***********************************************************************
  356. C VERSION : v1, 19/08/99, version initiale
  357. C HISTORIQUE : v1, 19/08/99, création
  358. C HISTORIQUE :
  359. C HISTORIQUE :
  360. C***********************************************************************
  361. C
  362. C Segment chapeau du champ par éléments.
  363. C * N1 (type ENTIER) : partitionnement du champ par élément
  364. C chaque partition contient un seul type d'élément
  365. C * IMACHE : pointeur sur des maillages élémentaires
  366. C * ICHEVA : pointeur sur des champs associés aux maillages élémentaires
  367. C
  368. SEGMENT MCHAEL
  369. POINTEUR JMACHE(N1).MELEME
  370. POINTEUR ICHEVA(N1).MCHEVA
  371. ENDSEGMENT
  372. C
  373. C Segment contenant les valeurs (scalaires, vectorielles ou
  374. C matricielles) des composantes (scalaires, vectorielles ou
  375. C matricielles) du champ par éléments en un certain nombre
  376. C de points de l'élément.
  377. C * NBLIG, NBCOL (type ENTIER) : Nb. de lignes et de colonnes
  378. C de la valeur matricielle (on choisit généralement NBLIG=1
  379. C si la valeur est vectorielle, NBLIG=NBCOL=1 si scalaire)
  380. C * N2LIG, N2COL (type ENTIER) : idem pour pour les composantes
  381. C (on choisit également N2LIG=composante duale, N2COL=composante
  382. C primale dans le cas d'une composante matricielle)
  383. C * NBPOI (type ENTIER) : nombre de points où l'on exprime la valeur du
  384. C champ sur un élément.
  385. C * NBELM (type ENTIER) : nombre d'éléments où l'on exprime la valeur du
  386. C champ.
  387. C * NMCHLI, NMCHCO : noms de composantes (non utilisés, ils sont juste
  388. C là pour la lisibilité).
  389. C * WELCHE : les valeurs du champ.
  390. C
  391. C REMARQUES IMPORTANTES :
  392. C -----------------------
  393. C * L'objet défini ainsi ne contient pas tous les éléments nécessaires à
  394. C son interprétation (par exemple, il ne dit rien sur les points de
  395. C l'éléments où les valeurs sont exprimées).
  396. C Ce n'est pas très grave car c'est un objet temporaire. Par contre
  397. C son interprétation dépend de l'entité qu'il représente et tous les
  398. C indices du tableau VELCHE ne servent pas forcément.
  399. C Un exemple : pour stocker les valeurs de dérivées de fonctions de
  400. C forme aux points de Gauss sur un élément de référence,
  401. C on peut imposer :
  402. C NBLIG=1 (non utilisé)
  403. C NBCOL=NDDL (nb. de degrés de liberté de l'élément de référence)
  404. C N2LIG=1 (non utilisé)
  405. C N2COL=ISREF (dimension de l'espace de référence)
  406. C indique par rapport à quelle variable d'espace est
  407. C effectuée la dérivation.
  408. C NBPOI=NPOGO (nb. de points de Gauss). On sous-entend que l'on a
  409. C déjà choisi une méthode d'intégration type Gauss, connue par
  410. C ailleurs.
  411. C NBELM=1 (non utilisé)
  412. C * On utilise les mêmes astuces que pour le vrai CHAMELEM à savoir :
  413. C - si un champ est défini sur un nombre NEL d'éléments (obtenu par
  414. C exemple à l'aide des IMACHE), NBELM peut valoir :
  415. C -> soit NEL (cas courant)
  416. C -> soit 1 (auquel cas le champ vaut la même chose sur les NEL
  417. C éléments)
  418. C - de même pour les autres indices, ex. si le champ est constant par
  419. C élément, on peut avoir NBPOI=1, etc...
  420. C On rejoint la remarque précédente : il faut généralement avoir des
  421. C informations supplémentaires, extérieures au champ ("vraies" valeurs
  422. C des indices...) pour pouvoir l'utiliser
  423. C
  424. SEGMENT MCHEVA
  425. C CHARACTER*8 NMCHLI(N2LIG),NMCHCO(N2COL)
  426. REAL*8 WELCHE(NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM)
  427. ENDSEGMENT
  428. *
  429. SEGMENT LCHEVA
  430. POINTEUR LISCHE(NBCHE).MCHEVA
  431. ENDSEGMENT
  432. C=======================================================================
  433. C OBJET DE TYPE 'LIST''LOGI'. DEFINIT UNE LISTE DE LOGIQUE.
  434. C=======================================================================
  435. SEGMENT MLLOGI
  436. LOGICAL LOGI(JG)
  437. ENDSEGMENT
  438. C***********************************************************************
  439. C NOM : SMTNLIN.INC
  440. C DESCRIPTION : Les segments de données d'entrée et de données de
  441. C travail pour NLIN
  442. C
  443. C
  444. C
  445. C LANGAGE : ESOPE
  446. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  447. C mél : gounand@semt2.smts.cea.fr
  448. C***********************************************************************
  449. C VERSION : v1, 05/08/2002, version initiale
  450. C HISTORIQUE : v1, 05/08/2002, création
  451. C HISTORIQUE : v1, 27/08/2002, ajout des variables duales
  452. C HISTORIQUE : v2, 26/09/2002, modification, simplification (?)
  453. C HISTORIQUE : v3, 22/08/2003, modifs nls9
  454. C HISTORIQUE : v4, 22/09/2003, refonte complète
  455. C on pourrait encore aller une etape plus
  456. C loin en ne distinguant plus coeff et
  457. C variables
  458. C***********************************************************************
  459. C
  460. C Segment TUTU
  461. C Description :
  462. C
  463. * Pour la géométrie
  464. SEGMENT TABGEO
  465. CHARACTER*4 DISGEO
  466. *
  467. POINTEUR JGEO.MCHAEL
  468. *
  469. ENDSEGMENT
  470. * Pour les variables et les coefficients
  471. SEGMENT TABVDC
  472. * Contient un numéro entre 1 et JGVD
  473. INTEGER VVARPR(NUMVPR)
  474. INTEGER VVARDU(NUMVDU)
  475. INTEGER VDATPR(NUMDPR)
  476. INTEGER VDATDU(NUMDDU)
  477. * Contient un numéro entre 1 et JGCOF
  478. INTEGER VCOFPR(NUMCPR)
  479. INTEGER VCOFDU(NUMCDU)
  480. ** Facteur multiplicatif pour le coefficient (remplace vfmul)
  481. * REAL*8 XCOFPR(NUMCPR)
  482. * REAL*8 XCOFDU(NUMCDU)
  483. *
  484. * Contient un pointeur sur une liste de numéros de coefficients
  485. * (entre 1 et JLCOF) ou 0 si le terme n'intervient pas dans
  486. * l'opérateur
  487. *
  488. INTEGER ILCPR(NUMDER+1,NUMOP,NUMVPR)
  489. INTEGER ILCDU(NUMDER+1,NUMOP,NUMVDU)
  490. *
  491. * Les listes de coefficients (sans doublons)
  492. *
  493. * Les MLENTI pointés sont de dimension JGCOF
  494. * et MLENTI.LECT(IGCOF)=i indique que le coefficient de numéro
  495. * IGCOF (entre 1 et JGCOF) sera à la puissance i (éventuellement 0
  496. * ou négatif)
  497. POINTEUR VLCOF(JLCOF).MLENTI
  498. *
  499. * Les coefficients (sans doublons)
  500. *
  501. * LDAT contient un numéro entre 1 et JGVD
  502. POINTEUR VCOMP(JGCOF).COMP
  503. POINTEUR VLDAT(JGCOF).MLENTI
  504. *
  505. * Les valeurs des variables et des datas (sans doublons)
  506. * DJSVD contient un numéro d'espace de discrétisation (entre 1 et KGVD)
  507. *
  508. * Si MVD.EQ.0 : la valeur de la variable ou de la donnée JGVD est
  509. * inconnue
  510. * Si MVD.GT.0 : la valeur de la variable ou de la donnée JGVD est
  511. * connue et donnée par le chpoint ou le mchaml pointé
  512. * Le type de champ est donné par TYPVD
  513. * Si MVD.LT.0 : la valeur de la variable ou de la donnée JGVD est
  514. * connue et constante donnée par XVD(JGVD)
  515.  
  516. INTEGER DJSVD(JGVD)
  517. POINTEUR NOMVD(JGVD).MLMOTS
  518. CHARACTER*8 TYPVD(JGVD)
  519. INTEGER MVD(JGVD)
  520. * POINTEUR MVD(JGVD).MCHPOI
  521. * POINTEUR NVD(JGVD).MCHAML
  522. REAL*8 XVD(JGVD)
  523. *
  524. * Les différents espaces de discrétisations
  525. * pour les variables et les datas (sans doublons)
  526. *
  527. CHARACTER*4 DISVD(KGVD)
  528. ENDSEGMENT
  529. *
  530. * Segment contenant les objets de travail
  531. *
  532. SEGMENT TATRAV
  533. * Valeurs des listes de coefficients (local)
  534. POINTEUR VVCOF(JLCOF).MCHEVA
  535. * Valeurs des coefficients (local)
  536. POINTEUR VCOF(JGCOF).MCHEVA
  537. * Valeurs des variables et data (global)
  538. POINTEUR IVD(JGVD).MCHAEL
  539. * Valeurs des variables et data et de leurs dérivées (local)
  540. POINTEUR VD(JGVD).MCHEVA
  541. POINTEUR DVD(JGVD).MCHEVA
  542. * Fonctions de forme
  543. POINTEUR FFVD(KGVD).MCHEVA
  544. POINTEUR DFFVD(KGVD).MCHEVA
  545. *
  546. * On définit des tableaux de logique valant .TRUE. si on a besoin
  547. * de calculer les MCHEVA correspondant, sauf pour VVCOF : on doit
  548. * tous les calculer
  549. *
  550. LOGICAL LVCOF(JGCOF)
  551. * Valeurs des variables et data et de leurs dérivées (local)
  552. LOGICAL LVD(JGVD)
  553. LOGICAL LDVD(JGVD)
  554. * Fonctions de forme
  555. LOGICAL LFFVD(KGVD)
  556. LOGICAL LDFFVD(KGVD)
  557. *
  558. ENDSEGMENT
  559. *
  560. * Segment contenant les matrices élémentaires
  561. *
  562. SEGMENT TABMAT
  563. POINTEUR VMAT(NUMVDU,NUMVPR).MCHAEL
  564. ENDSEGMENT
  565. C
  566. C End of include SMTNLIN
  567. C
  568.  
  569.  
  570. C***********************************************************************
  571. C NOM : SPOGAU.INC
  572. C DESCRIPTION : Segments décrivant des méthodes d'intégration numérique
  573. C (type Gauss) : en particulier poids et points
  574. C d'intégration.
  575. C
  576. C REFERENCES :
  577. C * @Book{stroud,
  578. C author = {A.H. Stroud},
  579. C title = {Approximate calculation of Multiple Integrals},
  580. C publisher = {Prentice-Hall, Inc.},
  581. C year = {1971},
  582. C series = {Prentice-Hall Series in Automatic Computation},
  583. C annote = {M2309A, la bible pour les méthodes de cubature
  584. C type Gauss}
  585. C }
  586. C * Continuation des travaux de Stroud par Ronald Cools :
  587. C http://www.cs.kuleuven.ac.be/~ronald/index.html
  588. C mailto://Ronald.Cools@cs.kuleuven.ac.be
  589. C et ses articles
  590. C
  591. C LANGAGE : ESOPE
  592. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  593. C mél : gounand@semt2.smts.cea.fr
  594. C***********************************************************************
  595. C VERSION : v2, 19/10/99
  596. C HISTORIQUE : v1, 21/07/99, création
  597. C HISTORIQUE : v2, 19/10/99, dans POGAUS, on ne duplique plus le nom de
  598. C méthode, et on utilise un segment extensible, plus souple
  599. C HISTORIQUE :
  600. C***********************************************************************
  601. C
  602. C Segment décrivant une méthode d'intégration numérique de type Gauss
  603. C L'ensemble des méthodes de type Gauss est initialisé dans la subroutine
  604. C inpgs.eso
  605. C
  606. C * LNNPG, LNTPG, LNFPG (type ENTIER) :
  607. C longueur de chaînes de caractère.
  608. C * NOMPG : nom unique caractérisant la méthode d'intégration.
  609. C Notre choix de nom est la concaténation des informations
  610. C suivantes : - type de méthode (GAuss, Gauss-Produit (conique),
  611. C Gauss-Jacobi + valeurs de \alpha,\beta)
  612. C - forme du domaine d'intégration (cf. Stroud) :
  613. C * Cubique en dimension 1, 2, 3 (C1, C2, C3)
  614. C * Simplex en dimension 2, 3 (T2, T3)
  615. C * Prisme à base triangle (PR)
  616. C (sauf pour les méthodes Gauss-Jacobi qui sont
  617. C forcément sur un C1)
  618. C - ordre de la méthode d'intégration
  619. C - nombre de points de la méthode d'intégration
  620. C Exemple de noms : * GJ10-7-4 (méthode de Gauss-Jacobi \alpha=1 \beta=0
  621. C d'ordre 7 à 4 points
  622. C * GPT2-7-16 (méthode Gauss-produit sur un triangle,
  623. C ordre 7 à 16 points
  624. C * TYPMPG : type de la méthode (GAUSS, GAUSS-JACOBI, GAUSS-PRODUIT)
  625. C * FORLPG : forme géométrique du domaine d'intégration (SEGMENT,
  626. C TRIANGLE, QUADRANGLE, TETRAEDRE, PRISME, CUBE)
  627. C * NORDPG : ordre de la méthode (tel qu'on intègre exactement tous les
  628. C monômes d'ordre inférieur ou égal à NORDPG)
  629. C * NBPG : nombre de points d'intégration.
  630. C * NDLPG : dimension de l'espace du domaine d'intégration.
  631. C * XCOPG : coordonnées des points d'intégration
  632. C * XPOPG : poids associé à chaque point d'intégration
  633. C
  634. C AMELIORATIONS POSSIBLES :
  635. C -----------------------
  636. C * XCOPG et XPOPG pourraient être des pointeurs sur des champs par
  637. C éléments MCHAEL par souci de régularité avec le reste de nlin.
  638. C
  639. SEGMENT POGAU
  640. CHARACTER*(LNNPG) NOMPG
  641. CHARACTER*(LNTPG) TYPMPG
  642. CHARACTER*(LNFPG) FORLPG
  643. INTEGER NORDPG
  644. REAL*8 XCOPG(NDLPG,NBPG)
  645. REAL*8 XPOPG(NBPG)
  646. ENDSEGMENT
  647. C
  648. C Segment contenant une liste de méthodes d'intégration numérique
  649. C
  650. C LISPG est la liste des pointeurs sur les méthodes d'intégrations
  651. SEGMENT POGAUS
  652. POINTEUR LISPG(0).POGAU
  653. ENDSEGMENT
  654.  
  655.  
  656. C***********************************************************************
  657. C NOM : SPOLYNO.INC
  658. C DESCRIPTION : Segment servant à stocker un polynôme.
  659. C
  660. C LANGAGE : ESOPE
  661. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  662. C mél : gounand@semt2.smts.cea.fr
  663. C***********************************************************************
  664. C VERSION : v1, 05/05/00, version initiale
  665. C HISTORIQUE : v1, 05/05/00, création
  666. C HISTORIQUE :
  667. C HISTORIQUE :
  668. C***********************************************************************
  669. C * NBMON : nb. de monômes du polynôme
  670. C * NDIML : les monômes sont dans R^{NDIML}
  671. C * COEMON : coefficient multiplicateur de chaque monôme
  672. C * EXPMON : exposant des monômes de la base polynômiale
  673. C exemple : si le 4ème monôme du polynôme est x^2 z^3
  674. C alors : EXPMON(1,4)=2
  675. C EXPMON(2,4)=0
  676. C EXPMON(3,4)=3
  677. SEGMENT POLYNO
  678. REAL*8 COEMON(NBMON)
  679. INTEGER EXPMON(NDIML,NBMON)
  680. ENDSEGMENT
  681. C
  682. C Segment contenant une liste de NBPOLY polynômes
  683. C
  684. SEGMENT POLYNS
  685. POINTEUR LIPOLY(NBPOLY).POLYNO
  686. ENDSEGMENT
  687. C***********************************************************************
  688. C NOM : TMPREC.INC
  689. C DESCRIPTION : Segment contenenant des informations de
  690. C préconditionnement
  691. C
  692. C
  693. C
  694. C LANGAGE : ESOPE
  695. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  696. C mél : gounand@semt2.smts.cea.fr
  697. C***********************************************************************
  698. C VERSION : v1, 12/10/2005, version initiale
  699. C HISTORIQUE : v1, 12/10/2005, création
  700. C HISTORIQUE :
  701. C HISTORIQUE :
  702. C
  703. C***********************************************************************
  704. C
  705. C Segment MPREC
  706. C Description :
  707. C
  708. SEGMENT MPREC
  709. POINTEUR DAT(NDAT).MCHEVA
  710. POINTEUR PREC(NPREC).MCHEVA
  711. ENDSEGMENT
  712. C
  713. C End of include TMPREC
  714. C
  715.  
  716.  
  717.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales