亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mesh.c

?? Handles Hexahedral, Tetrahedral, Quadrilateral, and Triangle meshes. Lagrangian, Hierarchic, and Mon
?? C
字號(hào):
/* * Copyright 1997, Regents of the University of Minnesota * * mesh.c * * This file contains routines for converting 3D and 4D finite element * meshes into dual or nodal graphs * * Started 8/18/97 * George * * $Id: mesh.c,v 1.5 2004/03/08 04:58:28 benkirk Exp $ * */#include <metis.h>/****************************************************************************** This function creates a graph corresponding to the dual of a finite element* mesh. At this point the supported elements are triangles, tetrahedrons, and* bricks.******************************************************************************/void METIS_MeshToDual(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag,                       idxtype *dxadj, idxtype *dadjncy){  int esizes[] = {-1, 3, 4, 8, 4};  if (*numflag == 1)    ChangeMesh2CNumbering((*ne)*esizes[*etype], elmnts);  GENDUALMETIS(*ne, *nn, *etype, elmnts, dxadj, dadjncy);  if (*numflag == 1)    ChangeMesh2FNumbering((*ne)*esizes[*etype], elmnts, *ne, dxadj, dadjncy);}/****************************************************************************** This function creates a graph corresponding to the finite element mesh. * At this point the supported elements are triangles, tetrahedrons.******************************************************************************/void METIS_MeshToNodal(int *ne, int *nn, idxtype *elmnts, int *etype, int *numflag,                        idxtype *dxadj, idxtype *dadjncy){  int esizes[] = {-1, 3, 4, 8, 4};  if (*numflag == 1)    ChangeMesh2CNumbering((*ne)*esizes[*etype], elmnts);  switch (*etype) {    case 1:      TRINODALMETIS(*ne, *nn, elmnts, dxadj, dadjncy);      break;    case 2:      TETNODALMETIS(*ne, *nn, elmnts, dxadj, dadjncy);      break;    case 3:      HEXNODALMETIS(*ne, *nn, elmnts, dxadj, dadjncy);      break;    case 4:      QUADNODALMETIS(*ne, *nn, elmnts, dxadj, dadjncy);      break;  }  if (*numflag == 1)    ChangeMesh2FNumbering((*ne)*esizes[*etype], elmnts, *nn, dxadj, dadjncy);}/****************************************************************************** This function creates the dual of a finite element mesh******************************************************************************/void GENDUALMETIS(int nelmnts, int nvtxs, int etype, idxtype *elmnts, idxtype *dxadj,                   idxtype *dadjncy){   int i, j, jj, k, kk, kkk, l, m, n, nedges, mask;   idxtype *nptr, *nind;   idxtype *mark, ind[200], wgt[200];   int esize, esizes[] = {-1, 3, 4, 8, 4},       mgcnum, mgcnums[] = {-1, 2, 3, 4, 2};   mask = (1<<11)-1;   mark = idxsmalloc(mask+1, -1, "GENDUALMETIS: mark");   /* Get the element size and magic number for the particular element */   esize = esizes[etype];   mgcnum = mgcnums[etype];   /* Construct the node-element list first */   nptr = idxsmalloc(nvtxs+1, 0, "GENDUALMETIS: nptr");   for (j=esize*nelmnts, i=0; i<j; i++)      nptr[elmnts[i]]++;   MAKECSR(i, nvtxs, nptr);   nind = idxmalloc(nptr[nvtxs], "GENDUALMETIS: nind");   for (k=i=0; i<nelmnts; i++) {     for (j=0; j<esize; j++, k++)        nind[nptr[elmnts[k]]++] = i;   }   for (i=nvtxs; i>0; i--)     nptr[i] = nptr[i-1];   nptr[0] = 0;   for (i=0; i<nelmnts; i++)      dxadj[i] = esize*i;   for (i=0; i<nelmnts; i++) {     for (m=j=0; j<esize; j++) {       n = elmnts[esize*i+j];       for (k=nptr[n+1]-1; k>=nptr[n]; k--) {         if ((kk = nind[k]) <= i)           break;         kkk = kk&mask;         if ((l = mark[kkk]) == -1) {           ind[m] = kk;           wgt[m] = 1;           mark[kkk] = m++;         }         else if (ind[l] == kk) {           wgt[l]++;         }         else {           for (jj=0; jj<m; jj++) {             if (ind[jj] == kk) {               wgt[jj]++;               break;             }           }           if (jj == m) {             ind[m] = kk;             wgt[m++] = 1;           }         }       }     }     for (j=0; j<m; j++) {       if (wgt[j] == mgcnum) {         k = ind[j];         dadjncy[dxadj[i]++] = k;         dadjncy[dxadj[k]++] = i;       }       mark[ind[j]&mask] = -1;     }   }   /* Go and consolidate the dxadj and dadjncy */   for (j=i=0; i<nelmnts; i++) {     for (k=esize*i; k<dxadj[i]; k++, j++)       dadjncy[j] = dadjncy[k];     dxadj[i] = j;   }   for (i=nelmnts; i>0; i--)     dxadj[i] = dxadj[i-1];   dxadj[0] = 0;   free(mark);   free(nptr);   free(nind);}/****************************************************************************** This function creates the nodal graph of a finite element mesh******************************************************************************/void TRINODALMETIS(int nelmnts, int nvtxs, idxtype *elmnts, idxtype *dxadj, idxtype *dadjncy){   int i, j, jj, k, kk, kkk, l, m, n, nedges;   idxtype *nptr, *nind;   idxtype *mark;   /* Construct the node-element list first */   nptr = idxsmalloc(nvtxs+1, 0, "TRINODALMETIS: nptr");   for (j=3*nelmnts, i=0; i<j; i++)      nptr[elmnts[i]]++;   MAKECSR(i, nvtxs, nptr);   nind = idxmalloc(nptr[nvtxs], "TRINODALMETIS: nind");   for (k=i=0; i<nelmnts; i++) {     for (j=0; j<3; j++, k++)        nind[nptr[elmnts[k]]++] = i;   }   for (i=nvtxs; i>0; i--)     nptr[i] = nptr[i-1];   nptr[0] = 0;   mark = idxsmalloc(nvtxs, -1, "TRINODALMETIS: mark");   nedges = dxadj[0] = 0;   for (i=0; i<nvtxs; i++) {     mark[i] = i;     for (j=nptr[i]; j<nptr[i+1]; j++) {       for (jj=3*nind[j], k=0; k<3; k++, jj++) {         kk = elmnts[jj];         if (mark[kk] != i) {           mark[kk] = i;           dadjncy[nedges++] = kk;         }       }     }     dxadj[i+1] = nedges;   }   free(mark);   free(nptr);   free(nind);}/****************************************************************************** This function creates the nodal graph of a finite element mesh******************************************************************************/void TETNODALMETIS(int nelmnts, int nvtxs, idxtype *elmnts, idxtype *dxadj, idxtype *dadjncy){   int i, j, jj, k, kk, kkk, l, m, n, nedges;   idxtype *nptr, *nind;   idxtype *mark;   /* Construct the node-element list first */   nptr = idxsmalloc(nvtxs+1, 0, "TETNODALMETIS: nptr");   for (j=4*nelmnts, i=0; i<j; i++)      nptr[elmnts[i]]++;   MAKECSR(i, nvtxs, nptr);   nind = idxmalloc(nptr[nvtxs], "TETNODALMETIS: nind");   for (k=i=0; i<nelmnts; i++) {     for (j=0; j<4; j++, k++)        nind[nptr[elmnts[k]]++] = i;   }   for (i=nvtxs; i>0; i--)     nptr[i] = nptr[i-1];   nptr[0] = 0;   mark = idxsmalloc(nvtxs, -1, "TETNODALMETIS: mark");   nedges = dxadj[0] = 0;   for (i=0; i<nvtxs; i++) {     mark[i] = i;     for (j=nptr[i]; j<nptr[i+1]; j++) {       for (jj=4*nind[j], k=0; k<4; k++, jj++) {         kk = elmnts[jj];         if (mark[kk] != i) {           mark[kk] = i;           dadjncy[nedges++] = kk;         }       }     }     dxadj[i+1] = nedges;   }   free(mark);   free(nptr);   free(nind);}/****************************************************************************** This function creates the nodal graph of a finite element mesh******************************************************************************/void HEXNODALMETIS(int nelmnts, int nvtxs, idxtype *elmnts, idxtype *dxadj, idxtype *dadjncy){   int i, j, jj, k, kk, kkk, l, m, n, nedges;   idxtype *nptr, *nind;   idxtype *mark;   int table[8][3] = {1, 3, 4,                      0, 2, 5,                      1, 3, 6,                      0, 2, 7,                      0, 5, 7,                      1, 4, 6,                      2, 5, 7,                      3, 4, 6};   /* Construct the node-element list first */   nptr = idxsmalloc(nvtxs+1, 0, "HEXNODALMETIS: nptr");   for (j=8*nelmnts, i=0; i<j; i++)      nptr[elmnts[i]]++;   MAKECSR(i, nvtxs, nptr);   nind = idxmalloc(nptr[nvtxs], "HEXNODALMETIS: nind");   for (k=i=0; i<nelmnts; i++) {     for (j=0; j<8; j++, k++)        nind[nptr[elmnts[k]]++] = i;   }   for (i=nvtxs; i>0; i--)     nptr[i] = nptr[i-1];   nptr[0] = 0;   mark = idxsmalloc(nvtxs, -1, "HEXNODALMETIS: mark");   nedges = dxadj[0] = 0;   for (i=0; i<nvtxs; i++) {     mark[i] = i;     for (j=nptr[i]; j<nptr[i+1]; j++) {       jj=8*nind[j];       for (k=0; k<8; k++) {         if (elmnts[jj+k] == i)           break;       }       ASSERT(k != 8);       /* You found the index, now go and put the 3 neighbors */       kk = elmnts[jj+table[k][0]];       if (mark[kk] != i) {         mark[kk] = i;         dadjncy[nedges++] = kk;       }       kk = elmnts[jj+table[k][1]];       if (mark[kk] != i) {         mark[kk] = i;         dadjncy[nedges++] = kk;       }       kk = elmnts[jj+table[k][2]];       if (mark[kk] != i) {         mark[kk] = i;         dadjncy[nedges++] = kk;       }     }     dxadj[i+1] = nedges;   }   free(mark);   free(nptr);   free(nind);}/****************************************************************************** This function creates the nodal graph of a finite element mesh******************************************************************************/void QUADNODALMETIS(int nelmnts, int nvtxs, idxtype *elmnts, idxtype *dxadj, idxtype *dadjncy){   int i, j, jj, k, kk, kkk, l, m, n, nedges;   idxtype *nptr, *nind;   idxtype *mark;   int table[4][2] = {1, 3,                       0, 2,                      1, 3,                       0, 2};    /* Construct the node-element list first */   nptr = idxsmalloc(nvtxs+1, 0, "QUADNODALMETIS: nptr");   for (j=4*nelmnts, i=0; i<j; i++)      nptr[elmnts[i]]++;   MAKECSR(i, nvtxs, nptr);   nind = idxmalloc(nptr[nvtxs], "QUADNODALMETIS: nind");   for (k=i=0; i<nelmnts; i++) {     for (j=0; j<4; j++, k++)        nind[nptr[elmnts[k]]++] = i;   }   for (i=nvtxs; i>0; i--)     nptr[i] = nptr[i-1];   nptr[0] = 0;   mark = idxsmalloc(nvtxs, -1, "QUADNODALMETIS: mark");   nedges = dxadj[0] = 0;   for (i=0; i<nvtxs; i++) {     mark[i] = i;     for (j=nptr[i]; j<nptr[i+1]; j++) {       jj=4*nind[j];       for (k=0; k<4; k++) {         if (elmnts[jj+k] == i)           break;       }       ASSERT(k != 4);       /* You found the index, now go and put the 2 neighbors */       kk = elmnts[jj+table[k][0]];       if (mark[kk] != i) {         mark[kk] = i;         dadjncy[nedges++] = kk;       }       kk = elmnts[jj+table[k][1]];       if (mark[kk] != i) {         mark[kk] = i;         dadjncy[nedges++] = kk;       }     }     dxadj[i+1] = nedges;   }   free(mark);   free(nptr);   free(nind);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
老汉av免费一区二区三区| 成人h精品动漫一区二区三区| 亚洲精品视频在线| 国产精品久久久久影院老司| 日本一区二区高清| 亚洲国产高清在线观看视频| 欧美精品一区二区三区蜜臀| 日韩无一区二区| 欧美一二三区在线观看| 精品美女被调教视频大全网站| 7777精品伊人久久久大香线蕉经典版下载 | 日韩一区二区视频在线观看| 欧美一区二区三区在| 欧美大片在线观看一区二区| 亚洲精品一区二区精华| 久久久99精品久久| 国产精品色噜噜| 一区视频在线播放| 亚洲国产日韩在线一区模特 | 国产成人精品三级麻豆| av不卡在线观看| 色av一区二区| 91精品国模一区二区三区| 制服丝袜成人动漫| 欧美电视剧免费观看| 国产人伦精品一区二区| 亚洲视频小说图片| 午夜精品免费在线| 精品在线观看视频| a亚洲天堂av| 欧美系列亚洲系列| 精品国内片67194| 国产精品久久久久影院色老大 | 欧美aⅴ一区二区三区视频| 麻豆精品一区二区综合av| 国产福利视频一区二区三区| 白白色 亚洲乱淫| 欧美三级电影在线观看| 日韩免费一区二区| 国产精品电影一区二区| 香蕉加勒比综合久久| 国产一区在线不卡| 色婷婷亚洲婷婷| 精品少妇一区二区三区在线视频| 日本一区二区三区视频视频| 亚洲一区二区三区爽爽爽爽爽| 精品一区免费av| 91丨porny丨首页| 日韩欧美资源站| 国产精品国产自产拍高清av| 日本在线不卡视频| av男人天堂一区| 欧美一级日韩一级| 亚洲人成在线观看一区二区| 另类小说图片综合网| 99久久精品免费看国产免费软件| 欧美老肥妇做.爰bbww视频| 久久久激情视频| 石原莉奈一区二区三区在线观看| 国产精品18久久久久久久久久久久| 欧美羞羞免费网站| 国产精品午夜电影| 久草热8精品视频在线观看| 日本韩国精品在线| 欧美国产一区二区在线观看 | 欧美午夜精品久久久| 久久久久久久久一| 日韩精品一卡二卡三卡四卡无卡| 成人污视频在线观看| 精品国产91乱码一区二区三区| 亚洲一区二区在线免费观看视频| 不卡欧美aaaaa| 精品99999| 免费av网站大全久久| 欧美影院精品一区| 中文欧美字幕免费| 美女性感视频久久| 欧美精品色一区二区三区| 最新热久久免费视频| 国产成人免费视频网站高清观看视频| 日韩一区二区三区高清免费看看| 亚洲综合在线视频| 91老师国产黑色丝袜在线| 久久蜜桃一区二区| 青青草原综合久久大伊人精品优势| 色狠狠色狠狠综合| 国产精品不卡一区二区三区| 国产尤物一区二区| 日韩你懂的在线观看| 日韩高清在线观看| 精品视频在线免费观看| 亚洲男人的天堂av| 91在线观看美女| 中文字幕在线一区| 粗大黑人巨茎大战欧美成人| 亚洲精品一区在线观看| 日本欧美久久久久免费播放网| 在线观看亚洲专区| 亚洲午夜视频在线观看| 欧美主播一区二区三区美女| 1区2区3区欧美| 色综合天天狠狠| 成人免费在线视频观看| 一本久久a久久免费精品不卡| 国产精品福利电影一区二区三区四区 | 高清在线不卡av| 国产色产综合产在线视频| 国产自产v一区二区三区c| 欧美videos大乳护士334| 秋霞av亚洲一区二区三| 日韩精品资源二区在线| 精品一区二区影视| 久久综合视频网| 福利电影一区二区| 中文字幕在线不卡一区| 91麻豆福利精品推荐| 中文字幕亚洲一区二区av在线| 91麻豆免费观看| 亚洲福利电影网| 欧美日韩国产在线观看| 亚洲国产精品久久不卡毛片| 91精品午夜视频| 激情五月激情综合网| 久久影院午夜片一区| 成人一级黄色片| 亚洲亚洲人成综合网络| 日韩欧美国产一区二区在线播放 | 国产成人h网站| 中文字幕日韩av资源站| 91国偷自产一区二区使用方法| 亚洲日本va午夜在线电影| 欧美视频一区二区| 日韩av网站免费在线| 精品少妇一区二区三区在线播放| 国产综合成人久久大片91| 自拍偷拍欧美精品| 欧美日韩国产电影| 国产在线精品一区二区夜色| 国产精品视频在线看| 在线免费不卡视频| 麻豆久久久久久| 国产精品第13页| 欧美一区二区三区在线观看视频| 国产高清久久久| 亚洲小说欧美激情另类| 欧美精品一区二区三区蜜桃| 9l国产精品久久久久麻豆| 天天爽夜夜爽夜夜爽精品视频| 久久久国产精品不卡| 欧美午夜不卡在线观看免费| 国产一区二区三区香蕉| 亚洲综合清纯丝袜自拍| 2020国产精品| 欧美日韩精品欧美日韩精品一| 国产成a人亚洲精品| 婷婷综合另类小说色区| 国产欧美日韩亚州综合| 欧美片网站yy| 91啪亚洲精品| 精品一区二区三区视频| 亚洲自拍偷拍麻豆| 国产欧美日韩久久| 91精品婷婷国产综合久久竹菊| 99这里都是精品| 国产在线视频一区二区| 首页欧美精品中文字幕| 中文字幕一区二区三区在线不卡 | 秋霞成人午夜伦在线观看| 亚洲欧洲三级电影| 精品国产乱码久久久久久牛牛| 日本伦理一区二区| 福利电影一区二区| 久久99精品网久久| 日韩精品一二三四| 国产精品久久久久久久久久久免费看| 日韩午夜av一区| 欧美撒尿777hd撒尿| aaa欧美色吧激情视频| 国产一区在线不卡| 亚洲福利一区二区三区| 国产精品卡一卡二卡三| 久久女同互慰一区二区三区| 337p亚洲精品色噜噜狠狠| 在线免费视频一区二区| av激情综合网| 成人av中文字幕| 国产精品资源网站| 美女尤物国产一区| 午夜精品视频在线观看| 亚洲在线成人精品| 一区二区三区四区激情| 国产精品久久久久久妇女6080 | 国产资源在线一区| 麻豆精品一区二区av白丝在线| 一区二区三区在线免费播放| 中文字幕亚洲电影| 国产精品毛片无遮挡高清| 欧美国产日产图区| 国产精品美女久久久久久久久久久 | 97se亚洲国产综合在线|