1*59599516SKenneth E. Jansen subroutine rotabc (global, iBC, code) 2*59599516SKenneth E. Jansenc--------------------------------------------------------------------- 3*59599516SKenneth E. Jansenc 4*59599516SKenneth E. Jansenc This subroutine is responsible for rotating 5*59599516SKenneth E. Jansenc the residual and solution vectors for axisymmetric BC's. 6*59599516SKenneth E. Jansenc 7*59599516SKenneth E. Jansenc input: 8*59599516SKenneth E. Jansenc global(nshg,n): global vector to be rotated. 9*59599516SKenneth E. Jansenc code: = 'in' for rotating with the residual 10*59599516SKenneth E. Jansenc = 'out' for rotating the solution 11*59599516SKenneth E. Jansenc 12*59599516SKenneth E. Jansenc note that the cos and sin of the rotation angles are preprocessed and 13*59599516SKenneth E. Jansenc stored in acs(1 and 2) respectively. 14*59599516SKenneth E. Jansenc 15*59599516SKenneth E. Jansenc--------------------------------------------------------------------- 16*59599516SKenneth E. Jansenc 17*59599516SKenneth E. Jansen use specialBC ! gives us acs, contains (:,1)=cos(theta) (:,2)=sin(theta) 18*59599516SKenneth E. Jansen include "common.h" 19*59599516SKenneth E. Jansen 20*59599516SKenneth E. Jansen dimension global(nshg,2), iBC(nshg), 21*59599516SKenneth E. Jansen & tmp(nshg) 22*59599516SKenneth E. Jansen 23*59599516SKenneth E. Jansen character*3 code 24*59599516SKenneth E. Jansen 25*59599516SKenneth E. Jansen if (code .eq. 'in ') then 26*59599516SKenneth E. Jansen where( btest(iBC,10)) 27*59599516SKenneth E. Jansen tmp = global(:,1)*acs(:,1) - global(:,2)*acs(:,2) 28*59599516SKenneth E. Jansen global(:,2) = global(:,1)*acs(:,2) + global(:,2)*acs(:,1) 29*59599516SKenneth E. Jansen global(:,1) = tmp 30*59599516SKenneth E. Jansen endwhere 31*59599516SKenneth E. Jansen else if (code .eq. 'out') then 32*59599516SKenneth E. Jansen where( btest(iBC,10)) 33*59599516SKenneth E. Jansen tmp = global(:,1)*acs(:,1) + global(:,2)*acs(:,2) 34*59599516SKenneth E. Jansen global(:,2) = -global(:,1)*acs(:,2) + global(:,2)*acs(:,1) 35*59599516SKenneth E. Jansen global(:,1) = tmp 36*59599516SKenneth E. Jansen endwhere 37*59599516SKenneth E. Jansen else 38*59599516SKenneth E. Jansen call error ('rotabc ','code ',0) 39*59599516SKenneth E. Jansen endif 40*59599516SKenneth E. Jansen 41*59599516SKenneth E. Jansen return 42*59599516SKenneth E. Jansen end 43