30 SUBROUTINE bc_imp0(ICODT ,ICODR,ISKEW,IFIX,NDOF,IADN )
34#include "implicit_f.inc"
43 INTEGER ICODT(*),ICODR(*),ISKEW(*),(*),
69 IF (ict > 0 .AND. k> 0)
THEN
70 IF (ict == 4 .AND. k>2)
THEN
72 ELSEIF (ict == 2)
THEN
74 ELSEIF (ict == 1)
THEN
76 ELSEIF (ict == 3)
THEN
79 ELSEIF (ict == 5)
THEN
80 IF (k>2) ifix(nd +1) = 1
82 ELSEIF (ict == 6)
THEN
83 IF (k>2) ifix(nd +1) = 1
85 ELSEIF (ict == 7)
THEN
86 IF (k>2) ifix(nd +1) = 1
101 IF (ict > 0 .AND. k> 0)
THEN
102 IF (ict == 4 .AND. k>2)
THEN
104 ELSEIF (ict == 2)
THEN
106 ELSEIF (ict == 1)
THEN
108 ELSEIF (ict == 3)
THEN
111 ELSEIF (ict == 5)
THEN
112 IF (k>2) ifix(nd +1) = 1
114 ELSEIF (ict == 6)
THEN
115 IF (k>2) ifix(nd +1) = 1
117 ELSEIF (ict == 7)
THEN
118 IF (k>2) ifix(nd +1) = 1
123 IF (icr > 0 .AND. k==6)
THEN
126 ELSEIF (icr == 2)
THEN
128 ELSEIF (icr == 3)
THEN
131 ELSEIF (icr == 4)
THEN
133 ELSEIF (icr == 5)
THEN
136 ELSEIF (icr == 6)
THEN
139 ELSEIF (icr == 7)
THEN
153!||--- called by ------------------------------------------------------
159 SUBROUTINE bc_imp1(ICODT ,ICODR ,ISKEW ,SKEW ,IFIX ,
160 1 NDOF ,IADN ,IADK ,JDIK ,DIAG_K,
165#include "implicit_f.inc"
169#include "com04_c.inc"
170#include "com01_c.inc"
171#include "param_c.inc"
175 INTEGER ICODT(*),ICODR(*),ISKEW(*),IFIX(*),
176 . NDOF(*),IADN(*),IADK(*) ,JDIK(*)
178 . skew(lskew,*),diag_k(*),lt_k(*)
182 INTEGER I, ISK, ICT,ICR,J,,ND,IR,IT,IFIX_CP(6)
196 ifix_cp(j)=ifix(nd+j)
199 IF (ict > 0 .AND. k> 0)
THEN
200 CALL bcl_impk(ict ,isk ,skew ,ifix ,iadn ,
201 1 iadk ,jdik ,diag_k,lt_k ,
206 ifix(nd+j)=ifix_cp(j)
221 ifix_cp(j)=ifix(nd+j)
224 IF (ict > 0 .AND. k> 0)
THEN
225 CALL bcl_impk(ict ,isk ,skew ,ifix ,iadn ,
226 1 iadk ,jdik ,diag_k,lt_k ,
231 ifix(nd+j)=ifix_cp(j)
236 ifix_cp(j)=ifix(nd+j)
239 IF (icr > 0 .AND. k==6)
THEN
241 CALL bcl_impk(icr ,isk ,skew ,ifix ,iadn ,
242 1 iadk ,jdik ,diag_k,lt_k ,
247 ifix(nd+j) = ifix_cp(j)
266 1 IADK ,JDIK ,DIAG_K,LT_K ,
271#include "implicit_f.inc"
275#include "param_c.inc"
279 INTEGER ICT,IFIX(*),IADN(*),IADK(*) ,JDIK(*),
282 . SKEW(LSKEW,*),DIAG_K(*),LT_K(*)
296 CALL bc_updk(i ,iadn ,ej ,j ,ir ,
297 1 iadk ,jdik ,diag_k,lt_k )
299 ELSEIF (ict == 2)
THEN
304 CALL bc_updk(i ,iadn ,ej ,j ,ir ,
305 1 iadk ,jdik ,diag_k,lt_k )
307 ELSEIF (ict == 1)
THEN
312 CALL bc_updk(i ,iadn ,ej ,j ,ir ,
315 ELSEIF (ict == 3)
THEN
317 CALL bc_updk2d(iadn ,ifix(nd+1),skew(7,isk),skew(4,isk),
318 1 i ,ir ,kc ,iadk ,jdik ,diag_k,
320 ELSEIF (ict == 5)
THEN
321 CALL bc_updk2d(iadn ,ifix(nd+1),skew(7,isk),skew(1,isk),
322 1 i ,ir ,kc ,iadk ,jdik ,diag_k,
324 ELSEIF (ict == 6)
THEN
327 1 i ,ir ,kc ,iadk ,jdik ,diag_k,
329 ELSEIF (ict == 7)
THEN
349#include "implicit_f.inc"
366 IF (ej1>=
max(ej2,ej3))
THEN
368 ELSEIF (ej2>=
max(ej1,ej3))
THEN
377!||
l_dir ../engine/source/constraints/general/bcs
387!||
fv_rwlr0 ../engine/source/constraints/general/rwall/srw_imp.f
408#include "implicit_f.inc"
447#include "implicit_f.inc"
463 IF (abs(ej(j0))>em6)
THEN
490 1 IADK ,JDIK ,DIAG_K,LT_K )
494#include "implicit_f.inc"
498#include "impl1_c.inc"
502 INTEGER N,JJ,IDDL(*),IR,IADK(*) ,JDIK(*)
504 . EJ(*),DIAG_K(*),LT_K(*)
508 INTEGER ,J,ND,K,L,J1,K1,L1,ID,SHF,JFT,KFT,LFT,NL,NJ,
522 IF (ej(k)==zero.AND.ej(l)==zero)
RETURN
543 kii(k1,k1)=-(two*kdd(k1,j1)-kdd(j1,j1)*ej(k))*ej(k)
544 kii(l1,l1)=-(two*kdd(l1,j1)-kdd(j1,j1)*ej(l))*ej(l)
545 kii(l1,k1)=-kdd(l1,j1)*ej(k)-kdd(k1,j1)*ej(l)
546 1 +kdd(j1,j1)*ej(l)*ej(k)
547 kii(k1,l1)=kii(l1,k1)
550 kii(j,k1)=-kdd(j,j1)*ej(k)
551 kii(k,k1)=-kdd(k,j1)*ej(k)
552 kii(l,k1)=-kdd(l,j1)*ej(k)
553 kii(j,l1)=-kdd(j,j1)*ej(l)
554 kii(k,l1)=-kdd(k,j1)*ej(l)
555 kii(l,l1)=-kdd(l,j1)*ej(l)
557 CALL put_kii(n ,iddl ,iadk,diag_k,lt_k ,kii,nd)
561 nl = iadk(id+1)-iadk(id)-shf
563 kft = iadk(iddl(n)+ k1)+iabs(k-3)-1
564 lft = iadk(iddl(n)+ l1)+iabs(l-3)-1
566 lt_k(kft+j) = lt_k(kft+j)-ej(k)*lt_k(jft+j)
567 lt_k(lft+j) = lt_k(lft+j)-ej(l)*lt_k(jft+j)
571 DO j = iadk(i), iadk(i+1)-1
572 IF (jdik(j)==id) nj = j
575 lt_k(nj+k1-j1) = lt_k(nj+k1-j1)-ej(k)*lt_k(nj)
576 lt_k(nj+l1-j1) = lt_k(nj+l1-j1)-ej(l)*lt_k(nj)
581 nl = iadk(id+1)-iadk(id)-shf
583 kft = iadk(iddl(n)+k1)-1
584 lft = iadk(iddl(n)+l1)-1
586 lt_k(kft+j) = lt_k(kft+j)-ej(k)*lt_k(jft+j)
587 lt_k(lft+j) = lt_k(lft+j)-ej(l)*lt_k
590 DO i = iddl(n)+nd+1, nddl_l
592 DO j = iadk(i), iadk(i+1)-1
593 IF (jdik(j)==id) nj = j
596 lt_k(nj+k1-j1) = lt_k(nj+k1-j1)-ej(k)*lt_k(nj)
597 lt_k(nj+l1-j1) = lt_k(nj+l1-j1)-ej(l)*lt_k(nj)
606!||--- called by ------------------------------------------------------
616 SUBROUTINE bc_imp2(ICODT ,ICODR ,ISKEW ,SKEW ,NDOF ,
625#include "implicit_f.inc"
629#include "com04_c.inc"
630#include "com01_c.inc"
631#include "param_c.inc"
635 INTEGER (*),ICODR(*),ISKEW(*),NDOF(*)
637 . SKEW(LSKEW,*),D(3,*),DR(3,*)
641 INTEGER I, ISK, ICT,ICR,J,K,IAD,IR,N,NN
651 IF (ict /= 0 .AND. k> 0)
THEN
652 CALL bcl_impd(ict ,isk ,skew ,i ,d )
663 IF (ict /= 0 .AND. k> 0)
THEN
664 CALL bcl_impd(ict ,isk ,skew ,i ,d )
666 IF (icr /= 0 .AND. k==6)
THEN
667 CALL bcl_impd(icr ,isk ,skew ,i ,dr )
675 IF (ndof(i)==0) cycle
685 ej(2)=skew_spc(iad+1)
686 ej(3)=skew_spc(iad+2)
694 CALL bc_upd2d(i ,skew_spc(iad),skew_spc(iad+3),d )
701 CALL bc_upd2d(i ,skew_spc(iad),skew_spc(iad+3),dr )
724#include "implicit_f.inc"
728#include "param_c.inc"
734 . SKEW(LSKEW,*),D(3,*)
740 . ej(3),ej1(3),max_e,ea,eb
749 ELSEIF (ict == 2)
THEN
756 ELSEIF (ict == 1)
THEN
763 ELSEIF (iabs(ict) == 3)
THEN
771 CALL bc_c2d(ej,ej1, j, j1 ,ea, eb )
775 d(j,i) =d(j,i)- ea*d(k,i)
776 d(j1,i) =d(j1,i)- eb*d(k,i)
793 ELSEIF (iabs(ict) == 5)
THEN
802 CALL bc_c2d(ej,ej1, j, j1 ,ea, eb )
805 d(j,i) =d(j,i)- ea*d(k,i)
806 d(j1,i) =d(j1,i)- eb*d(k,i)
811 ELSEIF (iabs(ict) == 6)
THEN
819 CALL bc_c2d(ej,ej1, j, j1 ,ea, eb )
822 d(j,i) =d(j,i)- ea*d(k,i)
823 d(j1,i) =d(j1,i)- eb*d(k,i)
846#include "implicit_f.inc"
862 d(j,n) = d(j,n)- ej(k)* d(k,n)-ej(l)* d(l,n)
875#include "implicit_f.inc"
881 . EJ(*),EJ1(*),D(3,*)
896 d(j1,n) = ( d(j1,n)-ej1(j)*d(j,n)+
897 . (ej1(j)*ej(k)-ej1(k))*d(k,n) )/s
898 d(j,n) = d(j,n)- ej(k)* d(k,n)-ej(j1)* d(j1,n)
902!||====================================================================
917#include "implicit_f.inc"
921#include
"param_c.inc"
927 . SKEW(LSKEW,*),DIAG_K(*),KDD(3,3)
941 ELSEIF (ict == 2)
THEN
947 ELSEIF (ict == 1)
THEN
953 ELSEIF (ict == 3)
THEN
954 CALL fv_updkd2(skew(7,isk),skew(4,isk),kdd ,diag_k)
955 ELSEIF (ict == 5)
THEN
956 CALL fv_updkd2(skew(7,isk),skew(1,isk),kdd ,diag_k)
957 ELSEIF (ict == 6)
THEN
958 CALL fv_updkd2(skew(4,isk),skew(1,isk),kdd ,diag_k)
977#include "implicit_f.inc"
981#include "param_c.inc"
985 INTEGER NBC ,IBC(3,*)
987 . A(3,*),SKEW(LSKEW,*)
991 INTEGER I,J,N,K,L,J1,K1,L1,K2,K3,II,ISK,ICT
1004 CALL bc_fi(n ,ej ,j ,a )
1005 ELSEIF (ict == 2)
THEN
1010 CALL bc_fi(n ,ej ,j ,a )
1011 ELSEIF (ict == 1)
THEN
1016 CALL bc_fi(n ,ej ,j ,a )
1017 ELSEIF (ict == 3)
THEN
1018 CALL bc_fi2(n ,skew(7,isk),skew(4,isk),a )
1019 ELSEIF (ict == 5)
THEN
1020 CALL bc_fi2(n ,skew(7,isk),skew(1,isk),a )
1021 ELSEIF (ict == 6)
THEN
1022 CALL bc_fi2(n ,skew(4,isk),skew(1,isk),a )
1039#include "implicit_f.inc"
1055 a(k,n)=a(k,n)-ej(k)*a(j1,n)
1056 a(l,n)=a(l,n)-ej(l)*a(j1,n)
1062!||--- called by ------------------------------------------------------
1072#include "implicit_f.inc"
1082 INTEGER I,J,ND,K,L,J1,K1,L1
1093 IF (ej(k)==zero.AND.ej(l)==zero)
RETURN
1103 lb(
id+k1)=lb(
id+k1)-ej(k)*lb(
id+j1)
1104 lb(
id+l1)=lb(
id+l1)-ej(l)*lb(
id+j1)
1118!||--- uses -----------------------------------------------------
1132#include "implicit_f.inc"
1136#include
"com04_c.inc"
1137#include "com01_c.inc"
1138#include "param_c.inc"
1142 INTEGER ICODT(*),ICODR(*),ISKEW(*),NDOF(*),IADN(*)
1144 . SKEW(LSKEW,*),LB(*)
1148 INTEGER I, ISK, ICT,ICR,J,K,ND,IR,IT,IAD,NN,
1160 ict = iabs(
ict_1(i))
1163 IF (ict > 0 .AND. k> 0)
THEN
1164 CALL bcl_impb(ict ,isk ,skew ,nd ,lb ,
1175 ict = iabs(
ict_1(i))
1176 icr = iabs(
icr_1(i))
1179 IF (ict > 0 .AND. k> 0)
THEN
1180 CALL bcl_impb(ict ,isk ,skew ,nd ,lb ,
1183 IF (icr > 0 .AND. k==6)
THEN
1184 CALL bcl_impb(icr ,isk ,skew ,nd ,lb ,
1200 IF (ict > 0 .AND. k> 0)
THEN
1201 CALL bcl_impb(ict ,isk ,skew ,nd ,lb ,
1216 IF (ict > 0 .AND. k> 0)
THEN
1217 CALL bcl_impb(ict ,isk ,skew ,nd ,lb ,
1220 IF (icr > 0 .AND. k==6)
THEN
1222 CALL bcl_impb(icr ,isk ,skew ,nd ,lb ,
1233 IF (ndof(i)==0) cycle
1244 ej(2)=skew_spc(iad+1)
1245 ej(3)=skew_spc(iad+2)
1247 CALL bc_updb(nd ,ej ,j ,ir ,lb )
1249 CALL bc_updf2d(nd ,skew_spc(iad),skew_spc(iad+3),ir,lb )
1269#include "implicit_f.inc"
1273#include "param_c.inc"
1277 INTEGER ICT,ND,ISK,IR
1279 . SKEW(LSKEW,*),LB(*)
1292 CALL bc_updb(nd ,ej ,j ,ir ,lb )
1293 ELSEIF (ict == 2)
THEN
1298 CALL bc_updb(nd ,ej ,j ,ir ,lb )
1299 ELSEIF (ict == 1)
THEN
1304 CALL bc_updb(nd ,ej ,j ,ir ,lb )
1305 ELSEIF (ict == 3)
THEN
1307 CALL bc_updf2d(nd ,skew(7,isk),skew(4,isk),ir ,lb )
1308 ELSEIF (ict == 5)
THEN
1310 CALL bc_updf2d(nd ,skew(7,isk),skew(1,isk),ir ,lb )
1311 ELSEIF (ict == 6)
THEN
1313 CALL bc_updf2d(nd ,skew(4,isk),skew(1,isk),ir ,lb )
1318!||====================================================================
1329 1 IKC ,IADK ,JDIK ,DIAG_K,LT_K ,
1330 2 LB ,A ,KSS ,KSM ,IDLM ,
1335#include "implicit_f.inc"
1339 INTEGER N,JJ,IDDL(*),IDDLM(*),IKC(*),(*),JDIK(*),
1342 . EJ(*),DIAG_K(*),LT_K(*),LB(*),A(3,*),
1347 INTEGER I,J,ND,K,L,J1,K1,,ID,IDM
1356 IF (ej(k)==zero.AND.ej(l)==zero)
RETURN
1376 kii(k1,k1)=kdd(k1,k1)-(two*kdd(k1,j1)-kdd(j1,j1)*ej(k))*ej(k)
1377 kii(l1,l1)=kdd(l1,l1)-(two*kdd(l1,j1)-kdd(j1,j1)*ej(l))*ej(l)
1378 kii(l1,k1)=kdd(l1,k1)-kdd(l1,j1)*ej(k)-kdd(k1,j1)*ej(l)
1379 1 +kdd(j1,j1)*ej(l)*ej(k)
1380 kii(k1,l1)=kii(l1,k1)
1381 CALL put_kmii(idlm ,iadk,diag_k,lt_k ,kii,nd)
1390 ksm(k1,j1)=ksm(k1,j1)-ej(k)*ksm(j1,j1)
1391 ksm(k1,k1)=ksm(k1,k1)-ej(k)*ksm(j1,k1)
1392 ksm(k1,l1)=ksm(k1,l1)-ej(k)*ksm(j1,l1)
1393 ksm(l1,j1)=ksm(l1,j1)-ej(l)*ksm(j1,j1)
1394 ksm(l1,k1)=ksm(l1,k1)-ej(l)*ksm(j1,k1)
1395 ksm(l1,l1)=ksm(l1,l1)-ej(l)*ksm(j1,l1)
1411 1 SKEW ,IKC ,IADK ,JDIK ,DIAG_K,
1412 2 LT_K ,LB ,A ,KSS ,KSM ,
1413 3 IDLM ,IFSS ,IFSM )
1417#include "implicit_f.inc"
1421#include "param_c.inc"
1425 INTEGER ICT,IKC(*),IDDL(*),IDDLM(*),IADK(*) ,JDIK(*),
1426 . N,ISK,IDLM ,IFSS ,IFSM
1428 . SKEW(LSKEW,*),DIAG_K(*),LT_K(*),LB(*),A(3,*),KSS(*),KSM(*)
1441 CALL bc_updfr(n ,iddl ,ej ,j ,iddlm ,
1442 1 ikc ,iadk ,jdik ,diag_k,lt_k ,
1443 2 lb ,a ,kss ,ksm ,idlm ,
1445 ELSEIF (ict == 2)
THEN
1450 CALL bc_updfr(n ,iddl ,ej ,j ,iddlm ,
1451 1 ikc ,iadk ,jdik ,diag_k,lt_k ,
1452 2 lb ,a ,kss ,ksm ,idlm ,
1454 ELSEIF (ict == 1)
THEN
1459 CALL bc_updfr(n ,iddl ,ej ,j ,iddlm ,
1460 1 ikc ,iadk ,jdik ,diag_k,lt_k ,
1461 2 lb ,a ,kss ,ksm ,idlm ,
1464 ELSEIF (ict == 3)
THEN
1465 CALL bc_updfr2(n ,iddl ,skew(7,isk),skew(4,isk),iddlm ,
1466 1 ikc ,iadk ,jdik ,diag_k,lt_k ,
1467 2 lb ,a ,kss ,ksm ,idlm ,
1469 ELSEIF (ict == 5)
THEN
1470 CALL bc_updfr2(n ,iddl ,skew(7,isk),skew(1,isk),iddlm ,
1471 1 ikc ,iadk ,jdik ,diag_k,lt_k ,
1472 2 lb ,a ,kss ,ksm ,idlm ,
1474 ELSEIF (ict == 6)
THEN
1475 CALL bc_updfr2(n ,iddl ,skew(4,isk),skew(1,isk),iddlm ,
1476 1 ikc ,iadk ,jdik ,diag_k,lt_k ,
1495 SUBROUTINE bc_impa(IADK ,JDIK ,DIAG_K,LT_K ,NDOF ,
1504#include "implicit_f.inc"
1508 INTEGER IADK(*),JDIK(*),NDOF(*),IDDL(*),IKC(*)
1514 INTEGER I,J,K,N,IER1,IR,IAD,NN,ND,KC
1522 IF (ndof(i)==0) cycle
1533 ej(2)=skew_spc(iad+1)
1534 ej(3)=skew_spc(iad+2)
1536 CALL bc_updk(i ,iddl ,ej ,j ,ir ,
1537 1 iadk ,jdik ,diag_k ,lt_k )
1540 CALL bc_updk2d(iddl ,ikc(nd+1),skew_spc(iad),skew_spc(iad+3),
1541 1 i ,ir ,kc ,iadk ,jdik ,diag_k,
1556 SUBROUTINE clceig(AMTX,EIGVAL,EIGVEC,SMALL,NMTX,IERR)
1584#include "implicit_f.inc"
1592 * AMTX(NMTX,NMTX), EIGVAL(NMTX), EIGVEC(NMTX,NMTX)
1596 INTEGER I, J, IB, JB, ITN, ITMAX
1598 * ROTN(NMTX,NMTX), (NMTX,NMTX)
1600 * , BRATIO, BSAVE, DEN, TT, CT, ST
1606 eigval(1) = amtx(1,1)
1613 CALL zero1(eigvec,nmtx*nmtx)
1623 DO 60 i = 1, (nmtx - 1)
1624 DO 50 j = (i+1), nmtx
1629 IF (abs(amtx(i,i)) >= abs(amtx(j,j)))
THEN
1630 IF (abs(amtx(i,i)) > small)
THEN
1631 bratio = abs(amtx(i,j)/amtx(i,i))
1633 bratio = abs(amtx(i,j))/small
1636 IF (abs(amtx(j,j)) > small)
THEN
1637 bratio = abs(amtx(i,j)/amtx(j,j))
1639 bratio = abs(amtx(i,j))/small
1643 IF (bratio > bsave)
THEN
1649 IF (abs(amtx(i,j)) > big)
THEN
1650 big = abs(amtx(i,j))
1657 IF (bsave <= small)
THEN
1662 eigval(i) = amtx(i,i)
1672 IF (itn > itmax)
THEN
1680 den = abs(amtx(ib,ib) - amtx(jb,jb)) +
1681 * sqrt( (amtx(ib,ib) - amtx(jb,jb))**2 +
1682 * four*amtx(ib,jb)**2 )
1683 IF (den > zero)
THEN
1684 IF (amtx(ib,ib) >= amtx(jb,jb))
THEN
1685 tt = two*amtx(ib,jb)/den
1687 tt = -two*amtx(ib,jb)/den
1690 ct = one/sqrt(one + tt**2)
1693 IF (amtx(ib,ib) >= amtx(jb,jb))
THEN
1704 CALL zero1(rotn,nmtx*nmtx)
1719 work(i,j) = amtx(i,ib)*ct + amtx(i,jb)*st
1720 ELSEIF (j == jb)
THEN
1721 work(i,j) = -amtx(i,ib)*st + amtx(i,jb)*ct
1723 work(i,j) = amtx(i,j)
1731 amtx(i,j) = work(ib,j)*ct + work(jb,j)*st
1732 ELSEIF (i == jb)
THEN
1733 amtx(i,j) = -work(ib,j)*st + work(jb,j)*ct
1735 amtx(i,j) = work(i,j)
1744 DO 160 j = (i+1), nmtx
1745 amtx(i,j) = half*(amtx(i,j) + amtx(j,i))
1746 amtx(j,i) = amtx(i,j)
1755 work(i,j) = eigvec(i,ib)*ct + eigvec(i,jb)*st
1756 ELSEIF (j == jb)
THEN
1757 work(i,j) = -eigvec(i,ib)*st + eigvec(i,jb)*ct
1759 work(i,j) = eigvec(i,j)
1763 CALL cp_real(nmtx*nmtx,work,eigvec)
1779 SUBROUTINE autspc(KII,IDEG,RASPCC,SMLEIG,NDDL,
1780 * IKC,NASPCC,LAUSPC,IERR )
1810#include "implicit_f.inc"
1814 INTEGER NDDL, NASPCC, LAUSPC,N,IERR
1815 INTEGER IDEG(3), IKC(3)
1817 * KII(3,3), RASPCC(*), SMLEIG
1823 INTEGER IDMTX,JDMTX,KDMTX,NZERO
1824 INTEGER I, J, IND, IHIGH, NMTX, IEQ, ID(3)
1826 * EIGVEC(9), EIGVAL(3), HIGH,NOM
1838 IF (ideg(i) <= nddl .AND. ikc(i) == 0 )
THEN
1844 IF (nmtx == 0)
GOTO 999
1847 CALL zero1(eigval,3)
1855 amtx(1) = kii(idmtx,idmtx)
1859 IF (abs(amtx(1)) <= em10 )
THEN
1865 ELSEIF (nmtx == 2)
THEN
1870 CALL zero1(eigvec,4)
1873 amtx(1) = kii(idmtx,idmtx)
1874 amtx(3) = kii(idmtx,jdmtx)
1875 amtx(4) = kii(jdmtx,jdmtx)
1883 CALL clceig(amtx,eigval,eigvec,smleig,nmtx,ierr)
1884 IF (ierr /= 0)
GOTO 999
1892 IF (nzero == 2)
THEN
1897 ELSEIF (nzero == 1)
THEN
1899 IF ( eigval(i) < smleig )
THEN
1902 high =
max(abs(eigvec(ind)),eigvec(abs(ind+1)))
1903 IF (abs(high-one)<smleig)
THEN
1908 raspcc(id(1)) = eigvec(ind)
1909 raspcc(id(2)) = eigvec(ind+1)
1916 ELSEIF (nmtx == 3)
THEN
1920 CALL zero1(eigvec,9)
1927 CALL clceig(kii,eigval,eigvec,smleig,nmtx,ierr)
1928 IF (ierr /= 0)
GOTO 999
1938 IF (nzero == 3)
THEN
1943 ELSEIF (nzero == 2)
THEN
1946 IF ( eigval(i) < smleig )
THEN
1950 high =
max(high,abs(eigvec(ind+j)))
1955 IF (abs(high-one)<smleig)
THEN
1957 IF ( eigval(i) < smleig ) ikc(i) = 14
1961 IF ( eigval(i) < smleig )
THEN
1966 raspcc(ieq+1) = eigvec(ind)
1967 raspcc(ieq+2) = eigvec(ind+1)
1968 raspcc(ieq+3) = eigvec(ind+2)
1972 ELSEIF (nzero == 1)
THEN
1974 IF ( eigval(i) < smleig )
THEN
1977 high =
max(eigvec(ind),eigvec(ind+1),eigvec(ind+2))
1978 IF (abs(high-one)<smleig)
THEN
1983 raspcc(1) = eigvec(ind)
1984 raspcc(2) = eigvec(ind+1)
1985 raspcc(3) = eigvec(ind+2)
2014#include "implicit_f.inc"
2018 INTEGER LENGTH,NZERO
2020 * smleig, vector(length)
2029 vector(i) = abs(vector(i))
2033 high =
max(vector(1),vector(2))
2034 IF ( length == 3 )
THEN
2035 high =
max(high,vector(3))
2038 IF ( high < em10 )
THEN
2039 CALL zero1(vector,length)
2043 vector(i) = vector(i)/high
2044 IF ( vector(i) < smleig )
THEN
2056!||--- called by ------------------------------------------------------
2063#include "implicit_f.inc"
2076 IF (ikc(i) ==15)
THEN
2104 . IADK ,JDIK ,DIAG_K,LT_K )
2113#include "implicit_f.inc"
2117#include "com01_c.inc"
2118#include "com04_c.inc"
2119#include "impl1_c.inc"
2120#include "task_c.inc"
2121#include "units_c.inc"
2125 INTEGER ,NDOF(*),IDDL(*),IKC(*),ITAB(*),
2132 INTEGER NSPCLI,NSPCT,NSPCTI,I,J,K,N,
2133 . ID(3),IK,IDK,,IER2,IERR,NSPC,IR,NDOFT,J1,NSPCR,
2137 * KII(3,3),KDD(6,6),SMLEIG,KDIV3,RS
2138 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ILT,ILR
2139 my_real,
DIMENSION(:,:),
ALLOCATABLE ::
2149 ALLOCATE(ilt(numnod),skewt(6,numnod),stat=ier1)
2153 ALLOCATE(ilr(numnod),skewr(6,numnod),stat=ier2)
2159 IF (ndof(i)==0) cycle
2160 CALL get_kii(i ,iddl ,iadk,diag_k,lt_k ,kdd,ndof(i))
2161 ndoft =
min(3,ndof(i))
2162 kdiv3=kdd(1,1)+kdd(2,2)+kdd(3,3)
2164 ikc3=ikc(ik)+ikc(ik+1)+ikc(ik+2)
2165 IF (kdiv3<=em10.AND.ikc3==0)
THEN
2172 ELSEIF(iautspc>1)
THEN
2187 CALL autspc(kii,id ,skewt(1,i),smleig,nddl ,
2188 * ikc(idk),ilt(i),nspcti ,ierr )
2193 nspct = nspct+nspcti
2195 IF ((ilt(i)+nspcti)>0) nspcn = nspcn + 1
2196 ENDIF !((kdd(1,1)+kdd(2,2)+kdd(3,3))<=em10)
THEN
2197 IF (ndof(i)==6)
THEN
2199 ikc3=ikc(ik)+ikc(ik+1)+ikc(ik+2)
2200 IF ((kdd(4,4)+kdd(5,5)+kdd(6,6))<=em10.AND.ikc3==0)
THEN
2206 IF (kdiv3>em10) nspcn = nspcn + 1
2207 ELSEIF(iautspc>1)
THEN
2210 kii(j,k) = kdd(j+3,k+3)
2222 CALL autspc(kii,id ,skewr(1,i),smleig,nddl ,
2223 * ikc(idk) ,ilr(i),nspcti ,ierr )
2228 nspcr = nspcr+nspcti
2230 IF ((ilr(i)+nspcti)>0) nspcn = nspcn + 1
2236 IF (nspcn>0.AND.iline/=0)
THEN
2238 WRITE(istdo,
'(I10,A)')nspcn,
2239 .
' NODES TREATED BY AUTOSPC FOR :'
2240 WRITE(istdo,
'(I10,A)')nspct,
2241 .
' TRANSLATIONAL DOFS'
2242 WRITE(istdo,
'(I10,A)')nspcr,
2243 .
' ROTATIONAL DOFS'
2244 WRITE(iout,
'(I10,A)')nspcn,
2245 .
' NODES TREATED BY AUTOSPC FOR :'
2246 WRITE(iout,
'(I10,A)')nspct,
2247 .
' TRANSLATIONAL DOFS'
2248 WRITE(iout,
'(I10,A)')nspcr,
2249 .
' ROTATIONAL DOFS'
2257 IF(
ALLOCATED(skew_spc))
DEALLOCATE(skew_spc)
2258 ALLOCATE(skew_spc(6*
nspcl),stat=ier2)
2268 CALL spc_dir(ikc(iddl(i)+1),j ,j1 )
2271 skew_spc(j)=skewt(1,i)
2272 skew_spc(j+1)=skewt(2,i)
2273 skew_spc(j+2)=skewt(3,i)
2275 skew_spc(j+3)=skewt(4,i)
2276 skew_spc(j+4)=skewt(5,i)
2277 skew_spc(j+5)=skewt(6,i)
2284 CALL spc_dir(ikc(iddl(i)+4),j ,j1 )
2285 ic_spc(nspc) = ilr(i) + 3
2287 skew_spc(j)=skewr(1,i)
2288 skew_spc(j+1)=skewr(2,i)
2289 skew_spc(j+2)=skewr(3,i)
2291 skew_spc(j+3)=skewr(4,i)
2292 skew_spc(j+4)=skewr(5,i)
2293 skew_spc(j+5)=skewr(6,i)
2301 DEALLOCATE(ilt,skewt)
2302 IF (iroddl/=0)
DEALLOCATE(ilr,skewr)
2306 CALL ancmsg(msgid=102,anmode=aninfo,
2323 . IADK ,JDIK ,DIAG_K,LT_K )
2327#include "implicit_f.inc"
2331#include "com01_c.inc"
2335 INTEGER NDDL,NDOF(*),IDDL(*),IKC(*),ITAB(*),
2344 .
DIMENSION(:),
ALLOCATABLE :: DIAG_KP,LT_KP
2347 NZ = iadk(nddl+1)-iadk(1)
2348 ALLOCATE(diag_kp(nddl),lt_kp(nz),stat=ierr)
2349 CALL cp_real(nddl,diag_k,diag_kp)
2352 CALL upd_aspc0(nddl ,ndof ,iddl ,ikc ,itab ,
2353 . iadk ,jdik ,diag_kp,lt_kp )
2354 DEALLOCATE(diag_kp,lt_kp)
2356 CALL upd_aspc0(nddl ,ndof ,iddl ,ikc ,itab ,
2357 . iadk ,jdik ,diag_k,lt_k )
2373 1 IR ,KC ,IADK ,JDIK ,DIAG_K,
2378#include "implicit_f.inc"
2382 INTEGER IADN(*),IFIX(*),IADK(*) ,JDIK(*),I,IR,KC
2384 . SKEW(3),SKEW1(3),DIAG_K(*),LT_K(*)
2390 . (3),EJ1(3),S,EA,EB
2399 CALL bc_c2d(ej,ej1, j, j1 ,ea, eb )
2406 1 ir ,ea ,eb ,iadk ,jdik ,
2426#include "implicit_f.inc"
2432 . skew(3),skew1(3),b(*)
2438 . EJ(3),EJ1(3),S,EA,EB
2447 CALL bc_c2d(ej,ej1, j, j1 ,ea, eb )
2454 b(nd+k)=b(nd+k)-ea*b(nd+j)-eb*b(nd+j1)
2472#include "implicit_f.inc"
2478 . skew(3),skew1(3),d(3,*)
2484 . EJ(3),EJ1(3),S,EA,EB
2493 CALL bc_c2d(ej,ej1, j, j1 ,ea, eb )
2499 d(j,n) = -ea* d(k,n)
2500 d(j1,n)= -eb* d(k,n)
2518#include "implicit_f.inc"
2523 . skew(3),skew1(3),diag_k(3),kdd(3,3)
2527 INTEGER I,ND,K,L,J1,K1,L1,J
2529 . EJ(3),EJ1(3),S,EA,EB
2541 CALL bc_c2d(ej,ej1, j, j1 ,ea, eb )
2545 diag_k(k)=diag_k(k)+
2546 . ea*(kdd(j,j)*ea+two*eb*kdd(j,j1)-two*kdd(j,k))
2547 . +eb*(kdd(j1,j1)*eb-two*kdd(j1,k))
2565#include "implicit_f.inc"
2571 . a(3,*),skew(3),skew1(3)
2577 . EJ(3),EJ1(3),S,EA,EB
2586 CALL bc_c2d(ej,ej1, j, j1 ,ea, eb )
2594 a(k,n)=a(k,n)+ea*a(j,n)+eb*a(j1,n)
2610 1 IKC ,IADK ,JDIK ,DIAG_K,LT_K ,
2611 2 LB ,A ,KSS ,KSM ,IDLM ,
2616#include "implicit_f.inc"
2620 INTEGER N,IDDL(*),IDDLM(*),IKC(*),IADK(*),JDIK(*),
2623 . DIAG_K(*),LT_K(*),LB(*),A(3,*),
2624 . KSS(6),KSM(3,3),SKEW(3),SKEW1(3)
2628 INTEGER I,J,ND,K,L,J1,ID,IDM
2630 . EJ(3),EJ1(3),S,EA,EB,KDD(6,6)
2639 CALL bc_c2d(ej,ej1, j, j1 ,ea, eb )
2660 . +ea*(kdd(j,j)*ea+two*eb*kdd(j,j1)-two*kdd(j,k))
2661 . +eb*(kdd(j1,j1)*eb-two*kdd(j1,k))
2662 CALL put_kmii(idlm ,iadk,diag_k,lt_k ,kdd,nd)
2665 IF(ikc(id+k)==0) lb(idm+k)=lb(idm+k)+ea*a(j,n)+eb*a(j1,n)
2669 ksm(k,k)= ea*(ksm(j,j)*ea+two*eb*ksm(j,j1)-two*ksm(j,k))
2670 . +eb*(ksm(j1,j1)*eb-two*ksm(j1,k))
2690#include "implicit_f.inc"
2715#include "implicit_f.inc"
2743#include "implicit_f.inc"
2749 . EJ(3),EJ1(3),EA,EB
2758 CALL GDIR2_IND(EJ,EJ1,K)
2763 det = one/(ej(j)*ej1(j1)-ej(j1)*ej1(j))
2764 ea = det*(ej1(j1)*ej(k)-ej(j1)*ej1(k))
2765 eb = det*(ej(j)*ej1(k)-ej1(j)*ej(k))
subroutine bc_updk(n, iddl, ej, jj, ir, iadk, jdik, diag_k, lt_k)
subroutine bc_imp2(icodt, icodr, iskew, skew, ndof, d, dr)
subroutine autspc(kii, ideg, raspcc, smleig, nddl, ikc, naspcc, lauspc, ierr)
subroutine bc_fi(n, ej, j1, a)
subroutine bc_updk2d(iadn, ifix, skew, skew1, i, ir, kc, iadk, jdik, diag_k, lt_k)
subroutine nrmlzauspc(vector, smleig, length, nzero)
subroutine fv_updkd2(skew, skew1, kdd, diag_k)
subroutine bcl_frk(n, iddl, iddlm, ict, isk, skew, ikc, iadk, jdik, diag_k, lt_k, lb, a, kss, ksm, idlm, ifss, ifsm)
subroutine bc_updfr2(n, iddl, skew, skew1, iddlm, ikc, iadk, jdik, diag_k, lt_k, lb, a, kss, ksm, idlm, ifss, ifsm)
subroutine bcl_impd(ict, isk, skew, i, d)
subroutine bc_updfr(n, iddl, ej, jj, iddlm, ikc, iadk, jdik, diag_k, lt_k, lb, a, kss, ksm, idlm, ifss, ifsm)
subroutine bc_impa(iadk, jdik, diag_k, lt_k, ndof, iddl, ikc)
subroutine upd_aspc(nddl, ndof, iddl, ikc, itab, iadk, jdik, diag_k, lt_k)
subroutine bc_updd(n, ej, j, d)
subroutine bcl_impb(ict, isk, skew, nd, lb, ir)
subroutine bc_updf(nbc, ibc, skew, a)
subroutine bc_c2d(ej, ej1, j, j1, ea, eb)
subroutine spc_dir(ikc, j, j1)
subroutine bc_upd2d(n, skew, skew1, d)
subroutine bc_imp1(icodt, icodr, iskew, skew, ifix, ndof, iadn, iadk, jdik, diag_k, lt_k)
subroutine bc_fi2(n, skew, skew1, a)
subroutine put_nspc(nspc)
subroutine bcl_impk(ict, isk, skew, ifix, iadn, iadk, jdik, diag_k, lt_k, i, nd, ir)
subroutine clceig(amtx, eigval, eigvec, small, nmtx, ierr)
subroutine bc_updd2(n, ej, j, ej1, j1, d)
subroutine bcl_impkd(ict, isk, skew, kdd, diag_k)
subroutine bc_impr1(icodt, icodr, iskew, skew, ndof, iadn, lb)
subroutine bc_updf2d(nd, skew, skew1, ir, b)
subroutine bc_updb(id, ej, jj, ir, lb)
subroutine l_dir2(ej, j, j0)
subroutine upd_aspc0(nddl, ndof, iddl, ikc, itab, iadk, jdik, diag_k, lt_k)
subroutine get_nspc(nspc)
subroutine bc_imp0(icodt, icodr, iskew, ifix, ndof, iadn)
subroutine fv_imp0(iddl, ifix, ndof, iadk, jdik, diag_k, lt_k, ud, nbk, iab, bk, nddl, rd)
subroutine fv_updkd(ej, j, kdd, diag_k)
subroutine fv_updk(n, iddl, ej, jj, ir, iadk, jdik, diag_k, lt_k, lb, ud)
subroutine upd_kml(ipari, intbuf_tab, nint2, iint2, npby, lpby, itab, nrbyac, irbyac, x, ibfv, lj, skew, xframe, iskew, icodt, inloc, nsl, iad_m, iddl, ikc, ndof, iddlm, ud, a, ksl, ksi, nsrem, nf_si, iddli, irbe3, lrbe3, frbe3, irbe2, lrbe2)
subroutine imp_fri(num_imp, ns_imp, ne_imp, ipari, intbuf_tab, npby, lpby, itab, nrbyac, irbyac, nint2, iint2, iddl, ikc, ndof, inloc, nsrem, nsl, nbintc, intlist, x, ibfv, lj, skew, xframe, iskew, icodt, a, ud, lb, ifdis, nddl, urd, iddli, irbe3, lrbe3, frbe3, irbe2, lrbe2)
subroutine put_kmii(id, iadk, k_diag, k_lt, kii, nd)
subroutine put_kii(ni, iddl, iadk, k_diag, k_lt, kii, nd)
subroutine get_kii(ni, iddl, iadk, k_diag, k_lt, kii, nd)
subroutine spmd_sumf_k(diag_k, l_k)
integer, dimension(:), allocatable in_spc
integer, dimension(:), allocatable ic_spc
integer, dimension(:), allocatable icr_1
integer, dimension(:), allocatable ict_1
subroutine cp_real(n, x, xc)
subroutine rbe2_imp0(irbe2, lrbe2, x, nsrb2, isb2, ikc, ndof, iddl, iadk, jdik, diag_k, lt_k, b, weight, itab, skew)
subroutine cdi_bcn(ict, skew, jt, kt, jt1)
subroutine bc_updk2(n, iddl, j, l, k, ir, ej, el, iadk, jdik, diag_k, lt_k)
subroutine dir_rbe2(j, j1, k)
subroutine fv_rwlr0(iddl, b)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)