@@ -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,16 @@ 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+ G( 1 :N) = 0.0_dp
593+ Z( 1 :N,istage) = 0.0_dp
596594! ~~~> Prepare the loop-independent part of the right-hand side
597- CALL Set2zero(N,G)
598595 IF (istage > 1 ) THEN
599596 DO j = 1 , istage-1
600597 ! 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 )
598+ G( 1 :N) = G( 1 :N) + rkTheta(istage,j) * Z(1 :N,j )
602599 ! Zi(:) = sum_j Alpha(i,j)*Zj(:)
603600 IF (StartNewton) THEN
604- CALL WAXPY(N,rkAlpha( istage,j), Z(1 ,j), 1 , Z(1 ,istage), 1 )
601+ Z( 1 :N, istage) = Z(1 :N,istage) + rkAlpha(istage,j) * Z(1 :N,j )
605602 END IF
606603 END DO
607604 END IF
@@ -613,13 +610,13 @@ SUBROUTINE SDIRK_Integrator( N,Tinitial,Tfinal,Y,Ierr )
613610NewtonLoop:DO NewtonIter = 1 , NewtonMaxit
614611
615612! ~~~> Prepare the loop-dependent part of the right-hand side
616- CALL WADD(N,Y, Z(1 ,istage),TMP) ! TMP <- Y + Zi
613+ TMP( 1 :N) = Y( 1 :N) + Z(1 :N ,istage) ! TMP <- Y + Zi
617614 CALL FUN_CHEM(T+ rkC(istage)* H,TMP,RHS) ! RHS <- Fun(Y+Zi)
618615 ISTATUS(Nfun) = ISTATUS(Nfun) + 1
619616! 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 )
617+ RHS( 1 :N) = RHS( 1 :N) * (H * rkGamma )
618+ RHS( 1 :N) = RHS( 1 :N) - Z(1 :N ,istage)
619+ RHS( 1 :N) = RHS( 1 :N) + G( 1 :N )
623620
624621! ~~~> Solve the linear system
625622 CALL SDIRK_Solve ( H, N, E, IP, IER, RHS )
@@ -648,7 +645,7 @@ SUBROUTINE SDIRK_Integrator( N,Tinitial,Tfinal,Y,Ierr )
648645 END IF
649646 NewtonIncrementOld = NewtonIncrement
650647 ! Update solution: Z(:) <-- Z(:)+RHS(:)
651- CALL WAXPY(N,ONE,RHS, 1 , Z(1 ,istage), 1 )
648+ Z( 1 :N,istage) = Z(1 :N ,istage) + RHS( 1 :N )
652649
653650 ! Check error in Newton iterations
654651 NewtonDone = (NewtonRate* NewtonIncrement <= NewtonTol)
@@ -675,9 +672,9 @@ SUBROUTINE SDIRK_Integrator( N,Tinitial,Tfinal,Y,Ierr )
675672 ISTATUS(Nstp) = ISTATUS(Nstp) + 1
676673
677674 IF (sdMethod /= BEL) THEN ! All methods but Backward Euler
678- CALL Set2zero(N,TMP)
675+ TMP( 1 :N) = 0.0_dp
679676 DO i = 1 ,rkS
680- IF (rkE(i)/= ZERO) CALL WAXPY(N, rkE(i), Z(1 ,i), 1 ,TMP, 1 )
677+ IF (rkE(i)/= ZERO) TMP( 1 :N) = TMP( 1 :N) + rkE(i) * Z(1 :N,i )
681678 END DO
682679
683680 CALL SDIRK_Solve( H, N, E, IP, IER, TMP )
@@ -704,7 +701,7 @@ SUBROUTINE SDIRK_Integrator( N,Tinitial,Tfinal,Y,Ierr )
704701 T = T + H
705702 ! Y(:) <-- Y(:) + Sum_j rkD(j)*Z_j(:)
706703 DO i = 1 ,rkS
707- IF (rkD(i)/= ZERO) CALL WAXPY(N, rkD(i), Z(1 ,i), 1 ,Y, 1 )
704+ IF (rkD(i)/= ZERO) Y( 1 :N) = Y( 1 :N) + rkD(i) * Z(1 :N,i )
708705 END DO
709706
710707! ~~~> Update scaling coefficients
@@ -918,10 +915,10 @@ SUBROUTINE SDIRK_Solve ( H, N, E, IP, ISING, RHS )
918915 KPP_REAL, INTENT (IN ) :: E(LU_NONZERO)
919916#endif
920917 KPP_REAL, INTENT (INOUT ) :: RHS(N)
921- KPP_REAL :: HGammaInv
922918
923- HGammaInv = ONE/ (H* rkGamma)
924- CALL WSCAL(N,HGammaInv,RHS,1 )
919+ ! NOTE: This line reproduces the results of the
920+ ! previous WAXPY call (@yantosca, 16 Oct 2025)
921+ RHS(1 :N) = RHS(1 :N) * (ONE / (H * rkGamma))
925922#ifdef FULL_ALGEBRA
926923 CALL DGETRS( ' N' , N, 1 , E, N, IP, RHS, N, ISING )
927924#else
0 commit comments