[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

# solvers and tasks

- To: femm@yahoogroups.com
- Subject: solvers and tasks
- From: "Chirkov U.O." <chirkov@ipp.adam.kiev.ua>
- Date: Mon, 11 Jun 2001 16:22:34 +0300
- Organization: IPP
- Reply-to: "Chirkov U.O." <chirkov@ipp.adam.kiev.ua>

    Hello, everybody!

    I am A.Chirkov. I have been occupied for about 20 years
    with the creation of methods and programms for solving sparse
    systems of high order algebraic equations.
    I work out direct and iterative solvers of systems of linear
    and non-linear equations and iterative methods for solving
    eigenvalues problems.
    I consider symmetric, non-singular, sparse matrices (can be not band).
    Applications which reduce to sparse matrices are well-known.
    One of them is the finite element method (FEM).
    I have the experience of solving such tasks. The methods I propose
    solve large systems of equations (10000-100000) quite quickly, even on PC.
    Programm codes use FORTRAN-90 & WIN32 API.
    I am interested in solving such tasks.

    For preparing of input data NASA Matrix Format is used:

    *****************************************************
    * MATRIX FORMAT *
    *****************************************************

    SOLVE: [A] {x} = {y}, where

    [A] = MATRIX (i.e. Stiffness) and
    {y} = RIGHT HAND SIDE (i.e. load)
    {x} = SOLUTION

    6 INPUT FILES :

    1. "INFO" : NUMBER OF EQUATIONS AND NUMBER OF RIGHT HAND SIDES
    2. "PTRS" : NUMBER OF NON-DIAGONAL COEFFICIENTS IN EACH ROW
    3. "INDXS" : COLUMN LOCATION OF EACH COEFFICIENT
    4. "COEFS" : COEFFICIENTS IN ROW FORMAT
    5. "DIAG" : DIAGONAL TERMS
    6. "RHS" : RIGHT HAND SIDE

    1 OUTPUT FILE :

    1. "RES" : SOLUTION

    !----------------------------------------------------------------------------

    EXAMPLE FOR INPUT DATA:

    1 2 3 4 5 6

    1 | 100 1 2 5 | | X1 | | 201 |
    2 | 200 6 7 9 | | X2 | | 202 |
    3 | 300 10 11 12 | | X3 | | 203 |
    A = 4 | 400 13 14 | | X4 | = | 204 |
    5 | 500 15 | | X5 | | 205 |
    6 | 600 | | X6 | | 206 |

    NUMBER OF EQUATIONS = 6

    NUMBER OF RIGHT HAND SIDE = 1

    1. "INFO" = JF, NEQ, NRHS = { 0, 6, 1 }

    2. "PTRS" = { 3, 3, 3, 2, 1, 0 }

    3. "INDXS" = { 2, 3, 6, 3, 4, 6, 4, 5, 6, 5, 6, 6 }

    4. "COEFS" = { 1, 2, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15 }

    5. "DIAG" = { 100, 200, 300, 400, 500, 600 }

    6. "RHS" = { 201, 202, 203, 204, 205, 206 }

    Note: First "INFO" parameter is 0 by default, else:

    JF = DOF - degree of freedom in node.

    !****************************************************************************
    CREATE FILES :
    !****************************************************************************

    1. ASCII FORMAT : All files are in ASCII FORMAT

    !---------------------------------------------------------------------------

    2. INPUT BINARY FORMAT ( preferably ) :

    EXAMPLE OF FORTRAN PROGRAM FRAGMENT FOR CREATING INPUT DATA:

    Let as : NEQ - NUMBER OF EQUATIONS;
    IRNP - NUMBER OF COEFFICIENTS;
    NRHS - NUMBER OF RIGHT HAND SIDE

    1. "INFO" : JF, NEQ, NRHS

    2. "PTRS" : JM ( NEQ )

    3. "INDXS" : MS ( IRNP )

    4. "COEFS" : A ( IRNP ) - MATRIX

    5. "DIAG" : DIAG ( NEQ ) - DIAGONAL TERMS

    6. "RHS" : RHS ( NEQ, NRHS ) - RIGHT HANDS

    !****************************************************************************

    INTEGER ( KIND = 4 ) :: JF, NEQ, NRHS, IRNP

    INTEGER ( KIND = 4 ) :: JM ( NEQ ), MS ( IRNP )

    DOUBLE PRECISION :: A ( IRNP ), DIAG ( NEQ ), RHS ( NEQ, NRHS )

    OPEN (1, FILE = "INFO", ACTION = "WRITE", FORM = "BINARY", &
    ACCESS = "SEQUENTIAL", STATUS = "UNKNOWN" )

    WRITE (1, ERR=1 ) JF, NEQ, NRHS

    CLOSE (1, STATUS = "KEEP" )

    OPEN (1, FILE = "PTRS", ACTION = "WRITE", FORM = "BINARY", &
    ACCESS = "SEQUENTIAL", STATUS = "UNKNOWN" )

    WRITE (1, ERR=1 ) JM

    CLOSE (1, STATUS = "KEEP" )

    OPEN (1, FILE = "INDXS", ACTION = "WRITE", FORM = "BINARY", &
    ACCESS = "SEQUENTIAL", STATUS = "UNKNOWN" )

    WRITE (1, ERR=1 ) MS

    CLOSE (1, STATUS = "KEEP" )

    OPEN (1, FILE = "COEFS", ACTION = "WRITE", FORM = "BINARY", &
    ACCESS = "SEQUENTIAL", STATUS = "UNKNOWN" )

    WRITE (1, ERR=1 ) A

    CLOSE (1, STATUS = "KEEP" )

    OPEN (1, FILE = "DIAG", ACTION = "WRITE", FORM = "BINARY", &
    ACCESS = "SEQUENTIAL", STATUS = "UNKNOWN" )

    WRITE (1, ERR=1 ) DIAG

    CLOSE (1, STATUS = "KEEP" )

    OPEN (1, FILE = "RHS", RECL = 8 * NEQ, ACTION = "WRITE", &
    ACCESS = "DIRECT", STATUS = "UNKNOWN" )

    DO IRHS = 1, NRHS

    WRITE (1, REC = IRHS, ERR=6 ) RHS ( :, IRHS )

    END DO

    CLOSE (1, STATUS = "KEEP" )

    !****************************************************************************

    OUTPUT BINARY FORMAT : "RES" - SOLUTION

    EXAMPLE FORTRAN PROGRAM FOR READING OUTPUT DATA:

    !----------------------------------------------------------------------------

    DOUBLE PRECISION :: X ( NEQ, NRHS )

    OPEN (1, FILE = "RES", RECL = 8 * NEQ, ACTION = "READ", &
    ACCESS = "DIRECT", STATUS = "OLD" )

    DO IRHS = 1, NRHS

    READ (1, REC = IRHS, ERR=6 ) X ( :, IRHS )

    END DO

    CLOSE (1, STATUS = "KEEP" )

    ------------------------------------------------------------------------------

    Regards, Chirkov laboratory.

    MAILTO: CHIRKOV@IPP.ADAM.KIEV.UA

- Prev by Date: Femme-lua (batch processing)
- Next by Date: Re: [femm] Femme-lua (batch processing)
- Previous by thread: RE: [femm] Femme-lua (batch processing)
- Next by thread: Force calculations on magnetostatic problems...
- Index(es):
  - Date
  - Thread