LCOV - code coverage report
Current view: top level - num/private - slvrad.dek (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 194 0
Test Date: 2025-05-08 18:23:42 Functions: 0.0 % 1 0

            Line data    Source code
       1            0 :       subroutine slvrad(n,fjac,ldjac,mljac,mujac,fmas,ldmas,mlmas,mumas,
       2            0 :      &          m1,m2,nm1,fac1,alphn,betan,e1_1D,e2r,e2i,lde1,z1,z2,z3,
       3              :      &          f1,f2,f3,cont,ip1,ip2,iphes,ier,ijob,
       4              :      &          mle,mue,mbjac,mbb,mdiag,mdiff,mbdiag,
       5            0 :      &          decsol,decsols,decsolc,decsolcs,nzmax,isparse,ia,ja,sa,sar,sai,
       6              :      &          lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol)
       7              :       implicit none
       8              :       interface
       9              : #include "mtx_decsol.dek"
      10              : #include "mtx_decsols.dek"
      11              : #include "mtx_decsolc.dek"
      12              : #include"mtx_decsolcs.dek"
      13              :       end interface
      14              :       integer :: ldjac, mljac, mujac, ldmas, mlmas, mumas, m1, m2, nm1, lde1, ier, ijob
      15              :       integer :: n, mle, mue, mbjac, mbb, mdiag, mdiff, mbdiag, nzmax, isparse, lcd, lrd, lid
      16              :       integer :: iphes(n)
      17              :       integer :: ia(:) ! (n+1)
      18              :       integer :: ja(:) ! (nzmax)
      19              :       double precision :: sa(nzmax), sar(nzmax), sai(nzmax)
      20              :       complex(dp), intent(inout), pointer :: cpar_decsol(:) ! (lcd)
      21              :       real(dp), intent(inout), pointer :: rpar_decsol(:) ! (lrd)
      22              :       integer, intent(inout), pointer :: ipar_decsol(:) ! (lid)
      23              :       double precision :: fjac(ldjac,n), fmas(ldmas,nm1), fac1, alphn, betan
      24              :       double precision, pointer :: e1_1D(:)
      25              :       double precision :: e2r(lde1,nm1), e2i(lde1,nm1), cont(n)
      26              :       double precision, pointer, dimension(:) :: z1, z2, z3, f1, f2, f3 ! (n)
      27              :       integer, pointer, dimension(:) :: ip1, ip2 ! (nm1)
      28              : 
      29              : 
      30              :       ! LOCALS
      31            0 :       double precision :: s1, s2, s3, abno, sum1, sum2, sum3, sumh, z2i, z3i, ffja, bb
      32              :       integer :: i, mm, j, k, jkm, im1, mpi, j1b, j2b, jm1
      33              :       real(dp), pointer :: e1(:,:)
      34              :       real(dp), pointer, dimension(:) :: p1, p2, p3
      35              : 
      36            0 :       e1(1:lde1,1:nm1) => e1_1D(1:lde1*nm1)
      37            0 :       p1(1:n) => z1(m1+1:m1+n)
      38            0 :       p2(1:n) => z2(m1+1:m1+n)
      39            0 :       p3(1:n) => z3(m1+1:m1+n)
      40              : 
      41              : 
      42            0 :       GOTO (1,2,3,4,5,6,55,8,9,55,11,12,13,13,15), ijob
      43              : !
      44              : ! -----------------------------------------------------------
      45              : !
      46              :    1  continue
      47              : ! ---  b=identity, jacobian a full matrix
      48            0 :       do i=1,n
      49            0 :          s2=-f2(i)
      50            0 :          s3=-f3(i)
      51            0 :          z1(i)=z1(i)-f1(i)*fac1
      52            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
      53            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
      54              :       end do
      55            0 :       call decsol(1,n,lde1,e1_1D,n,n,z1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier)
      56            0 :       call decsolc(1,n,lde1,e2r,e2i,n,n,z2,z3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier)
      57            0 :       return
      58              : !
      59              : ! -----------------------------------------------------------
      60              : !
      61              :    8  continue
      62              : ! ---  b=identity, jacobian a sparse matrix
      63            0 :       do i=1,n
      64            0 :          s2=-f2(i)
      65            0 :          s3=-f3(i)
      66            0 :          z1(i)=z1(i)-f1(i)*fac1
      67            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
      68            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
      69              :       end do
      70            0 :       call decsols(1,n,nzmax,ia,ja,sa,z1,lrd,rpar_decsol,lid,ipar_decsol,ier)
      71            0 :       call decsolcs(1,n,nzmax,ia,ja,sar,sai,z2,z3,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier)
      72            0 :       return
      73              : !
      74              : ! -----------------------------------------------------------
      75              : !
      76              :   11  continue
      77              : ! ---  b=identity, jacobian a full matrix, second order
      78            0 :       do i=1,n
      79            0 :          s2=-f2(i)
      80            0 :          s3=-f3(i)
      81            0 :          z1(i)=z1(i)-f1(i)*fac1
      82            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
      83            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
      84              :       end do
      85            0 :  48   abno=alphn**2+betan**2
      86            0 :       mm=m1/m2
      87            0 :       do j=1,m2
      88            0 :          sum1=0.d0
      89            0 :          sum2=0.d0
      90            0 :          sum3=0.d0
      91            0 :          do k=mm-1,0,-1
      92            0 :             jkm=j+k*m2
      93            0 :             sum1=(z1(jkm)+sum1)/fac1
      94            0 :             sumh=(z2(jkm)+sum2)/abno
      95            0 :             sum3=(z3(jkm)+sum3)/abno
      96            0 :             sum2=sumh*alphn+sum3*betan
      97            0 :             sum3=sum3*alphn-sumh*betan
      98            0 :             do i=1,nm1
      99            0 :                im1=i+m1
     100            0 :                z1(im1)=z1(im1)+fjac(i,jkm)*sum1
     101            0 :                z2(im1)=z2(im1)+fjac(i,jkm)*sum2
     102            0 :                z3(im1)=z3(im1)+fjac(i,jkm)*sum3
     103              :             end do
     104              :          end do
     105              :       end do
     106            0 :       call decsol(1,nm1,lde1,e1_1D,nm1,nm1,p1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier)
     107            0 :       call decsolc(1,nm1,lde1,e2r,e2i,nm1,nm1,p2,p3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier)
     108              :  49   continue
     109            0 :       do i=m1,1,-1
     110            0 :          mpi=m2+i
     111            0 :          z1(i)=(z1(i)+z1(mpi))/fac1
     112            0 :          z2i=z2(i)+z2(mpi)
     113            0 :          z3i=z3(i)+z3(mpi)
     114            0 :          z3(i)=(z3i*alphn-z2i*betan)/abno
     115            0 :          z2(i)=(z2i*alphn+z3i*betan)/abno
     116              :       end do
     117              :       return
     118              : !
     119              : ! -----------------------------------------------------------
     120              : !
     121              :    2  continue
     122              : ! ---  b=identity, jacobian a banded matrix
     123            0 :       do i=1,n
     124            0 :          s2=-f2(i)
     125            0 :          s3=-f3(i)
     126            0 :          z1(i)=z1(i)-f1(i)*fac1
     127            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
     128            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
     129              :       end do
     130            0 :       call decsol(1,n,lde1,e1_1D,mle,mue,z1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier)
     131            0 :       call decsolc(1,n,lde1,e2r,e2i,mle,mue,z2,z3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier)
     132              :       return
     133              : !
     134              : ! -----------------------------------------------------------
     135              : !
     136              :   12  continue
     137              : ! ---  b=identity, jacobian a banded matrix, second order
     138            0 :       do i=1,n
     139            0 :          s2=-f2(i)
     140            0 :          s3=-f3(i)
     141            0 :          z1(i)=z1(i)-f1(i)*fac1
     142            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
     143            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
     144              :       end do
     145            0 :   45  abno=alphn**2+betan**2
     146            0 :       mm=m1/m2
     147            0 :       do j=1,m2
     148            0 :          sum1=0.d0
     149            0 :          sum2=0.d0
     150            0 :          sum3=0.d0
     151            0 :          do k=mm-1,0,-1
     152            0 :             jkm=j+k*m2
     153            0 :             sum1=(z1(jkm)+sum1)/fac1
     154            0 :             sumh=(z2(jkm)+sum2)/abno
     155            0 :             sum3=(z3(jkm)+sum3)/abno
     156            0 :             sum2=sumh*alphn+sum3*betan
     157            0 :             sum3=sum3*alphn-sumh*betan
     158            0 :             do i=max(1,j-mujac),min(nm1,j+mljac)
     159            0 :                im1=i+m1
     160            0 :                ffja=fjac(i+mujac+1-j,jkm)
     161            0 :                z1(im1)=z1(im1)+ffja*sum1
     162            0 :                z2(im1)=z2(im1)+ffja*sum2
     163            0 :                z3(im1)=z3(im1)+ffja*sum3
     164              :             end do
     165              :          end do
     166              :       end do
     167            0 :       call decsol(1,nm1,lde1,e1_1D,mle,mue,p1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier)
     168            0 :       call decsolc(1,nm1,lde1,e2r,e2i,mle,mue,p2,p3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier)
     169              :       GOTO 49
     170              : !
     171              : ! -----------------------------------------------------------
     172              : !
     173              :    3  continue
     174              : ! ---  b is a banded matrix, jacobian a full matrix
     175            0 :       do i=1,n
     176            0 :          s1=0.0d0
     177            0 :          s2=0.0d0
     178            0 :          s3=0.0d0
     179            0 :          do j=max(1,i-mlmas),min(n,i+mumas)
     180            0 :             bb=fmas(i-j+mbdiag,j)
     181            0 :             s1=s1-bb*f1(j)
     182            0 :             s2=s2-bb*f2(j)
     183            0 :             s3=s3-bb*f3(j)
     184              :          end do
     185            0 :          z1(i)=z1(i)+s1*fac1
     186            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
     187            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
     188              :       end do
     189            0 :       call decsol(1,n,lde1,e1_1D,n,n,z1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier)
     190            0 :       call decsolc(1,n,lde1,e2r,e2i,n,n,z2,z3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier)
     191              :       return
     192              : !
     193              : ! -----------------------------------------------------------
     194              : !
     195              :    9  continue
     196              : ! ---  b is a banded matrix, jacobian a sparse matrix
     197            0 :       do i=1,n
     198            0 :          s1=0.0d0
     199            0 :          s2=0.0d0
     200            0 :          s3=0.0d0
     201            0 :          do j=max(1,i-mlmas),min(n,i+mumas)
     202            0 :             bb=fmas(i-j+mbdiag,j)
     203            0 :             s1=s1-bb*f1(j)
     204            0 :             s2=s2-bb*f2(j)
     205            0 :             s3=s3-bb*f3(j)
     206              :          end do
     207            0 :          z1(i)=z1(i)+s1*fac1
     208            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
     209            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
     210              :       end do
     211              :       !write(*,*) 'slvrad call decsols'
     212            0 :       call decsols(1,n,nzmax,ia,ja,sa,z1,lrd,rpar_decsol,lid,ipar_decsol,ier)
     213              :       !write(*,*) 'slvrad call decsolcs'
     214            0 :       call decsolcs(1,n,nzmax,ia,ja,sar,sai,z2,z3,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier)
     215              :       !write(*,*) 'slvrad back decsols'
     216            0 :       return
     217              : !
     218              : ! -----------------------------------------------------------
     219              : !
     220              :   13  continue
     221              : ! ---  b is a banded matrix, jacobian a full matrix, second order
     222            0 :       do i=1,m1
     223            0 :          s2=-f2(i)
     224            0 :          s3=-f3(i)
     225            0 :          z1(i)=z1(i)-f1(i)*fac1
     226            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
     227            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
     228              :       end do
     229            0 :       do i=1,nm1
     230            0 :          im1=i+m1
     231            0 :          s1=0.0d0
     232            0 :          s2=0.0d0
     233            0 :          s3=0.0d0
     234            0 :          j1b=max(1,i-mlmas)
     235            0 :          j2b=min(nm1,i+mumas)
     236            0 :          do j=j1b,j2b
     237            0 :             jm1=j+m1
     238            0 :             bb=fmas(i-j+mbdiag,j)
     239            0 :             s1=s1-bb*f1(jm1)
     240            0 :             s2=s2-bb*f2(jm1)
     241            0 :             s3=s3-bb*f3(jm1)
     242              :          end do
     243            0 :          z1(im1)=z1(im1)+s1*fac1
     244            0 :          z2(im1)=z2(im1)+s2*alphn-s3*betan
     245            0 :          z3(im1)=z3(im1)+s3*alphn+s2*betan
     246              :       end do
     247            0 :       if (ijob==14) GOTO 45
     248              :       GOTO 48
     249              : !
     250              : ! -----------------------------------------------------------
     251              : !
     252              :    4  continue
     253              : ! ---  b is a banded matrix, jacobian a banded matrix
     254            0 :       do i=1,n
     255            0 :          s1=0.0d0
     256            0 :          s2=0.0d0
     257            0 :          s3=0.0d0
     258            0 :          do j=max(1,i-mlmas),min(n,i+mumas)
     259            0 :             bb=fmas(i-j+mbdiag,j)
     260            0 :             s1=s1-bb*f1(j)
     261            0 :             s2=s2-bb*f2(j)
     262            0 :             s3=s3-bb*f3(j)
     263              :          end do
     264            0 :          z1(i)=z1(i)+s1*fac1
     265            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
     266            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
     267              :       end do
     268            0 :       call decsol(1,n,lde1,e1_1D,mle,mue,z1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier)
     269            0 :       call decsolc(1,n,lde1,e2r,e2i,mle,mue,z2,z3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier)
     270              :       return
     271              : !
     272              : ! -----------------------------------------------------------
     273              : !
     274              :    5  continue
     275              : ! ---  b is a full matrix, jacobian a full matrix
     276            0 :       do i=1,n
     277              :          s1=0.0d0
     278              :          s2=0.0d0
     279              :          s3=0.0d0
     280            0 :          do j=1,n
     281            0 :             bb=fmas(i,j)
     282            0 :             s1=s1-bb*f1(j)
     283            0 :             s2=s2-bb*f2(j)
     284            0 :             s3=s3-bb*f3(j)
     285              :          end do
     286            0 :          z1(i)=z1(i)+s1*fac1
     287            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
     288            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
     289              :       end do
     290            0 :       call decsol(1,n,lde1,e1_1D,n,n,z1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier)
     291            0 :       call decsolc(1,n,lde1,e2r,e2i,n,n,z2,z3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier)
     292              :       return
     293              : !
     294              : ! -----------------------------------------------------------
     295              : !
     296              :   15  continue
     297              : ! ---  b is a full matrix, jacobian a full matrix, second order
     298            0 :       do i=1,m1
     299            0 :          s2=-f2(i)
     300            0 :          s3=-f3(i)
     301            0 :          z1(i)=z1(i)-f1(i)*fac1
     302            0 :          z2(i)=z2(i)+s2*alphn-s3*betan
     303            0 :          z3(i)=z3(i)+s3*alphn+s2*betan
     304              :       end do
     305            0 :       do i=1,nm1
     306            0 :          im1=i+m1
     307            0 :          s1=0.0d0
     308            0 :          s2=0.0d0
     309            0 :          s3=0.0d0
     310            0 :          do j=1,nm1
     311            0 :             jm1=j+m1
     312            0 :             bb=fmas(i,j)
     313            0 :             s1=s1-bb*f1(jm1)
     314            0 :             s2=s2-bb*f2(jm1)
     315            0 :             s3=s3-bb*f3(jm1)
     316              :          end do
     317            0 :          z1(im1)=z1(im1)+s1*fac1
     318            0 :          z2(im1)=z2(im1)+s2*alphn-s3*betan
     319            0 :          z3(im1)=z3(im1)+s3*alphn+s2*betan
     320              :       end do
     321              :       GOTO 48
     322              : !
     323              : ! -----------------------------------------------------------
     324              : !
     325              :    6  continue
     326              : ! ---  b is a full matrix, jacobian a banded matrix
     327              : ! ---  this option is not provided
     328              :       return
     329              : !
     330              : ! -----------------------------------------------------------
     331              : !
     332              :   55  continue
     333            0 :        write(*,*) 'slvrad: invalid ijob', ijob
     334            0 :        call mesa_error(__FILE__,__LINE__) ! slvrad
     335              :       end subroutine slvrad
        

Generated by: LCOV version 2.0-1