4 use size_m
, only : ndim, nelv, nelt, nfield, nid, lxd
6 use geom, only : ifvcor, ifgeom, ifsurt, ifwcno, ifeppm, ifqinp, ifmelt
7 use input, only : param, ifadvc, iftmsh, ifneknek, ifmoab, ifkeps, ifmodel
8 use input, only : ifnonl, cbc, ifheat, ifmvbd, ifflow, ifnav, ifstrs, ifprint
9 use input, only : ifaxis, ifcyclic, ifchar, ifusermv, ifuservp, iflomach
10 use input, only : ifsplit, iftran, nobj, lochis, ifintq, hcode, nhis
11 use tstep, only : ifield, nelfld
12 use turbo, only : ifswall, ifcwuz
16 LOGICAL :: IFALGN,IFNORX,IFNORY,IFNORZ
18 integer :: nface, nmxv, nmxt, iel, ifc, iq, ih, iobj
32 ifnonl(ifield) = .false.
42 IF ( ifflow .AND. .NOT. ifnav ) ifwcno = .true.
43 IF ( ifmelt .AND. .NOT. ifflow ) ifwcno = .true.
53 cb = cbc(ifc,iel,ifield)
54 CALL
chknord(ifalgn,ifnorx,ifnory,ifnorz,ifc,iel)
55 IF ( .NOT. ifstrs ) CALL
chkcbc(cb,iel,ifc,ifalgn)
56 IF (cb ==
'O ' .OR. cb ==
'o ' .OR. &
57 cb ==
'ON ' .OR. cb ==
'on ' .OR. &
58 cb ==
'S ' .OR. cb ==
's ' .OR. &
59 cb ==
'SL ' .OR. cb ==
'sl ' .OR. &
60 cb ==
'MM ' .OR. cb ==
'mm ' .OR. &
61 cb ==
'MS ' .OR. cb ==
'ms ')
THEN
63 ifeppm(ifc,iel) = .true.
65 IF (cb ==
'VL ' .OR. cb ==
'vl ' .OR. &
66 cb ==
'WSL' .OR. cb ==
'wsl' .OR. &
67 cb ==
'SL ' .OR. cb ==
'sl ' .OR. &
68 cb ==
'SHL' .OR. cb ==
'shl' .OR. &
69 cb ==
'MM ' .OR. cb ==
'mm ' .OR. &
70 cb ==
'MS ' .OR. cb ==
'ms ' .OR. &
71 cb ==
'O ' .OR. cb ==
'o ' .OR. &
72 cb ==
'ON ' .OR. cb ==
'on ')
THEN
73 ifqinp(ifc,iel) = .true.
75 IF (cb ==
'MS ' .OR. cb ==
'ms ' .OR. &
76 cb ==
'MM ' .OR. cb ==
'mm ' .OR. &
77 cb ==
'MSI' .OR. cb ==
'msi' )
THEN
80 IF (cb ==
'WS ' .OR. cb ==
'ws ' .OR. &
81 cb ==
'WSL' .OR. cb ==
'wsl')
THEN
92 DO iel=1,nelfld(ifield)
94 cb=cbc(ifc,iel,ifield)
95 IF (cb ==
'r ' .OR. cb ==
'R ')
THEN
96 ifnonl(ifield) = .true.
109 IF ( hcode(10,ih) ==
'I' )
THEN
113 IF (iobj > nobj .OR. iobj < 0)
THEN
115 'ERROR : Undefined Object for integral',iq
124 CALL
gllog(ifvcor , .false. )
125 CALL
gllog(ifsurt , .true. )
126 CALL
gllog(ifswall, .true. )
127 CALL
gllog(ifcwuz , .true. )
128 CALL
gllog(ifwcno , .true. )
130 CALL
gllog(ifnonl(ifield), .true. )
134 WRITE (6,*)
'IFTRAN =',iftran
135 WRITE (6,*)
'IFFLOW =',ifflow
136 WRITE (6,*)
'IFHEAT =',ifheat
137 WRITE (6,*)
'IFSPLIT =',ifsplit
138 WRITE (6,*)
'IFLOMACH =',iflomach
139 WRITE (6,*)
'IFUSERVP =',ifuservp
140 WRITE (6,*)
'IFUSERMV =',ifusermv
141 WRITE (6,*)
'IFSTRS =',ifstrs
142 WRITE (6,*)
'IFCHAR =',ifchar
143 WRITE (6,*)
'IFCYCLIC =',ifcyclic
144 WRITE (6,*)
'IFAXIS =',ifaxis
145 WRITE (6,*)
'IFMVBD =',ifmvbd
146 WRITE (6,*)
'IFMELT =',ifmelt
147 WRITE (6,*)
'IFMODEL =',ifmodel
148 WRITE (6,*)
'IFKEPS =',ifkeps
149 WRITE (6,*)
'IFMOAB =',ifmoab
150 WRITE (6,*)
'IFNEKNEK =',ifneknek
151 WRITE (6,*)
'IFSYNC =',ifsync
153 WRITE (6,*)
'IFVCOR =',ifvcor
154 WRITE (6,*)
'IFINTQ =',ifintq
155 WRITE (6,*)
'IFCWUZ =',ifcwuz
156 WRITE (6,*)
'IFSWALL =',ifswall
157 WRITE (6,*)
'IFGEOM =',ifgeom
158 WRITE (6,*)
'IFSURT =',ifsurt
159 WRITE (6,*)
'IFWCNO =',ifwcno
162 WRITE (6,*)
'IFTMSH for field',ifield,
' = ',iftmsh(ifield)
163 WRITE (6,*)
'IFADVC for field',ifield,
' = ',ifadvc(ifield)
164 WRITE (6,*)
'IFNONL for field',ifield,
' = ',ifnonl(ifield)
167 if (param(99) > 0)
write(6,*)
'Dealiasing enabled, lxd=', lxd
176 SUBROUTINE chknord (IFALGN,IFNORX,IFNORY,IFNORZ,IFC,IEL)
178 use size_m
, only : ndim, nx1, ny1
179 use geom, only : unx, uny, unz
182 LOGICAL :: IFALGN,IFNORX,IFNORY,IFNORZ
185 integer :: ix, iy, ncpf
186 real(DP) :: sumx, sumy, sumz, tolnor
201 sumx = sumx + abs( abs(unx(ix,1,ifc,iel)) - 1.0 )
202 sumy = sumy + abs( abs(uny(ix,1,ifc,iel)) - 1.0 )
206 IF ( sumx < tolnor )
THEN
210 IF ( sumy < tolnor )
THEN
220 sumx = sumx + abs( abs(unx(ix,iy,ifc,iel)) - 1.0 )
221 sumy = sumy + abs( abs(uny(ix,iy,ifc,iel)) - 1.0 )
222 sumz = sumz + abs( abs(unz(ix,iy,ifc,iel)) - 1.0 )
228 IF ( sumx < tolnor )
THEN
232 IF ( sumy < tolnor )
THEN
236 IF ( sumz < tolnor )
THEN
248 use size_m
, only : ndim, nelv
249 use input, only : cbc
253 integer :: ifld, nface, iel, ifc
260 cb = cbc(ifc,iel,ifld)
261 IF (cb ==
'A ' .AND. ifc /= 1) goto 9000
267 9000
WRITE (6,*)
' Element face on the axis of symmetry must be FACE 1'
268 WRITE (6,*)
' Element',iel,
' face',ifc,
' is on the axis.'
282 IF (cb ==
'SH ' .OR. cb ==
'sh ' .OR. &
283 cb ==
'SHL' .OR. cb ==
'shl' .OR. &
284 cb ==
'S ' .OR. cb ==
's ' .OR. &
285 cb ==
'SL ' .OR. cb ==
'sl ' .OR. &
286 cb ==
'MM ' .OR. cb ==
'mm ' .OR. &
287 cb ==
'MS ' .OR. cb ==
'ms ' .OR. &
288 cb ==
'MSI' .OR. cb ==
'msi' ) goto 9001
289 IF ( .NOT. ifalgn .AND. &
290 (cb ==
'ON ' .OR. cb ==
'on ' .OR. cb ==
'SYM') ) goto 9010
293 9001
WRITE (6,*)
' Illegal traction boundary conditions detected for'
295 9010
WRITE (6,*)
' Mixed B.C. on a side nonaligned with either the X,Y, &
296 &or Z axis detected for'
297 9999
WRITE (6,*)
' Element',iel,
' side',ifc,
'.'
298 WRITE (6,*)
' Selected option only allowed for STRESS FORMULATION'
299 WRITE (6,*)
' Execution terminates'
306 use size_m
, only : nx1, ny1, nz1, nelv, ndim, nfield
307 use input, only : ifmvbd, ifflow, cbc, ifstrs, ifheat, ipscal, ifmhd
308 use input, only : ifaxis
309 use soln, only : v1mask, v2mask, v3mask, pmask, omask, tmask
310 use tstep, only : ifield, nelfld
314 character(1) :: cb1(3)
317 logical :: ifalgn,ifnorx,ifnory,ifnorz
319 integer :: nfaces, nxyz, nel, ntot, iel, iface
330 CALL stsmask(w1mask,w2mask,w3mask)
333 if (cbc(f,e,1) ==
'msi' .OR. cbc(f,e,1) ==
'msi')
then
334 call
facev(w1mask,e,f,0.0,nx1,ny1,nz1)
335 call
facev(w2mask,e,f,0.0,nx1,ny1,nz1)
336 call
facev(w3mask,e,f,0.0,nx1,ny1,nz1)
352 pmask => tmask(:,:,:,:,1)
356 cb=cbc(iface,iel,ifield)
357 IF (cb ==
'O ' .OR. cb ==
'ON ') &
358 CALL
facev(pmask,iel,iface,0.0,nx1,ny1,nz1)
364 CALL
dsop(pmask,
'MUL')
387 cb =cbc(iface,iel,ifield)
388 CALL
chknord(ifalgn,ifnorx,ifnory,ifnorz,iface,iel)
392 IF (cb ==
'v ' .OR. cb ==
'V ' .OR. cb ==
'vl ' .OR. &
393 cb ==
'VL ' .OR. cb ==
'W ')
THEN
394 CALL
facev(v1mask,iel,iface,0.0,nx1,ny1,nz1)
395 CALL
facev(v2mask,iel,iface,0.0,nx1,ny1,nz1)
396 CALL
facev(v3mask,iel,iface,0.0,nx1,ny1,nz1)
402 IF (cb ==
'SYM')
THEN
403 IF ( .NOT. ifalgn .OR. ifnorx ) &
404 CALL
facev(v1mask,iel,iface,0.0,nx1,ny1,nz1)
406 CALL
facev(v2mask,iel,iface,0.0,nx1,ny1,nz1)
408 CALL
facev(v3mask,iel,iface,0.0,nx1,ny1,nz1)
411 IF (cb ==
'ON ')
THEN
412 write(*,*)
"Oops! vmasks aren't the same"
414 IF ( ifnory .OR. ifnorz ) &
415 CALL
facev(v1mask,iel,iface,0.0,nx1,ny1,nz1)
416 IF ( .NOT. ifalgn .OR. ifnorx .OR. ifnorz ) &
417 CALL
facev(v2mask,iel,iface,0.0,nx1,ny1,nz1)
418 IF ( .NOT. ifalgn .OR. ifnorx .OR. ifnory ) &
419 CALL
facev(v3mask,iel,iface,0.0,nx1,ny1,nz1)
424 write(*,*)
"Oops! vmasks aren't the same"
426 CALL
facev(v2mask,iel,iface,0.0,nx1,ny1,nz1)
427 CALL
facev( omask,iel,iface,0.0,nx1,ny1,nz1)
433 if (ifaxis) CALL
dsop( omask,
'MUL')
434 call
opdsop(v1mask,v2mask,v3mask,
'MUL')
452 tmask(:,:,:,:,ipscal) = 1._dp
456 cb =cbc(iface,iel,ifield)
460 IF (cb ==
'T ' .OR. cb ==
't ' .OR. &
461 (cb ==
'A ' .AND. ifaziv) .OR. &
462 cb ==
'MCI' .OR. cb ==
'MLI' .OR. &
463 cb ==
'KD ' .OR. cb ==
'kd ' .OR. &
464 cb ==
'ED ' .OR. cb ==
'ed ' .OR. &
465 cb ==
'KW ' .OR. cb ==
'KWS' .OR. cb ==
'EWS') &
466 CALL
facev(tmask(1,1,1,1,ipscal), &
467 iel,iface,0.0,nx1,ny1,nz1)
470 CALL
dsop(tmask(1,1,1,1,ipscal),
'MUL')
479 write(*,*)
"Oops: ifmhd"
487 call rone(bpmask,ntot)
490 cb=cbc(iface,iel,ifield)
491 if (cb ==
'O ' .OR. cb ==
'ON ') &
492 call
facev(bpmask,iel,iface,0.0,nx1,ny1,nz1)
498 call
dsop(bpmask,
'MUL')
506 call rone(b1mask,ntot)
507 call rone(b2mask,ntot)
508 call rone(b3mask,ntot)
512 cb =cbc(iface,iel,ifield)
513 call
chknord(ifalgn,ifnorx,ifnory,ifnorz,iface,iel)
515 if (cb ==
'v ' .OR. cb ==
'V ' .OR. cb ==
'vl ' .OR. &
516 cb ==
'VL ' .OR. cb ==
'W ')
then
520 call
facev(b1mask,iel,iface,0.0,nx1,ny1,nz1)
521 call
facev(b2mask,iel,iface,0.0,nx1,ny1,nz1)
522 call
facev(b3mask,iel,iface,0.0,nx1,ny1,nz1)
524 elseif (cb ==
'SYM')
then
528 if ( .NOT. ifalgn .OR. ifnorx ) &
529 call
facev(b1mask,iel,iface,0.0,nx1,ny1,nz1)
531 call
facev(b2mask,iel,iface,0.0,nx1,ny1,nz1)
533 call
facev(b3mask,iel,iface,0.0,nx1,ny1,nz1)
535 elseif (cb ==
'ON ')
then
539 if ( ifnory .OR. ifnorz ) &
540 call
facev(b1mask,iel,iface,0.0,nx1,ny1,nz1)
541 if ( .NOT. ifalgn .OR. ifnorx .OR. ifnorz ) &
542 call
facev(b2mask,iel,iface,0.0,nx1,ny1,nz1)
543 if ( .NOT. ifalgn .OR. ifnorx .OR. ifnory ) &
544 call
facev(b3mask,iel,iface,0.0,nx1,ny1,nz1)
546 elseif (cb ==
'A ')
then
550 call
facev(b2mask,iel,iface,0.0,nx1,ny1,nz1)
554 if ( cb1(1) ==
'd' ) &
555 call
facev(b1mask,iel,iface,0.0,nx1,ny1,nz1)
556 if ( cb1(2) ==
'd' ) &
557 call
facev(b2mask,iel,iface,0.0,nx1,ny1,nz1)
558 if ( cb1(3) ==
'd' .AND. if3d ) &
559 call
facev(b3mask,iel,iface,0.0,nx1,ny1,nz1)
565 call
dsop(b1mask,
'MUL')
566 call
dsop(b2mask,
'MUL')
567 if (ndim == 3) call
dsop(b3mask,
'MUL')
588 SUBROUTINE bcdirvc(V1,V2,V3,mask1,mask2,mask3)
590 use size_m
, only : nx1, ny1, nz1, ndim, lelv
592 use input, only : if3d, cbc, bc, ifstrs
593 use tstep, only : ifield, nelfld
596 REAL(DP) :: V1(nx1,ny1,nz1,lelv),V2(nx1,ny1,nz1,lelv) &
597 ,V3(nx1,ny1,nz1,lelv)
598 real(DP) :: mask1(nx1,ny1,nz1,lelv),mask2(nx1,ny1,nz1,lelv) &
599 ,mask3(nx1,ny1,nz1,lelv)
602 character(1) :: cb1(3)
607 integer :: nfaces, nxyz, nel, ntot, isweep, ie, iface
608 real(DP) :: bc1, bc2, bc3
613 if (icalld == 0)
then
629 allocate(tmp1(nx1,ny1,nz1,nelfld(ifield)) &
630 , tmp2(nx1,ny1,nz1,nelfld(ifield)) &
631 , tmp3(nx1,ny1,nz1,nelfld(ifield)) )
633 tmp1 = 0._dp; tmp2 = 0._dp
634 IF (if3d) tmp3 = 0._dp
643 cb = cbc(iface,ie,ifield)
644 bc1 = bc(1,iface,ie,ifield)
645 bc2 = bc(2,iface,ie,ifield)
646 bc3 = bc(3,iface,ie,ifield)
648 IF (cb ==
'V ' .OR. cb ==
'VL ' .OR. &
649 cb ==
'WS ' .OR. cb ==
'WSL')
THEN
650 write(*,*)
"Oops: CB = v, vl, ws, wsl"
652 CALL
facev(tmp1,ie,iface,bc1,nx1,ny1,nz1)
653 CALL
facev(tmp2,ie,iface,bc2,nx1,ny1,nz1)
654 IF (if3d) CALL
facev(tmp3,ie,iface,bc3,nx1,ny1,nz1)
655 IF ( ifqinp(iface,ie) ) &
656 CALL globrot(tmp1(1,1,1,ie),tmp2(1,1,1,ie), &
657 tmp3(1,1,1,ie),ie,iface)
661 IF (cb ==
'v ' .OR. cb ==
'vl ' .OR. &
662 cb ==
'ws ' .OR. cb ==
'wsl' .OR. &
663 cb ==
'mv ' .OR. cb ==
'mvn' .OR. &
664 cb1(1) ==
'd' .OR. cb1(2) ==
'd' .OR. cb1(3) ==
'd')
then
665 write(*,*)
"Oops: CB = something bad"
667 call faceiv(cb,tmp1(1,1,1,ie),tmp2(1,1,1,ie), &
668 tmp3(1,1,1,ie),ie,iface,nx1,ny1,nz1)
670 IF ( ifqinp(iface,ie) ) &
671 CALL globrot(tmp1(1,1,1,ie),tmp2(1,1,1,ie), &
672 tmp3(1,1,1,ie),ie,iface)
676 IF (cb ==
'ON ' .OR. cb ==
'on ')
then
677 write(*,*)
"Oops: CB = ON"
680 CALL faceiv(
'v ',tmp1(1,1,1,ie),tmp2(1,1,1,ie), &
681 tmp3(1,1,1,ie),ie,iface,nx1,ny1,nz1)
689 IF (cbc(iface,ie,ifield) ==
'W ')
THEN
690 CALL
facev(tmp1,ie,iface,0.0,nx1,ny1,nz1)
691 CALL
facev(tmp2,ie,iface,0.0,nx1,ny1,nz1)
692 IF (if3d) CALL
facev(tmp3,ie,iface,0.0,nx1,ny1,nz1)
699 if (isweep == 1)
then
700 call
opdsop(tmp1,tmp2,tmp3,
'MXA')
702 call
opdsop(tmp1,tmp2,tmp3,
'MNA')
708 IF ( .NOT. ifstrs )
THEN
711 IF (if3d) v3 = v3 * mask3
713 write(*,*)
"Oops: ifonbc"
715 call antimsk1(tmp1,mask1,ntot)
716 call antimsk1(tmp2,mask2,ntot)
717 if (if3d) call antimsk1(tmp3,mask3,ntot)
721 write(*,*)
"Oops: ifstrs"
724 CALL
copy(tmq1,tmp1,ntot)
725 CALL
copy(tmq2,tmp2,ntot)
726 IF (ndim == 3) CALL
copy(tmq3,tmp3,ntot)
727 CALL amask(tmp1,tmp2,tmp3,tmq1,tmq2,tmq3,nelv)
729 CALL rmask(v1,v2,v3,nelv)
734 v1 = v1 + tmp1; v2 = v2 + tmp2
735 IF (if3d) v3 = v3 + tmp3
750 use size_m
, only : lx1, ly1, lz1, lelt
751 use size_m
, only : nx1, ny1, nz1, ndim, nfield
753 use input, only : cbc, bc
754 use soln, only : tmask
755 use tstep, only : ifield, nelfld
758 real(DP) :: S(lx1,ly1,lz1,lelt)
759 real(DP),
allocatable :: tmp(:,:,:,:)
763 integer :: ifld, nfaces, nxyz, nel, ntot, isweep, ie, iface, nfldt
764 real(DP) :: BC1, BC2, BC3, BC4, BCK, BCE
767 if (icalld == 0)
then
783 allocate(tmp(nx1,ny1,nz1,nelfld(ifield)))
791 IF (ifmodel .AND. ifkeps .AND. ifield >= nfldt) &
792 CALL turbwbc(tmp,tma,smu)
797 cb=cbc(iface,ie,ifield)
798 bc1=bc(1,iface,ie,ifield)
799 bc2=bc(2,iface,ie,ifield)
800 bc3=bc(3,iface,ie,ifield)
801 bc4=bc(4,iface,ie,ifield)
802 bck=bc(4,iface,ie,ifld)
803 bce=bc(5,iface,ie,ifld)
804 IF (cb ==
'T ') CALL
facev(tmp,ie,iface,bc1,nx1,ny1,nz1)
805 IF (cb ==
'MCI') CALL
facev(tmp,ie,iface,bc4,nx1,ny1,nz1)
806 IF (cb ==
'MLI') CALL
facev(tmp,ie,iface,bc4,nx1,ny1,nz1)
807 IF (cb ==
'KD ') CALL
facev(tmp,ie,iface,bck,nx1,ny1,nz1)
808 IF (cb ==
'ED ') CALL
facev(tmp,ie,iface,bce,nx1,ny1,nz1)
809 IF (cb ==
't ' .OR. cb ==
'kd ' .OR. cb ==
'ed ')
then
810 write(*,*)
"Oops: CB = t, kd, or ed"
818 IF (isweep == 1) CALL
dsop(tmp,
'MXA')
819 IF (isweep == 2) CALL
dsop(tmp,
'MNA')
824 s = s * tmask(:,:,:,:,ifield-1) + tmp
842 use size_m
, only : lx1, ly1, lz1, lelt, nx1, ny1, nz1, ndim
844 use nekuse, only : hc, tinf, hrad, flux
845 use geom, only : area
846 use input, only : cbc, bc
850 use tstep, only : ifield, nelfld
853 real(DP),
intent(out) :: S(lx1,ly1,lz1,lelt)
859 integer :: nfaces, nxyz, nel, ntot
860 integer :: ie, iface, ieg, ia, ix, iy, iz
861 integer :: kx1, kx2, ky1, ky2, kz1, kz2
864 if (icalld == 0)
then
879 IF (itype == -1)
THEN
886 cb =cbc(iface,ie,ifield)
887 IF (cb ==
'C ' .OR. cb ==
'c ' .OR. &
888 cb ==
'R ' .OR. cb ==
'r ')
THEN
890 IF (cb ==
'C ') hc = bc(2,iface,ie,ifield)
892 tinf = bc(1,iface,ie,ifield)
893 hrad = bc(2,iface,ie,ifield)
899 CALL
facind(kx1,kx2,ky1,ky2,kz1,kz2,nx1,ny1,nz1,iface)
904 ts = t(ix,iy,iz,ie,ifield-1)
905 IF (cb ==
'c ' .OR. cb ==
'r ')
THEN
907 CALL userbc(ix,iy,iz,iface,ieg)
909 IF (cb ==
'r ' .OR. cb ==
'R ') &
910 hc = hrad * (tinf**2 + ts**2) * (tinf + ts)
911 s(ix,iy,iz,ie) = s(ix,iy,iz,ie) + &
912 hc*area(ia,1,iface,ie)/bm1(ix,iy,iz,ie)
927 cb =cbc(iface,ie,ifield)
928 IF (cb ==
'F ' .OR. cb ==
'f ' .OR. &
929 cb ==
'C ' .OR. cb ==
'c ' .OR. &
930 cb ==
'R ' .OR. cb ==
'r ' )
THEN
932 IF (cb ==
'F ') flux=bc(1,iface,ie,ifield)
933 IF (cb ==
'C ') flux=bc(1,iface,ie,ifield) &
934 *bc(2,iface,ie,ifield)
936 tinf=bc(1,iface,ie,ifield)
937 hrad=bc(2,iface,ie,ifield)
944 CALL
facind(kx1,kx2,ky1,ky2,kz1,kz2,nx1,ny1,nz1,iface)
949 ts = t(ix,iy,iz,ie,ifield-1)
952 CALL userbc(ix,iy,iz,iface,ieg)
956 CALL userbc(ix,iy,iz,iface,ieg)
961 CALL userbc(ix,iy,iz,iface,ieg)
963 IF (cb ==
'R ' .OR. cb ==
'r ') &
964 flux = hrad*(tinf**2 + ts**2)*(tinf + ts) * tinf
968 s(ix,iy,iz,ie) = s(ix,iy,iz,ie) &
969 + flux*area(ia,1,iface,ie)
1023 integer,
intent(in) :: ix, iy, iz, iel
1029 x = xm1(ix,iy,iz,iel)
1030 y = ym1(ix,iy,iz,iel)
1031 z = zm1(ix,iy,iz,iel)
1033 IF (r > 0.0) r=sqrt(r)
1034 IF (x /= 0.0 .OR.
y /= 0.0) theta = atan2(
y,x)
1036 ux = vx(ix,iy,iz,iel)
1037 uy = vy(ix,iy,iz,iel)
1038 uz = vz(ix,iy,iz,iel)
1039 temp = t(ix,iy,iz,iel,1)
1041 ps(ips) = t(ix,iy,iz,iel,ips+1)
1043 udiff = vdiff(ix,iy,iz,iel,ifield)
1044 utrans= vtrans(ix,iy,iz,iel,ifield)
1062 use kinds, only : dp
1064 integer,
intent(in) :: n
1065 real(DP),
intent(inout) :: X(n),Y(n),Z(n)
1069 xlngth = sqrt( x(i)**2 + y(i)**2 + z(i)**2 )
1070 IF (xlngth /= 0.0)
THEN
subroutine chknord(IFALGN, IFNORX, IFNORY, IFNORZ, IFC, IEL)
Check direction of normal of an element face for alignment with the X, Y, or Z axis.
subroutine bcneusc(S, ITYPE)
Apply Neumann boundary conditions to surface of scalar, S. Use IFIELD as a guide to which boundary co...
subroutine opdsop(a, b, c, op)
subroutine bcdirvc(V1, V2, V3, mask1, mask2, mask3)
Apply Dirichlet boundary conditions to surface of vector (V1,V2,V3). Use IFIELD as a guide to which b...
subroutine setlog()
Subroutine to initialize logical flags.
real(dp) function dnekclock()
integer function lglel(iel)
subroutine bcdirsc(S)
Apply Dirichlet boundary conditions to surface of scalar, S. Use IFIELD as a guide to which boundary ...
subroutine chkcbc(CB, IEL, IFC, IFALGN)
Check for illegal boundary conditions.
subroutine dsop(u, op)
generalization of dssum to other reducers.
subroutine lfalse(IFA, N)
subroutine nekasgn(IX, IY, IZ, IEL)
Assign NEKTON variables for definition (by user) of boundary conditions at collocation point (IX...
subroutine bcmask
Zero out masks corresponding to Dirichlet boundary points.
subroutine unitvec(X, Y, Z, N)
static double y[NR *NS *NT *N]
subroutine facev(a, ie, iface, val, nx, ny, nz)
Assign the value VAL to face(IFACE,IE) of array A. IFACE is the input in the pre-processor ordering s...
subroutine gllog(la, lb)
If ANY LA=LB, then ALL LA=LB.
subroutine facind(kx1, kx2, ky1, ky2, kz1, kz2, nx, ny, nz, iface)
ifcase in preprocessor notation
static double z[NR *NS *NT *N]