예제 #1
0
        /////////////////////////////////////////////////////////////////////////
        // Matrix-Vector Operations
        public static int Matvec(LisMatrix A, LisVector x, LisVector y)
        {
            int ret = 0;

            unsafe
            {
                ret = IvyFEM.Lis.ImportedFunctions.lis_matvec(A.Native, x.Native, y.Native);
            }
            return(ret);
        }
예제 #2
0
        public static int Solve(LisMatrix A, LisVector b, LisVector x, LisSolver solver)
        {
            int ret = 0;

            unsafe
            {
                ret = IvyFEM.Lis.ImportedFunctions.lis_solve(A.Native, b.Native, x.Native, solver.Native);
            }
            return(ret);
        }
예제 #3
0
        public static int VectorSetAll(LisScalar alpha, LisVector v)
        {
            int ret = 0;

            unsafe
            {
                ret = IvyFEM.Lis.ImportedFunctions.lis_vector_set_all(alpha, v.Native);
            }
            return(ret);
        }
예제 #4
0
        public static int VectorConjugate(LisVector v)
        {
            int ret = 0;

            unsafe
            {
                ret = IvyFEM.Lis.ImportedFunctions.lis_vector_conjugate(v.Native);
            }
            return(ret);
        }
예제 #5
0
        public static int VectorSetValue(SetValueFlag flag, int i, LisScalar value, LisVector v)
        {
            int ret = 0;

            unsafe
            {
                ret = IvyFEM.Lis.ImportedFunctions.lis_vector_set_value(flag, i, value, v.Native);
            }
            return(ret);
        }
예제 #6
0
        public static int VectorDestroy(LisVector v)
        {
            int ret = 0;

            unsafe
            {
                ret = IvyFEM.Lis.ImportedFunctions.lis_vector_destroy(v.Native);
            }
            return(ret);
        }
예제 #7
0
        public static int VectorSetSize(LisVector v, int localN, int globalN)
        {
            int ret = 0;

            unsafe
            {
                ret = IvyFEM.Lis.ImportedFunctions.lis_vector_set_size(v.Native, localN, globalN);
            }
            return(ret);
        }
예제 #8
0
        public static int VectorGetValues(LisVector v, int start, int count, LisScalar[] values)
        {
            int ret = 0;

            unsafe
            {
                fixed(LisScalar *valuesP = &values[0])
                {
                    ret = IvyFEM.Lis.ImportedFunctions.lis_vector_get_values(v.Native, start, count, valuesP);
                }
            }
            return(ret);
        }
예제 #9
0
        public static int VectorGetValue(LisVector v, int i, out LisScalar value)
        {
            int ret = 0;

            value = 0;
            unsafe
            {
                fixed(LisScalar *valueP = &value)
                {
                    ret = IvyFEM.Lis.ImportedFunctions.lis_vector_get_value(v.Native, i, valueP);
                }
            }
            return(ret);
        }
예제 #10
0
        /////////////////////////////////////////////////////////////////////////
        // Vector Operations
        public static int VectorCreate(int comm, LisVector v)
        {
            int ret = 0;

            unsafe
            {
                v.Native = null;
                fixed(NativeLisVector **nativeVPP = &v.Native)
                {
                    ret = IvyFEM.Lis.ImportedFunctions.lis_vector_create(comm, nativeVPP);
                }
            }
            return(ret);
        }
예제 #11
0
        public static int VectorGetRange(LisVector v, out int @is, out int ie)
        {
            int ret = 0;

            @is = 0;
            ie  = 0;
            unsafe
            {
                fixed(int *isP = & @is)
                fixed(int *ieP = &ie)
                {
                    ret = IvyFEM.Lis.ImportedFunctions.lis_vector_get_range(v.Native, isP, ieP);
                }
            }
            return(ret);
        }
예제 #12
0
        public static int VectorGetSize(LisVector v, out int localN, out int globalN)
        {
            int ret = 0;

            localN  = 0;
            globalN = 0;
            unsafe
            {
                fixed(int *localNP = &localN)
                fixed(int *globalNP = &globalN)
                {
                    ret = IvyFEM.Lis.ImportedFunctions.lis_vector_get_size(v.Native, localNP, globalNP);
                }
            }
            return(ret);
        }
예제 #13
0
        public static int VectorSetValues2(SetValueFlag flag, int start, int count, LisScalar[] values, LisVector v)
        {
            int ret = 0;

            unsafe
            {
                fixed(LisScalar *valuesP = &values[0])
                {
                    ret = IvyFEM.Lis.ImportedFunctions.lis_vector_set_values2(
                        flag, start, count, valuesP, v.Native);
                }
            }
            return(ret);
        }
예제 #14
0
 public static int Matvec(LisMatrix A, LisVector x, LisVector y)
 {
     return(IvyFEM.Lis.Functions.Matvec(A, x, y));
 }
예제 #15
0
 public int Solve(LisMatrix A, LisVector b, LisVector x)
 {
     return(IvyFEM.Lis.Functions.Solve(A, b, x, this));
 }