anchor.diff:      !$omp parallel do default(shared)&
       !$omp& private(ier)
       do i=1,grid%nC
  -      call DGETRS('N',5,1,JacC(:,1:5,i),5,precPiv(:,i),precRhs(:,i),5,ier)
  -      z([0,1,2,3,4]*grid%nC+i)=precRhs(:,i)
  +      call SGETRS('N',5,1,JacS(:,1:5,i),5,precPiv(:,i),precRhs(:,i),5,ier)
  +      z([0,1,2,3,4]*grid%nC+i)=dble(precRhs(:,i))
       end do
       !$end omp parallel do
     end do
  
positive.code:   integer(C_LONG)::nEq !< number of equations
    integer(C_LONG)::iStat(100),iPar(1) !< integer solver outputs and parameters
    double precision::rStat(100),rPar(1) !< real solver outputs and parameters
    integer,allocatable::precPiv(:,:) !< pivoting arrays for Lapack
    double precision,allocatable::precRhs(:,:) !< RHS arrays for Lapack
  
  contains
    
  
negative.code:     call setBC(x)
      call syncState(x)
      call findAdvJac(grid,rho,rhou,rhoE,p,gamm,JacP,JacC)
      if(.not.allocated(JacS))then
        allocate(JacS(size(JacC,1),size(JacC,2),size(JacC,3)))
      end if
      JacS(:,:,:)=real(JacC(:,:,:))
      Jcur=1
    end if
    JacS(:,:,:)=-real(pGamm)*JacS(:,:,:)
    forall(i=1:grid%nC)
      forall(j=1:5)
        JacS(j,j,i)=JacS(j,j,i)+1e0
      end forall
    end forall
    !$omp parallel do default(shared)&
    !$omp& private(ier)
    do i=1,grid%nC
      call SGETRF(5,5,JacS(:,1:5,i),5,precPiv(:,i),ier)
    end do
    !$end omp parallel do
    ier=0
  