61 2 IGRSURF ,IXS ,IXQ ,IXC ,IXT ,
63 4 ,IPART ,IPARTS ,IPARTQ ,IPARTC ,
64 5 IPARTT ,IPARTP ,IPARTR ,IPARTTG ,X ,
66 7 BUFSF ,KNOD2ELS,NOD2ELS ,SH4TREE ,SH3TREE ,
67 8 ISUBMOD ,FLAG ,UNITAB ,IBOX ,
68 9 IXS10 ,IXS16 , IXS20 ,RTRANS ,
69 A LSUBMODEL,KNOD2ELC,NOD2ELC,KNOD2ELTG,NOD2ELTG,
70 B KXIG3D ,IXIG3D ,IPARTIG3D,
71 C KNOT ,IGEO ,WIGE ,KNOD2ELIG3D,NOD2ELIG3D,
72 D V ,NIGE ,RIGE ,XIGE ,
73 E VIGE ,IADTABIGE,DECALIGEO,IADBOXMAX,KNOD2ELQ,
74 F NOD2ELQ ,SUBSET ,IGRBRIC ,IGRSH4N ,IGRSH3N,
75 G KNOTLOCPC,KNOTLOCEL,NSETS,MAP_TABLES)
89 use element_mod ,
only : nixs, nixq, nixc, nixt, nixp, nixr, nixtg
93#include "implicit_f.inc"
100#include "param_c.inc"
101#include "remesh_c.inc"
102#include "ige3d_c.inc"
104#include "tabsiz_c.inc"
109 INTEGER ITABM1(SITABM1),
110 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),IXC(NIXC,NUMELX),IXT(NIXT
113 . IPARTTG(NUMELTG),IPART(LIPART1,NPART+NTHPART),ITAB(NUMNOD),
114 . ISKN(LISKN,SISKWN/LISKN),MFI,KNOD2ELS(NUMNOD+1),
115 . NOD2ELS(8*NUMELS+6*NUMELS10+12*NUMELS20+8*NUMELS16),
116 . SH4TREE(*NUMELC),SH3TREE(KSH3TREE*NUMELTG),ISUBMOD(NSUBMOD),
117 . IXS10(6,*),IXS16(8,*),IXS20(12,*),
118 . (NUMNOD+1),NOD2ELC(4*NUMELC),KNOD2ELTG(NUMNOD+1),NOD2ELTG(3*NUMELTG+3*NUMELTG6),
119 . KXIG3D(NIXIG3D,NUMELIG3D0+ADDELIG3D),IPARTIG3D(NUMELIG3D0+ADDELIG3D),IXIG3D(*),
120 . KNOD2ELIG3D(NUMNOD+1),NOD2ELIG3D(*),
121 . NIGE(*),IGEO(NPROPGI,NUMGEO),
122 . KNOD2ELQ(NUMNOD+1),NOD2ELQ(4*NUMELQ)
123 INTEGER FLAG,IADTABIGE,DECALIGEO,
125 my_real x(3,numnod),skew(lskew,sskew/lskew),bufsf(lisurf1*nsurf),
126 . rtrans(ntransf,nrtrans),v(3,numnod),rige(*),xige(*),vige(*),
127 . wige(*),knot(*),knotlocpc(*),knotlocel(*)
128 TYPE() LSUBMODEL(NSUBMOD)
129 TYPE(MAPPING_STRUCT_),
INTENT(IN) :: MAP_TABLES
131 TYPE (SUBSET_) ,
DIMENSION(NSUBS) :: SUBSET
132 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
133 TYPE (GROUP_) ,
DIMENSION(NGRSHEL) :: IGRSH4N
134 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
135 TYPE (SURF_) ,
DIMENSION(NSURF+NSETS) :: IGRSURF
136 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
140 INTEGER J,JJ,I,K,L,II,KK,ISU,ID,NSEG,NOSYS,NTOT,
141 . iter,igs,igrs,nsu,cont,iad0,iadv,
142 . iadfin,it0,it1,it2,it3,it4,it5,it6,it7,ipp,n1,n2,
143 . nsegv,ne,ityp,iskew,mad,srftyp,refmad,dgr,dgr1,
144 . jc, iext,uid,iflagunit,
145 . isk,boxtype,j2(2),it8,sbufbox,it9,iadpl,sub_id,
146 . ifre,numel,intmax,ibufsiz,nindx,stat,nsegige,
147 . iadbox,n3,n4,nseg0,
148 . list_surf(nsurf),nseg_tot,nn,nentity,
151 . xmin,xmax,ymin,
ymax,zmin,zmax,bid,
152 . s_a,s_b,s_c,xg,yg,zg,fac_l,diam,xp1,yp1,zp1,xp2,yp2,zp2
153 CHARACTER(LEN=NCHARTITLE) :: TITR,STRING
155 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2,KEY3
156 INTEGER,
DIMENSION(:),
ALLOCATABLE :: BUFBOX, BUFTMP, INDX ,TAGSHELLBOXC,TAGSHELLBOXG
157 my_real :: VECTX,VECTY,VECTZ,VECT
158 DOUBLE PRECISION RSBUFBOX
159 CHARACTER(LEN=NCHARTITLE) :: TITR1
160 LOGICAL :: FLAG_GRBRIC, lFOUND, IS_AVAILABLE, IS_ENCRYPTED, lERROR, l1104
161 INTEGER :: ID_PART,MODE
163 INTEGER :: NINDX_SOL, NINDX_SOL10
164 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDX_SOL, INDX_SOL10
165 TYPE(PART_TYPE),
DIMENSION(:),
ALLOCATABLE :: SURF_ELM
187 DATA MESS/
'SURFACE DEFINITION '/
188 DATA INTMAX /2147483647/
244 ibufsiz=numelc+numeltg+6*numels+npart
245 ALLOCATE(buftmp(ibufsiz),indx(ibufsiz),stat=stat)
246 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
261 . option_titr = titr ,
269 igrsurf(igs)%NSEG = 0
270 igrsurf(igs)%NSEG_IGE = 0
271 igrsurf(igs)%IAD_IGE = 0
272 igrsurf(igs)%TYPE = 0
273 igrsurf(igs)%ID_MADYMO = 0
274 igrsurf(igs)%IAD_BUFR = 0
275 igrsurf(igs)%NB_MADYMO = 0
276 igrsurf(igs)%TYPE_MADYMO = 0
277 igrsurf(igs)%LEVEL = 0
278 igrsurf(igs)%TH_SURF = 0
279 igrsurf(igs)%ISH4N3N = 0
280 igrsurf(igs)%NSEG_R2R_ALL = 0
281 igrsurf(igs)%NSEG_R2R_SHARE = 0
285 igrsurf(igs)%TITLE=titr
286 IF(key(1:4)==
'SURF' .OR. key(1:5)==
'DSURF')
THEN
291 ELSEIF(key(1:3)==
'SEG')
THEN
295 nseg0 = igrsurf(igs)%NSEG
296 CALL my_alloc(igrsurf(igs)%NODES,nseg0,4)
297 igrsurf(igs)%NODES(1:nseg0,1:4) = 0
298 CALL my_alloc(igrsurf(igs)%ELTYP,nseg0)
299 igrsurf(igs)%ELTYP(1:nseg0) = 0
300 CALL my_alloc(igrsurf(igs)%ELEM,nseg0)
301 igrsurf(igs)%ELEM(1:nseg0) = 0
304 CALL hm_get_intv (
'segmax' ,nentity,is_available,lsubmodel)
310 n1 = usr2sys(n1,itabm1,mess,id)
311 n2 = usr2sys(n2,itabm1,mess,id)
313 IF(numels10>0.OR.flag==1)
THEN
317 n3 = usr2sys(n3,itabm1
319 n4 = usr2sys(n4,itabm1,mess,id)
328 IF(numels10 > 0.AND.n2d==0.AND.n3==n4.AND.n3
THEN
329 nseg0 = igrsurf(igs)%NSEG
333 n1 = usr2sys(n1,itabm1,mess,id)
334 n2 = usr2sys(n2,itabm1,mess,id)
336 CALL tsurftag(ixs ,ixs10 ,igrsurf(igs),flag ,nseg
337 2 knod2els,nod2els ,n1 ,n2 ,n3 ,
342 nseg0 = igrsurf(igs)%NSEG
345 . nseg,igrsurf(igs)%NODES,igrsurf(igs)%ELTYP,igrsurf(igs)%ELEM,0,0)
349 igrsurf(igs)%NSEG = nseg
353 ELSEIF(key(1:6)==
'SUBSET'.OR. key(1:4)==
'PART'.OR.
354 . key(1:3)==
'MAT' .OR. key(1:4)==
'PROP'.OR.
355 . key(1:6)==
'GRBRIC')
THEN
358 IF (flag == 0) igrsurf(igs)%NSEG=0
360 ELSEIF(key(1:3) ==
'BOX'.AND.nbbox == 0 .AND.
361 . (key2(1:5) /=
'RECTA'.AND.
362 . key2(1:5) /=
'CYLIN'.AND.key2(1:5) /=
'SPHER'))
THEN
365 ELSEIF(key(1:2)==
'GR')
THEN
368 IF (flag == 0) igrsurf(igs)%NSEG=0
370 ELSEIF(key(1:6)==
'ELLIPS'.OR.key(1:8)==
'MDELLIPS')
THEN
373 IF (flag == 0) igrsurf(igs)%NSEG=1
376 nseg0 = igrsurf(igs)%NSEG
377 CALL my_alloc(igrsurf(igs)%NODES,nseg0,4)
378 igrsurf(igs)%NODES(1:nseg0,1:4) = 0
379 CALL my_alloc(igrsurf(igs)%ELTYP,nseg0)
380 igrsurf(igs)%ELTYP(1:nseg0) = 0
381 CALL my_alloc(igrsurf(igs)%ELEM,nseg0)
382 igrsurf(igs)%ELEM(1:nseg0) = 0
384 ELSEIF(key(1:6)==
'SUBMOD')
THEN
387 IF (flag == 0) igrsurf(igs)%NSEG=0
389 ELSEIF(key(1:3)==
'BOX'.AND.(key2(1:5) ==
'RECTA'.OR.
390 . key2(1:5) ==
'CYLIN'.OR.key2(1:5) ==
'SPHER'))
THEN
394 ELSEIF(key(1:3) ==
'BOX' .AND. nbbox > 0)
THEN
397 IF (flag == 0) igrsurf(igs)%NSEG=0
399 ELSEIF(key(1:6)==
'PLANE')
THEN
402 IF (flag == 0) igrsurf(igs)%NSEG=0
411 string =
"/SURF/"//key(1:len_trim(key))
412 IF(len_trim(key2)>1)string = string//key2(1:len_trim
413 CALL ancmsg(msgid=686,anmode=aninfo,msgtype=msgerror,i1=id, c1=titr, c2=string
419 numel = numelc+numeltg
426 list_surf(igs) = igrsurf(igs)%ID
446 ALLOCATE(tagshellboxc(numelc),stat=stat)
447 ALLOCATE(tagshellboxg(numeltg),stat=stat)
448 tagshellboxc(1:numelc) = 0
449 tagshellboxg(1:numeltg) = 0
454 ELSEIF (flag == 1)
THEN
455 ALLOCATE(bufbox(iadboxmax))
456 bufbox(1:iadboxmax) = 0
458 sbufbox = int(intmax)
464 . option_titr = titr ,
470 IF(key(1:3) ==
'BOX'.AND. nbbox > 0)
THEN
475 IF (unitab%UNIT_ID(j) == uid)
THEN
476 fac_l = unitab%FAC_L(j)
481 IF (uid/=0.AND.iflagunit==0)
THEN
482 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
483 . i2=uid,i1=id,c1=
'SURFACE',
489 nseg0 = igrsurf(igs)%NSEG
490 CALL my_alloc(igrsurf(igs)%NODES,nseg0,4)
491 igrsurf(igs)%NODES(1:nseg0,1:4) = 0
492 CALL my_alloc(igrsurf(igs)%ELTYP
493 igrsurf(igs)%ELTYP(1:nseg0) = 0
494 CALL my_alloc(igrsurf(igs)%ELEM,nseg0)
495 igrsurf(igs)%ELEM(1:nseg0) = 0
501 . x , nseg ,flag ,skew,
502 . iskn ,1 ,itabm1 ,ibox ,
503 . id ,bufbox,igrsurf(igs),iadbox,key ,
504 . sbufbox,titr ,mess ,tagshellboxc,
507 iadboxmax =
max(iadbox,iadboxmax)
509 IF (iadbox>sbufbox .OR. iadbox<0)
510 .
CALL ancmsg(msgid=1007, msgtype=msgerror,anmode=anstop)
514 .
CALL hm_bigsbox(numel ,ixtg ,nixtg ,2 ,4 ,7 ,
515 . x , nseg ,flag ,skew,
516 . iskn ,1 ,itabm1 ,ibox ,
517 . id ,bufbox,igrsurf(igs),iadbox,key ,
518 . sbufbox,titr ,mess ,tagshellboxg,
520 IF (iadbox>sbufbox .OR. iadbox<0)
521 .
CALL ancmsg(msgid=1007, msgtype=msgerror,anmode=anstop)
523 iadboxmax =
max(iadbox,iadboxmax)
526 IF(key2(1:3)==
'EXT')
THEN
528 ELSEIF(key2(1:3)==
'ALL')
THEN
531 igrsurf(igs)%EXT_ALL = iext
534 nseg0 = igrsurf(igs)%NSEG
536 . knod2els ,nod2els,iext ,flag,
537 . ixs10 ,ixs16 ,ixs20,skew ,ibox,
538 . id ,bufbox,iadbox ,key ,
539 . sbufbox ,titr ,knod2elc,nod2elc ,ixc ,
540 . tagshellboxc ,knod2eltg ,nod2eltg ,ixtg ,
541 . tagshellboxg,igrsurf(igs),nn,nseg0,lsubmodel)
544 iadboxmax =
max(iadbox,iadboxmax)
547 igrsurf(igs)%NSEG = nseg
548 ELSEIF (flag == 1)
THEN
549 igrsurf(igs)%NSEG = nseg
552 IF (iadbox>sbufbox .OR. iadbox<0)
553 .
CALL ancmsg(msgid=1007, msgtype=msgerror,anmode=anstop)
555 IF(
ALLOCATED(bufbox))
DEALLOCATE(bufbox)
556 DEALLOCATE(tagshellboxc,tagshellboxg)
563 IF(it2/=0.OR.it6/=0)
THEN
564 ALLOCATE( surf_elm(npart) )
566 CALL init_surf_elm(numels ,numels8,numels10,numelc ,numeltg ,
567 1 ibid ,ibid ,ibid ,npart ,iparts ,
568 2 ipartc ,iparttg,ibid ,ibid ,ibid ,
575 ALLOCATE( indx_sol(numels) )
576 ALLOCATE( indx_sol10(numels) )
588 nseg0 = igrsurf(igs)%NSEG
589 IF (key(1:6)==
'GRBRIC')
THEN
590 IF(key2(1:3)==
'EXT')
THEN
594 IF(key2(1:4)==
'FREE')
THEN
598 IF(iext==0.AND.ifre==0)
THEN
607 nseg0 = igrsurf(igs)%NSEG
608 CALL my_alloc(igrsurf(igs)%NODES,nseg0,4)
609 igrsurf(igs)%NODES(1:nseg0,1:4) = 0
610 CALL my_alloc(igrsurf(igs)%ELTYP,nseg0)
611 igrsurf(igs)%ELTYP(1:nseg0) = 0
612 CALL my_alloc(igrsurf(igs)%ELEM,nseg0)
613 igrsurf(igs)%ELEM(1:nseg0) = 0
616 numel=numels8+numels10
618 CALL hm_surfgr2(ngrbric ,key(1:6),numel ,igrsurf(igs)%ID,
619 2 igrbric ,buftmp ,titr ,titr1 ,
620 3 indx ,nindx ,flag ,nindx_sol,nindx_sol10,
621 4 indx_sol,indx_sol10 ,flag_grbric
622 CALL ssurftag(ixs ,iparts ,nseg0 ,igrsurf(igs),buftmp,
623 2 nseg ,knod2els,nod2els ,iext ,flag ,
624 3 ixs10 ,ixs16 ,ixs20 ,ifre ,key ,
625 4 knod2elc,nod2elc ,knod2eltg,nod2eltg,
626 5 ixc ,ixtg ,ipartc ,iparttg ,nindx,
630 igrsurf(igs)%NSEG = nseg
634 IF (key(1:4)==
'PART'.OR.key(1:6)==
'SUBSET'.OR.
635 . key(1:3)==
'MAT' .OR.key(1:4)==
'PROP')
THEN
636 IF(key2(1:3)==
'EXT')
THEN
638 ELSEIF(key2(1:3)==
'ALL')
THEN
641 igrsurf(igs)%EXT_ALL = iext
644 nseg0 = igrsurf(igs)%NSEG_IGE
645 CALL my_alloc(igrsurf(igs)%NODES_IGE,nseg0,4)
646 igrsurf(igs)%NODES_IGE(1:nseg0,1:4) = 0
647 CALL my_alloc(igrsurf(igs)%ELTYP_IGE,nseg0)
648 igrsurf(igs)%ELTYP_IGE(1:nseg0) = 0
649 CALL my_alloc(igrsurf(igs)%ELEM_IGE,nseg0)
650 igrsurf(igs)%ELEM_IGE(1:nseg0) = 0
652 nseg0 = igrsurf(igs)%NSEG
653 CALL my_alloc(igrsurf(igs)%NODES,nseg0,4)
654 igrsurf(igs)%NODES(1:nseg0,1:4) = 0
655 CALL my_alloc(igrsurf(igs)%ELTYP,nseg0)
656 igrsurf(igs)%ELTYP(1:nseg0) = 0
657 CALL my_alloc(igrsurf(igs)%ELEM,nseg0)
658 igrsurf(igs)%ELEM(1:nseg0) = 0
660 IF (nvolu + nmonvol > 0)
THEN
661 nseg0 = igrsurf(igs)%NSEG
664 CALL my_alloc(igrsurf(igs)%REVERSED, nseg0)
669 . igrsurf(igs)%ID,titr,titr1,indx,nindx ,
670 . flag ,subset, lsubmodel,map_tables%IPARTM)
673 CALL surftag(numel,ixc,nixc,2,5,3,ipartc,
674 . buftmp,igrsurf(igs),nseg,flag,nindx,
677 CALL surftag(numel,ixtg,nixtg,2,4,7,iparttg,
678 . buftmp,igrsurf(igs),nseg,flag,nindx,
683 . buftmp,igrsurf(igs),nseg,ipart,
684 . ksh4tree,sh4tree,flag)
686 CALL surftagadm(numel,ixtg,nixtg,2,4,7,iparttg,
687 . buftmp,igrsurf(igs),nseg,ipart,
688 . ksh3tree,sh3tree,flag)
693 IF (iabs(buftmp(iparts(ii)))==1)
THEN
697 . anmode=aninfo_blind_1,
703 IF(l1104)
CALL ancmsg(msgid=1104,
705 . anmode=aninfo_blind_1,
711 DO ii=numels8+numels10+1,numels
712 IF (iabs(buftmp(iparts(ii)))==1)
THEN
713 titr = igrsurf(igs)%TITLE
723 nseg0 = igrsurf(igs)%NSEG
724 CALL ssurftag(ixs ,iparts ,nseg0 ,igrsurf(igs),buftmp ,
725 2 nseg ,knod2els,nod2els ,iext ,flag ,
726 3 ixs10 ,ixs16 ,ixs20 ,ifre ,key ,
727 4 knod2elc,nod2elc ,knod2eltg,nod2eltg,
728 5 ixc ,ixtg ,ipartc ,iparttg ,nindx,
729 6 nindx_sol, nindx_sol10, indx, indx_sol, indx_sol10,
731 IF(numelig3d/=0)
THEN
735 4 nsegige,knot ,igeo ,wige ,
736 5 x ,v, knod2elig3d,nod2elig3d ,
737 6 nige,rige,xige,vige,iadtabige,decaligeo,
738 7 igrsurf(igs),knotlocpc,knotlocel)
742 CALL qsurftag(ixq ,ipartq , nseg0 ,igrsurf(igs),buftmp ,
743 2 nseg ,knod2elq,nod2elq,iext ,flag ,
747 igrsurf(igs)%NSEG = nseg
748 igrsurf(igs)%NSEG_IGE = nsegige
749 numfakenodigeo=numfakenodigeo+16*nsegige/9
761 DEALLOCATE( indx_sol )
762 DEALLOCATE( indx_sol10 )
772 . option_titr = titr ,
778 IF (key(1:6)==
'SUBMOD')
THEN
779 IF(key2(1:3)==
'EXT')
THEN
781 ELSEIF(key2(1:3)==
'ALL')
THEN
784 igrsurf(igs)%EXT_ALL = iext
787 nseg0 = igrsurf(igs)%NSEG
788 CALL my_alloc(igrsurf(igs)%NODES,nseg0,4)
789 igrsurf(igs)%NODES(1:nseg0,1:4) = 0
790 CALL my_alloc(igrsurf(igs)%ELTYP,nseg0)
791 igrsurf(igs)%ELTYP(1:nseg0) = 0
792 CALL my_alloc(igrsurf(igs)%ELEM,nseg0)
793 igrsurf(igs)%ELEM(1:nseg0) = 0
794 IF (nvolu + nmonvol > 0)
THEN
795 nseg0 = igrsurf(igs)%NSEG
798 CALL my_alloc(igrsurf(igs)%REVERSED, nseg0)
803 . mess ,titr ,titr1 ,indx ,nindx,
808 CALL surftag(numel,ixc,nixc,2,5,3,ipartc,
809 . buftmp,igrsurf(igs),nseg,flag,nindx,
812 CALL surftag(numel,ixtg,nixtg,2,4,7,iparttg,
813 . buftmp,igrsurf(igs),nseg,flag,nindx,
818 . buftmp,igrsurf(igs),nseg,ipart,
819 . ksh4tree,sh4tree,flag)
821 CALL surftagadm(numel,ixtg,nixtg,2,4,7,iparttg,
822 . buftmp,igrsurf(igs),nseg,ipart,
823 . ksh3tree,sh3tree,flag)
829 IF(iabs(buftmp(iparts(ii)))==1)
THEN
833 . anmode=aninfo_blind_1,
839 IF(l1104)
CALL ancmsg(msgid=1104,
841 . anmode=aninfo_blind_1,
846 DO ii=numels8+numels10+1,numels
847 IF(iabs(buftmp(iparts(ii)))==1)
THEN
857 nseg0 = igrsurf(igs)%NSEG
858 CALL ssurftag(ixs ,iparts ,nseg0 ,igrsurf(igs),buftmp,
859 2 nseg ,knod2els,nod2els ,iext ,flag ,
860 3 ixs10 ,ixs16 ,ixs20 ,ifre ,key ,
861 4 knod2elc,nod2elc ,knod2eltg,nod2eltg,
862 5 ixc ,ixtg ,ipartc ,iparttg ,nindx,
863 6 nindx_sol, nindx_sol10, indx, indx_sol, indx_sol10,
866 igrsurf(igs)%NSEG = nseg
885 . option_titr = titr ,
893 IF (key
'GRSHEL')
THEN
896 nseg0 = igrsurf(igs)%NSEG
897 CALL my_alloc(igrsurf(igs)%NODES,nseg0,4)
898 igrsurf(igs)%NODES(1:nseg0,1:4) = 0
899 CALL my_alloc(igrsurf(igs)%ELTYP,nseg0)
900 igrsurf(igs)%ELTYP(1:nseg0) = 0
901 CALL my_alloc(igrsurf(igs)%ELEM,nseg0)
902 igrsurf(igs)%ELEM(1:nseg0) = 0
904 IF (nvolu + nmonvol > 0)
THEN
905 nseg0 = igrsurf(igs)%NSEG
908 CALL my_alloc(igrsurf(igs)%REVERSED, nseg0)
914 CALL hm_surfgr2(ngrshel ,key(1:6),numel ,igrsurf(igs)%ID,
915 . igrsh4n ,buftmp ,titr ,titr1 ,
916 . indx ,nindx ,flag ,nindx_sol,nindx_sol10,
917 . indx_sol,indx_sol10 ,flag_grbric,lsubmodel)
919 . buftmp,igrsurf(igs),nseg,flag,
920 . indx,nindx,nseg_tot)
922 igrsurf(igs)%NSEG = nseg
925 ELSEIF (key(1:6)==
'GRSH3N' .OR. key(1:6)==
'GRTRIA')
THEN
928 nseg0 = igrsurf(igs)%NSEG
929 CALL my_alloc(igrsurf(igs)%NODES,nseg0,4)
930 igrsurf(igs)%NODES(1:nseg0,1:4) = 0
931 CALL my_alloc(igrsurf(igs)%ELTYP,nseg0)
932 igrsurf(igs)%ELTYP(1:nseg0) = 0
933 CALL my_alloc(igrsurf(igs)%ELEM,nseg0)
934 igrsurf(igs)%ELEM(1:nseg0) = 0
936 IF (nvolu + nmonvol > 0)
THEN
937 nseg0 = igrsurf(igs)%NSEG
940 CALL my_alloc(igrsurf(igs)%REVERSED
946 CALL hm_surfgr2(ngrsh3n ,key(1:6),numel ,igrsurf(igs)%ID,
947 . igrsh3n ,buftmp ,titr ,titr1 ,
948 . indx ,nindx ,flag ,nindx_sol,nindx_sol10,
949 . indx_sol,indx_sol10 ,flag_grbric,lsubmodel)
950 CALL surftage(numel,ixtg,nixtg,2,4,7,
951 . buftmp,igrsurf(igs),nseg,flag,
952 . indx,nindx,nseg_tot)
954 igrsurf(igs)%NSEG = nseg
970 IF (it5 /= 0 .AND. flag == 1)
THEN
980 . submodel_id = sub_id)
981 igrsurf(igs)%TITLE = titr
982 IF(key(1:6)==
'ELLIPS')
THEN
984 igrsurf(igs)%TYPE = 101
985 igrsurf(igs)%IAD_BUFR = mad
988 CALL hm_get_intv (
'SKEW' ,iskew,is_available,lsubmodel)
989 CALL hm_get_intv (
'n' ,dgr1,is_available,lsubmodel)
991 igrsurf(igs)%ID_MADYMO = iskew
994 DO j=0,numskw+
min(1,nspcond)*numsph+nsubmod
995 IF(iskew==iskn(4,j+1))
THEN
1014 bufsf(mad+7+j-1)=skew(j,iskew)
1021 IF(sub_id /= 0)
CALL subrotpoint(xg,yg,zg,rtrans,sub_id,lsubmodel)
1036 IF ( s_a==0. .OR. s_b==0. .OR. s_c==0.)
THEN
1043 IF (dgr==0.AND.dgr1==0)
THEN
1045 ELSEIF (dgr1==0)
THEN
1055 ELSEIF (key(1:8)==
'MDELLIPS')
THEN
1056 igrsurf(igs)%ID = id
1057 igrsurf(igs)%TYPE = 100
1058 igrsurf(igs)%IAD_BUFR = mad
1060 CALL hm_get_intv (
'MDELLIPS' ,refmad,is_available,lsubmodel)
1062 igrsurf(igs)%ID_MADYMO = refmad
1065 igrsurf(igs)%NB_MADYMO = 0
1074 IF (it9 /= 0 .AND. flag == 1)
THEN
1079 . option_titr = titr ,
1083 . submodel_id = sub_id)
1084 igrsurf(igs)%TITLE = titr
1086 DO j=1,unitab%NUNITS
1087 IF (unitab%UNIT_ID(j) == uid)
THEN
1088 fac_l = unitab%FAC_L(j)
1093 IF (uid/=0.AND.iflagunit==0)
THEN
1094 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
1095 . i2=uid,i1=id,c1=
'SURFACE',
1100 IF(key(1:6)==
'PLANE')
THEN
1101 igrsurf(igs)%ID = id
1102 igrsurf(igs)%TYPE = 200
1103 igrsurf(igs)%IAD_BUFR = iadpl
1113 CALL hm_get_floatv (
'X_A' ,xp1,is_available,lsubmodel,unitab)
1114 CALL hm_get_floatv (
'Y_A' ,yp1,is_available,lsubmodel,unitab)
1115 CALL hm_get_floatv (
'Z_A' ,zp1,is_available,lsubmodel,unitab)
1116 IF(sub_id /= 0)
CALL subrotpoint(xp1,yp1,zp1,rtrans,sub_id,lsubmodel)
1118 CALL hm_get_floatv (
'X_B' ,xp2,is_available,lsubmodel,unitab)
1119 CALL hm_get_floatv (
'Y_B' ,yp2,is_available,lsubmodel,unitab)
1120 CALL hm_get_floatv (
'Z_B' ,zp2,is_available,lsubmodel,unitab)
1121 IF(sub_id /= 0)
CALL subrotpoint(xp2,yp2,zp2,rtrans,sub_id,lsubmodel)
1123 vectx = (xp2-xp1)*(xp2-xp1)
1124 vecty = (yp2-yp1)*(yp2-yp1)
1125 vectz = (zp2-zp1)*(zp2-zp1)
1126 vect = sqrt(vectx+vecty+vectz)
1127 IF(vect <= em10)
THEN
1149 DEALLOCATE(buftmp,indx)
1150 IF(it2/=0.OR.it6/=0)
THEN
1153 DEALLOCATE( surf_elm )
1160 . i1=igrsurf(igs)%ID)