PMATVEC()

Fortran version:

For I/O APIv3.2: these are OpenMP-parallel generic routines, with optionally 1-D-horizontal ("vector") or 2-D-horizontal ("gridded") inputs and outputs. The generic INTERFACEs defined in MODULE M3UTILIO. For previous I/O API versions, PMATVEC() is the same as I/O API Version 3.2 PMATVEC11().
    SUBROUTINE PMATVEC( M..., NX, IX, U, V ):

        SUBROUTINE  PMATVEC11( M, N, P, NX, IX, U, V )
        INTEGER, INTENT(IN   ) :: M             ! length of input vector
        INTEGER, INTENT(IN   ) :: N             ! length of output vector
        INTEGER, INTENT(IN   ) :: P             ! max number of coefficients
        INTEGER, INTENT(IN   ) :: NX( N )       ! # of entries per row
        INTEGER, INTENT(IN   ) :: IX( P )       ! columns list
        REAL   , INTENT(IN   ) ::  U( M )       !  input vector
        REAL   , INTENT(  OUT) ::  V( N )       ! output vector
        END SUBROUTINE  PMATVEC11

        SUBROUTINE  PMATVEC12( M, NC, NR, P, NX, IX, U, V )
        INTEGER, INTENT(IN   ) :: M             ! length of input vector
        INTEGER, INTENT(IN   ) :: NC, NR        ! length of output vector
        INTEGER, INTENT(IN   ) :: P             ! max number of coefficients
        INTEGER, INTENT(IN   ) :: NX( NC*NR )   ! # of entries per row
        INTEGER, INTENT(IN   ) :: IX( P )       ! columns list
        REAL   , INTENT(IN   ) :: U( M )        !  input vector
        REAL   , INTENT(  OUT) :: V( NC,NR )    ! output vector
        END SUBROUTINE  PMATVEC12

        SUBROUTINE  PMATVEC21( MC, MR, N, P, NX, IX, U, V )
        INTEGER, INTENT(IN   ) :: MC, MR        ! length of input vector
        INTEGER, INTENT(IN   ) :: N             ! length of output vector
        INTEGER, INTENT(IN   ) :: P             ! max number of coefficients
        INTEGER, INTENT(IN   ) :: NX( N )       ! # of entries per row
        INTEGER, INTENT(IN   ) :: IX( P )       ! columns list
        REAL   , INTENT(IN   ) :: U( MC,MR )    !  input vector
        REAL   , INTENT(  OUT) :: V( N )        ! output vector
        END SUBROUTINE  PMATVEC21

        SUBROUTINE  PMATVEC22( MC, MR, NC, NR, P, NX, IX, U, V )
        INTEGER, INTENT(IN   ) :: MC, MR        ! length of input vector
        INTEGER, INTENT(IN   ) :: NC, NR        ! length of output vector
        INTEGER, INTENT(IN   ) :: P             ! max number of coefficients
        INTEGER, INTENT(IN   ) :: NX( NC*NR     ! # of entries per row
        INTEGER, INTENT(IN   ) :: IX( P )       ! columns list
        REAL   , INTENT(IN   ) :: U( MC, MR )   !  input vector
        REAL   , INTENT(  OUT) :: V( NC, NR )   ! output vector
        END SUBROUTINE  PMATVEC22

C version: none

Summary:

PMATVEC() multiplies the (0 | 1)-coefficient sparse matrix <NX,IX> by input vector U and return the resulting output vector V, as is done by the SMOKE emissions model in point-source gridding.
C(R) = SUMK=N(R-1)-1N(R) U(I(K))
See also subroutines
Bilinear interpolation package GRID2INDX(), PNTS2INDX(), and INDXMULT() from MODULE MODGCTP

BMATVEC and BILIN, DMATVEC, SMATVEC, and UNGRIDB

and programs
MTXBLEND, MTXBUILD, MTXCALC, MTXCPLE.

Fortran Usage:

For Fortran-90 declarations and interface checking:
    USE M3UTILIO
    

!! under construction !!


Previous: PERMUTI

Next: POLY

Up: Utility Routines

To: Models-3/EDSS I/O API: The Help Pages