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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c_jacobi02.c

?? program to solve a finite difference discretization of Helmholtz equation : (
?? C
字號:
/* ***********************************************************************  This program is part of the        OpenMP Source Code Repository        http://www.pcg.ull.es/ompscr/        e-mail: ompscr@etsii.ull.es   Copyright (c) 2004, OmpSCR Group   All rights reserved.   Redistribution and use in source and binary forms, with or without modification,    are permitted provided that the following conditions are met:     * Redistributions of source code must retain the above copyright notice,        this list of conditions and the following disclaimer.      * Redistributions in binary form must reproduce the above copyright notice,        this list of conditions and the following disclaimer in the documentation        and/or other materials provided with the distribution.      * Neither the name of the University of La Laguna nor the names of its contributors        may be used to endorse or promote products derived from this software without        specific prior written permission.    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,    OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY    OF SUCH DAMAGE.  FILE:              c_jacobi02.c  VERSION:           1.1  DATE:              Oct 2004  AUTHORS:           Author:       Joseph Robicheaux, Kuck and Associates, Inc. (KAI), 1998                     Modified:     Sanjiv Shah,       Kuck and Associates, Inc. (KAI), 1998                     This version: Dieter an Mey,     Aachen University (RWTH), 1999 - 2003                                   anmey@rz.rwth-aachen.de                                   http://www.rwth-aachen.de/People/D.an.Mey.html  COMMENTS TO:       ompscr@etsii.ull.es  DESCRIPTION:       program to solve a finite difference discretization of Helmholtz equation :                      (d2/dx2)u + (d2/dy2)u - alpha u = f using Jacobi iterative method.  COMMENTS:          OpenMP version 2: 2 parallel loops in one parallel region (PR)                       Directives are used in this code to achieve paralleism.                      All do loops are parallized with default 'static' scheduling.  REFERENCES:        http://www.rz.rwth-aachen.de/computing/hpc/prog/par/openmp/jacobi.html  BASIC PRAGMAS:     parallel for  USAGE:             ./c_jacobi02.par 5000 5000 0.8 1.0 1000  INPUT:             n - grid dimension in x direction                     m - grid dimension in y direction                     alpha - Helmholtz constant (always greater than 0.0)                     tol   - error tolerance for iterative solver                     relax - Successice over relaxation parameter                     mits  - Maximum iterations for iterative solver  OUTPUT:            Residual and error                      u(n,m) - Dependent variable (solutions)                     f(n,m) - Right hand side function   FILE FORMATS:      -  RESTRICTIONS:      -  REVISION HISTORY:**************************************************************************/#include <stdio.h>#include <math.h>#include <stdlib.h>#include "OmpSCR.h"#define U(i,j) u[(i)*n+(j)]#define F(i,j) f[(i)*n+(j)]#define NUM_ARGS  6#define NUM_TIMERS 1int n, m, mits;double tol, relax, alpha;void jacobi (int n, int m, double dx, double dy,              double alpha, double omega,              double *u, double *f,              double tol, int maxit );/******************************************************* Initializes data * Assumes exact solution is u(x,y) = (1-x^2)*(1-y^2)*******************************************************/void initialize(                  int n,                    int m,                double alpha,                double *dx,                double *dy,                double *u,                double *f){  int i,j,xx,yy;  *dx = 2.0 / (n-1);  *dy = 2.0 / (m-1);  /* Initilize initial condition and RHS */  for (j=0; j<m; j++){    for (i=0; i<n; i++){      xx = -1.0 + *dx * (i-1);      yy = -1.0 + *dy * (j-1);      U(j,i) = 0.0;      F(j,i) = -alpha * (1.0 - xx*xx) * (1.0 - yy*yy)                - 2.0 * (1.0 - xx*xx) - 2.0 * (1.0 - yy*yy);    }  }      }/************************************************************* Checks error between numerical and exact solution *************************************************************/void error_check(                 int n,                 int m,                 double alpha,                 double dx,                 double dy,                 double *u,                 double *f){  int i,j;  double xx, yy, temp, error;  dx = 2.0 / (n-1);  dy = 2.0 / (n-2);  error = 0.0;  for (j=0; j<m; j++){    for (i=0; i<n; i++){      xx = -1.0 + dx * (i-1);      yy = -1.0 + dy * (j-1);      temp = U(j,i) - (1.0 - xx*xx) * (1.0 - yy*yy);      error += temp*temp;    }  } error = sqrt(error)/(n*m);  printf("Solution Error : %g\n", error);}int main(int argc, char **argv){    double *u, *f, dx, dy;    double dt, mflops;    int NUMTHREADS;    char *PARAM_NAMES[NUM_ARGS] = {"Grid dimension: X dir =", "Grid dimension: Y dir =", "Helmhotlz constant =",                                    "Successive over-relaxation parameter =",                                    "error tolerance for iterative solver =", "Maximum iterations for solver ="};     char *TIMERS_NAMES[NUM_TIMERS] = {"Total_time"};    char *DEFAULT_VALUES[NUM_ARGS] = {"5000", "5000", "0.8", "1.0", "1e-7", "1000"};   NUMTHREADS = omp_get_max_threads();   OSCR_init (NUMTHREADS, "Jacobi Solver v1", "Use 'jacobi02' <n> <m> <alpha> <relax> <tol> <mits>", NUM_ARGS,                PARAM_NAMES, DEFAULT_VALUES , NUM_TIMERS, NUM_TIMERS, TIMERS_NAMES,                argc, argv);    n = OSCR_getarg_int(1);    m = OSCR_getarg_int(2);    alpha = OSCR_getarg_double(3);    relax = OSCR_getarg_double(4);    tol = OSCR_getarg_double(5);    mits = OSCR_getarg_int(6);    printf("-> %d, %d, %g, %g, %g, %d\n",           n, m, alpha, relax, tol, mits);        u = (double *) OSCR_malloc(n*m*sizeof(double));    f = (double *) OSCR_malloc(n*m*sizeof(double));    /* arrays are allocated and initialzed */    initialize(n, m, alpha, &dx, &dy, u, f);        /* Solve Helmholtz eqiation */    OSCR_timer_start(0);    jacobi(n, m, dx, dy, alpha, relax, u,f, tol, mits);    OSCR_timer_stop(0);    dt = OSCR_timer_read(0);    printf(" elapsed time : %12.6f\n", dt);    mflops = (0.000001*mits*(m-2)*(n-2)*13) / dt;    printf(" MFlops       : %12.6g (%d, %d, %d, %g)\n",mflops, mits, m, n, dt);    error_check(n, m, alpha, dx, dy, u, f);       OSCR_report(1, TIMERS_NAMES);       return 0;}/*       subroutine jacobi (n,m,dx,dy,alpha,omega,u,f,tol,maxit)******************************************************************* Subroutine HelmholtzJ* Solves poisson equation on rectangular grid assuming : * (1) Uniform discretization in each direction, and * (2) Dirichlect boundary conditions * * Jacobi method is used in this routine ** Input : n,m   Number of grid points in the X/Y directions *         dx,dy Grid spacing in the X/Y directions *         alpha Helmholtz eqn. coefficient *         omega Relaxation factor *         f(n,m) Right hand side function *         u(n,m) Dependent variable/Solution*         tol    Tolerance for iterative solver *         maxit  Maximum number of iterations ** Output : u(n,m) - Solution ******************************************************************/void jacobi ( const int n, const int m, double dx, double dy, double alpha, 	double omega, double *u, double *f, double tol, int maxit ){  int i,j,k;  double error, resid, ax, ay, b;  double *uold;  /* wegen Array-Kompatibilitaet, werden die Zeilen und Spalten (im Kopf)	 getauscht, zB uold[spalten_num][zeilen_num]; bzw. wir tuen so, als ob wir das	 gespiegelte Problem loesen wollen */  uold = (double *)OSCR_malloc(sizeof(double) * n *m);  ax = 1.0/(dx * dx); /* X-direction coef */  ay = 1.0/(dy*dy); /* Y_direction coef */  b = -2.0/(dx*dx)-2.0/(dy*dy) - alpha; /* Central coeff */  error = 10.0 * tol;  k = 1;  while (k <= maxit && error > tol) {	error = 0.0;#pragma omp parallel private(resid, i)	{	  /* copy new solution into old */#pragma omp for	  for (j=0; j<m; j++)		for (i=0; i<n; i++)		  uold[i + m*j] = u[i + m*j];	  /* compute stencil, residual and update */#pragma omp for reduction(+:error)	  for (j=1; j<m-1; j++)		for (i=1; i<n-1; i++){		  resid =(				  ax * (uold[i-1 + m*j] + uold[i+1 + m*j])				  + ay * (uold[i + m*(j-1)] + uold[i + m*(j+1)])				  + b * uold[i + m*j] - f[i + m*j]				  ) / b;		  		  /* update solution */		  u[i + m*j] = uold[i + m*j] - omega * resid;		  /* accumulate residual error */		  error =error + resid*resid;		}        	} /* end parallel */	/* error check */	k++;    error = sqrt(error) /(n*m);  } /* while */  printf("Total Number of Iteratuons %d\n", k);  printf("Residual                   %.15f\n", error);  free(uold);} 	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品在线免费观看| 亚洲动漫第一页| 亚洲www啪成人一区二区麻豆| 日韩精品1区2区3区| 成人99免费视频| 91精品在线观看入口| 中文欧美字幕免费| 精品中文字幕一区二区小辣椒| 99精品一区二区| 久久蜜桃av一区精品变态类天堂 | 色狠狠av一区二区三区| 精品99久久久久久| 日韩中文字幕1| 91免费观看国产| 国产欧美中文在线| 久久爱www久久做| 欧美一区二区福利视频| 亚洲综合免费观看高清完整版在线| 国产91丝袜在线播放| 欧美成人一区二区| 奇米精品一区二区三区四区| 欧美午夜精品久久久久久超碰 | 久久九九国产精品| 免费成人在线观看| 欧美巨大另类极品videosbest| 综合久久久久久久| 成人夜色视频网站在线观看| 久久久不卡网国产精品二区| 激情综合网天天干| 精品精品欲导航| 美女脱光内衣内裤视频久久影院| 欧美无砖专区一中文字| 一区二区在线看| 91福利在线播放| 亚洲激情网站免费观看| bt7086福利一区国产| 亚洲精品亚洲人成人网| 色综合久久88色综合天天6| 亚洲欧美日韩国产综合在线| av动漫一区二区| 又紧又大又爽精品一区二区| 在线观看国产精品网站| 午夜欧美电影在线观看| 欧美精品三级日韩久久| 久久99国内精品| 久久精品在线免费观看| 92国产精品观看| 亚洲影视资源网| 欧美不卡一二三| 成人av电影在线播放| 亚洲曰韩产成在线| 91麻豆精品国产| 国产电影一区二区三区| 亚洲三级电影网站| 欧美日韩第一区日日骚| 精品一区二区在线视频| 国产欧美综合色| 欧美中文一区二区三区| 麻豆精品久久久| 国产精品高潮呻吟久久| 欧美日韩在线播放| 九一九一国产精品| 国产精品盗摄一区二区三区| 欧美人伦禁忌dvd放荡欲情| 激情丁香综合五月| 亚洲人成网站精品片在线观看| 欧美在线制服丝袜| 国产裸体歌舞团一区二区| 亚洲免费伊人电影| 精品动漫一区二区三区在线观看| 成人性生交大合| 婷婷综合五月天| 国产三级一区二区| 欧美自拍丝袜亚洲| 国产在线精品一区二区三区不卡| 日韩理论电影院| 精品国产污网站| 91国偷自产一区二区三区观看| 美女视频一区二区三区| 亚洲免费在线看| 国产日韩欧美制服另类| 欧美日韩和欧美的一区二区| 国产jizzjizz一区二区| 日韩成人精品在线| 亚洲三级免费电影| 国产喂奶挤奶一区二区三区| 8v天堂国产在线一区二区| 成人avav影音| 国产99久久精品| 久久精品72免费观看| 亚洲午夜av在线| 日韩码欧中文字| 欧美激情一区二区| 日韩欧美123| 欧美精品 国产精品| 97se狠狠狠综合亚洲狠狠| 粉嫩在线一区二区三区视频| 美腿丝袜亚洲色图| 亚洲一区免费观看| 一区二区三区自拍| 中文字幕一区不卡| 亚洲国产精品v| 国产欧美精品一区aⅴ影院 | 91精品国产综合久久香蕉麻豆| www.欧美精品一二区| 国产精品一区二区三区乱码| 久久精品免费看| 日本在线不卡视频| 香蕉影视欧美成人| 亚洲五月六月丁香激情| 亚洲二区视频在线| 亚洲综合色丁香婷婷六月图片| 亚洲欧美偷拍卡通变态| 国产精品护士白丝一区av| 国产人成一区二区三区影院| 国产女主播视频一区二区| 欧美国产日韩一二三区| 国产精品美女久久久久久| 中日韩免费视频中文字幕| 国产欧美一区二区精品性色| 日本一区二区成人| 亚洲国产精品v| 日韩理论片中文av| 亚洲午夜日本在线观看| 午夜精品福利在线| 日本欧美在线看| 国内成人自拍视频| 粉嫩蜜臀av国产精品网站| 成人黄色大片在线观看| 不卡电影一区二区三区| 91在线精品秘密一区二区| 91久久精品午夜一区二区| 欧美视频三区在线播放| 欧美精品精品一区| 精品国产成人系列| 国产精品丝袜久久久久久app| 日韩电影在线观看一区| 石原莉奈在线亚洲二区| 精品一二线国产| jlzzjlzz亚洲女人18| 在线亚洲欧美专区二区| 91精品欧美久久久久久动漫| 久久你懂得1024| 一区二区三区四区视频精品免费 | 国产一区激情在线| 成人国产视频在线观看| 日本精品视频一区二区三区| 在线播放/欧美激情| 国产网站一区二区| 亚洲国产日日夜夜| 国内成+人亚洲+欧美+综合在线| 成人国产精品免费观看动漫 | 久久久欧美精品sm网站| 亚洲欧美电影院| 日本不卡123| va亚洲va日韩不卡在线观看| 欧美一级搡bbbb搡bbbb| 国产精品免费久久| 日韩精品久久理论片| 波多野洁衣一区| 5月丁香婷婷综合| 国产精品久久久久影院| 免费看日韩精品| 91小视频免费看| 久久久噜噜噜久久中文字幕色伊伊 | 欧美日韩国产小视频| 久久嫩草精品久久久精品一| 一区二区三区中文免费| 国产成人av影院| 日韩欧美专区在线| 亚洲一区二区视频| 成人高清免费在线播放| 欧美大黄免费观看| 五月婷婷久久丁香| 一本到一区二区三区| 欧美激情在线看| 国产在线看一区| 日韩欧美一区二区不卡| 亚洲狠狠丁香婷婷综合久久久| 粉嫩av亚洲一区二区图片| 日韩精品一区二区三区四区视频 | 日韩一区二区三区视频| 亚洲欧美日韩电影| 成人av在线一区二区| 精品免费国产二区三区| 日韩和欧美的一区| 欧美老人xxxx18| 亚洲精品精品亚洲| 成人性生交大片免费看视频在线| 欧美视频一区二区三区| 亚洲制服欧美中文字幕中文字幕| 岛国精品一区二区| 色综合久久中文综合久久97| 久久免费国产精品| 日韩中文字幕区一区有砖一区 | 午夜视频一区二区三区| 国产精品18久久久久久久久| 久久免费国产精品| 免费久久99精品国产| 欧美男生操女生|