anchor.diff:    
     !> momentum and pressure preconditioning matrix setup/factor
     function pbcPSet(c_x,c_xScale,c_f,c_fScale,dat)
  -    use modEuler
       type(C_PTR),value::c_x,c_xScale,c_f,c_fScale,dat
       integer(C_INT)::pbcPSet
       double precision,pointer::x(:),xScale(:),f(:),fScale(:)
  
positive.code:     call associateVector(c_fScale,fScale)
      call associateVector(c_v,v)
      
      ! find x increment from f increment v and save back to v
      forall(i=1:grid%nC)
        v((DIMS+1)*(i-1)+1:(DIMS+1)*(i-1)+DIMS)=v((DIMS+1)*(i-1)+1:(DIMS+1)*(i-1)+DIMS)/rho(i)
        v((DIMS+1)*(i-1)+(DIMS+1))=v((DIMS+1)*(i-1)+(DIMS+1))*Rgas*temp(i)*gamm
      end forall
      pbcPsol=0
      foo=dat
    end function
  
negative.code:   
    !> momentum and pressure preconditioning problem solving
    function pbcPSol(c_x,c_xScale,c_f,c_fScale,c_v,dat)
      use modAdvection
      use modDiffusion
      use modPressure
      use modNewtonian
      type(C_PTR),value::c_x,c_xScale,c_f,c_fScale,c_v,dat
      integer(C_INT)::pbcPSol
      double precision,pointer::x(:),xScale(:),f(:),v(:),fScale(:)
      type(C_PTR)::foo
      double precision,allocatable,save::tmpRho(:),tmpP(:)
      
      call associateVector(c_x,x)
      call associateVector(c_xScale,xScale)
  