Path: blob/devel/elmergrid/src/metis-5.1.0/libmetis/fortran.c
3206 views
/*1* Copyright 1997, Regents of the University of Minnesota2*3* fortran.c4*5* This file contains code for the fortran to C interface6*7* Started 8/19/978* George9*10*/1112#include "metislib.h"131415/*************************************************************************/16/*! This function changes the numbering to start from 0 instead of 1 */17/*************************************************************************/18void Change2CNumbering(idx_t nvtxs, idx_t *xadj, idx_t *adjncy)19{20idx_t i;2122for (i=0; i<=nvtxs; i++)23xadj[i]--;2425for (i=0; i<xadj[nvtxs]; i++)26adjncy[i]--;27}282930/*************************************************************************/31/*! This function changes the numbering to start from 1 instead of 0 */32/*************************************************************************/33void Change2FNumbering(idx_t nvtxs, idx_t *xadj, idx_t *adjncy, idx_t *vector)34{35idx_t i;3637for (i=0; i<nvtxs; i++)38vector[i]++;3940for (i=0; i<xadj[nvtxs]; i++)41adjncy[i]++;4243for (i=0; i<=nvtxs; i++)44xadj[i]++;45}4647/*************************************************************************/48/*! This function changes the numbering to start from 1 instead of 0 */49/*************************************************************************/50void Change2FNumbering2(idx_t nvtxs, idx_t *xadj, idx_t *adjncy)51{52idx_t i, nedges;5354nedges = xadj[nvtxs];55for (i=0; i<nedges; i++)56adjncy[i]++;5758for (i=0; i<=nvtxs; i++)59xadj[i]++;60}61626364/*************************************************************************/65/*! This function changes the numbering to start from 1 instead of 0 */66/*************************************************************************/67void Change2FNumberingOrder(idx_t nvtxs, idx_t *xadj, idx_t *adjncy,68idx_t *v1, idx_t *v2)69{70idx_t i, nedges;7172for (i=0; i<nvtxs; i++) {73v1[i]++;74v2[i]++;75}7677nedges = xadj[nvtxs];78for (i=0; i<nedges; i++)79adjncy[i]++;8081for (i=0; i<=nvtxs; i++)82xadj[i]++;8384}85868788/*************************************************************************/89/*! This function changes the numbering to start from 0 instead of 1 */90/*************************************************************************/91void ChangeMesh2CNumbering(idx_t n, idx_t *ptr, idx_t *ind)92{93idx_t i;9495for (i=0; i<=n; i++)96ptr[i]--;97for (i=0; i<ptr[n]; i++)98ind[i]--;99}100101102/*************************************************************************/103/*! This function changes the numbering to start from 1 instead of 0 */104/*************************************************************************/105void ChangeMesh2FNumbering(idx_t n, idx_t *ptr, idx_t *ind, idx_t nvtxs,106idx_t *xadj, idx_t *adjncy)107{108idx_t i;109110for (i=0; i<ptr[n]; i++)111ind[i]++;112for (i=0; i<=n; i++)113ptr[i]++;114115for (i=0; i<xadj[nvtxs]; i++)116adjncy[i]++;117for (i=0; i<=nvtxs; i++)118xadj[i]++;119}120121122/*************************************************************************/123/*! This function changes the numbering to start from 1 instead of 0 */124/*************************************************************************/125void ChangeMesh2FNumbering2(idx_t ne, idx_t nn, idx_t *ptr, idx_t *ind,126idx_t *epart, idx_t *npart)127{128idx_t i;129130for (i=0; i<ptr[ne]; i++)131ind[i]++;132for (i=0; i<=ne; i++)133ptr[i]++;134135for (i=0; i<ne; i++)136epart[i]++;137138for (i=0; i<nn; i++)139npart[i]++;140}141142143144