@@ -22,9 +22,7 @@ MODULE KPP_ROOT_Integrator
2222 USE KPP_ROOT_Global
2323 USE KPP_ROOT_Parameters
2424 USE KPP_ROOT_JacobianSP, ONLY : LU_DIAG
25- USE KPP_ROOT_LinearAlgebra, ONLY : KppDecomp, KppSolve, Set2zero, &
26- WLAMCH, WCOPY, WAXPY, &
27- WSCAL, WADD
25+ USE KPP_ROOT_LinearAlgebra, ONLY : KppDecomp, KppSolve, WLAMCH
2826
2927 IMPLICIT NONE
3028 PUBLIC
@@ -591,17 +589,18 @@ SUBROUTINE SDIRK_Integrator( N,Tinitial,Tfinal,Y,Ierr )
591589! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
592590
593591! ~~~> Starting values for Newton iterations
594- CALL Set2zero(N,Z(1 ,istage))
595-
592+ ! CALL Set2zero(N,Z(1,istage))
593+ G(1 :N) = 0.0_dp
594+ Z(1 :N,istage) = 0.0_dp
596595! ~~~> Prepare the loop-independent part of the right-hand side
597- CALL Set2zero(N,G)
596+ ! CALL Set2zero(N,G)
598597 IF (istage > 1 ) THEN
599598 DO j = 1 , istage-1
600599 ! Gj(:) = sum_j Theta(i,j)*Zj(:) = H * sum_j A(i,j)*Fun(Zj)
601- CALL WAXPY(N, rkTheta(istage,j), Z(1 ,j), 1 ,G, 1 )
600+ G( 1 :N) = G( 1 :N) + rkTheta(istage,j) * Z(1 :N,j )
602601 ! Zi(:) = sum_j Alpha(i,j)*Zj(:)
603602 IF (StartNewton) THEN
604- CALL WAXPY(N,rkAlpha( istage,j), Z(1 ,j), 1 , Z(1 ,istage), 1 )
603+ Z( 1 :N, istage) = Z(1 :N,istage) + rkAlpha(istage,j) * Z(1 :N,j )
605604 END IF
606605 END DO
607606 END IF
@@ -613,13 +612,13 @@ SUBROUTINE SDIRK_Integrator( N,Tinitial,Tfinal,Y,Ierr )
613612NewtonLoop:DO NewtonIter = 1 , NewtonMaxit
614613
615614! ~~~> Prepare the loop-dependent part of the right-hand side
616- CALL WADD(N,Y, Z(1 ,istage),TMP) ! TMP <- Y + Zi
615+ TMP( 1 :N) = Y( 1 :N) + Z(1 :N ,istage) ! TMP <- Y + Zi
617616 CALL FUN_CHEM(T+ rkC(istage)* H,TMP,RHS) ! RHS <- Fun(Y+Zi)
618617 ISTATUS(Nfun) = ISTATUS(Nfun) + 1
619618! RHS(1:N) = G(1:N) - Z(1:N,istage) + (H*rkGamma)*RHS(1:N)
620- CALL WSCAL(N, H * rkGamma, RHS, 1 )
621- CALL WAXPY (N, - ONE, Z(1 ,istage), 1 , RHS, 1 )
622- CALL WAXPY (N, ONE, G, 1 , RHS, 1 )
619+ RHS( 1 :N) = RHS( 1 :N) * (H * rkGamma )
620+ RHS( 1 :N) = RHS( 1 :N) - Z(1 :N ,istage)
621+ RHS( 1 :N) = RHS( 1 :N) + G( 1 :N )
623622
624623! ~~~> Solve the linear system
625624 CALL SDIRK_Solve ( H, N, E, IP, IER, RHS )
@@ -648,7 +647,7 @@ SUBROUTINE SDIRK_Integrator( N,Tinitial,Tfinal,Y,Ierr )
648647 END IF
649648 NewtonIncrementOld = NewtonIncrement
650649 ! Update solution: Z(:) <-- Z(:)+RHS(:)
651- CALL WAXPY(N,ONE,RHS, 1 , Z(1 ,istage), 1 )
650+ Z( 1 :N,istage) = Z(1 :N ,istage) + RHS( 1 :N )
652651
653652 ! Check error in Newton iterations
654653 NewtonDone = (NewtonRate* NewtonIncrement <= NewtonTol)
@@ -677,7 +676,7 @@ SUBROUTINE SDIRK_Integrator( N,Tinitial,Tfinal,Y,Ierr )
677676 IF (sdMethod /= BEL) THEN ! All methods but Backward Euler
678677 CALL Set2zero(N,TMP)
679678 DO i = 1 ,rkS
680- IF (rkE(i)/= ZERO) CALL WAXPY(N, rkE(i), Z(1 ,i), 1 ,TMP, 1 )
679+ IF (rkE(i)/= ZERO) TMP( 1 :N) = TMP( 1 :N) + rkE(i) * Z(1 :N,i )
681680 END DO
682681
683682 CALL SDIRK_Solve( H, N, E, IP, IER, TMP )
@@ -704,7 +703,7 @@ SUBROUTINE SDIRK_Integrator( N,Tinitial,Tfinal,Y,Ierr )
704703 T = T + H
705704 ! Y(:) <-- Y(:) + Sum_j rkD(j)*Z_j(:)
706705 DO i = 1 ,rkS
707- IF (rkD(i)/= ZERO) CALL WAXPY(N, rkD(i), Z(1 ,i), 1 ,Y, 1 )
706+ IF (rkD(i)/= ZERO) Y( 1 :N) = Y( 1 :N) + rkD(i) * Z(1 :N,i )
708707 END DO
709708
710709! ~~~> Update scaling coefficients
@@ -918,10 +917,10 @@ SUBROUTINE SDIRK_Solve ( H, N, E, IP, ISING, RHS )
918917 KPP_REAL, INTENT (IN ) :: E(LU_NONZERO)
919918#endif
920919 KPP_REAL, INTENT (INOUT ) :: RHS(N)
921- KPP_REAL :: HGammaInv
922920
923- HGammaInv = ONE/ (H* rkGamma)
924- CALL WSCAL(N,HGammaInv,RHS,1 )
921+ ! NOTE: This line reproduces the results of the
922+ ! previous WAXPY call (@yantosca, 16 Oct 2025)
923+ RHS(1 :N) = RHS(1 :N) * (ONE / (H * rkGamma))
925924#ifdef FULL_ALGEBRA
926925 CALL DGETRS( ' N' , N, 1 , E, N, IP, RHS, N, ISING )
927926#else
0 commit comments