SlideShare a Scribd company logo
1 of 60
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
ADVENTURE_Thermal
の概要
九州大学
塩谷隆二
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
History of Adventure_Thermal
1996 Massively Parallel Computing for Large Scale Finite Elements R.Shioya
1997-2002 Adventure Project
2000.12.01 AdvSolid-0.8b
2000 領域分割法による 3 次元熱伝導解析 石川格
2001.11.14 AdvThermal-0.2b
2002 大規模並列弱連成解析 今村栄太
2002.03.01 AdvThermal-0.3b, AdvSolid-1.0(BDD)
2003 Study of Speed-up Technique of Large Scale Parallel FE. A.Mukaddes
2003.09.16 AdvSolid-1.1
2004 領域分割型有限要素法による超並列計算 荻野正雄
2005.07.11 AdvThermal-1.0(BDD)
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Functions added to ADVENTURE_Thermal
Version: 0.6b
01. Configure options ( install and compile)
02. BDD and BDD-DIAG solver
03. Bug fixed advthermal-p and advthermal-s
Version: 1.0
01. “mkbc4th” tool for convection and radiation boundary
conditions
02. “makefem_thermal” tool for flux boundary conditions
03. English manual ( with some example problems and tool
explanation)
04. Japanese manual (with some example problems, tool
explanation and BDD explanation )
Next Version
01. IBDD and IBDD-DIAG method
02. Time dependent boundary conditions
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )ADVENTURE_Thermal
 Steady / Non-steady Heat Conductive Analysis with HDDM
Version 1.0
プログラム使用マニュアル
1.1 本モジュールの特徴
ADVENTURE_Thermal は以下のような特徴を持っている .
・定常 / 非定常問題の解析が可能
・ 4 面体 1 次 /2 次要素に対応
・階層型領域分割法 (HDDM) による負荷分散並列処理が可
能
・線形ソルバにバランシング領域分割法 (BDD) が使用可能
・領域分割法を逐次処理するシングル版が使用可能
1.2 稼動環境
対応プラットホーム UNIX, Linux
並列通信ライブラリ MPI
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
1.3 コンパイルとインストール•
% configure --prefix=PREFIX
← シングル版実行モジュール
← 静的負荷分散版実行モジュール
← 動的負荷分散版実行モジュール
← 境界条件設定ツール
← 一体型 FEA モデル作成ツール
← 解析データ変換ツール
← 日本語ユーザーマニュアル
← 英語ユーザーマニュアル
← 日本語の簡易情報
← 英語の簡易情報
← 著作権規定
← ユーザーマニュアル
← ソースファイル
←fem ライブラリソースファイル
← サンプルデータ
← ツールソースファイル
$(HOME)/ADVENTURE/
bin/advthermal-s
bin/advthermal-p
bin/advthermal-h
bin/mkbc4th
bin/makefem_thermal
bin/so2th
doc/AdvThermal/manual-jp.pdf
doc/AdvThermal/manual-eg.pdf
doc/AdvThermal/README.ecuJP
doc/AdvThermal/README
doc/AdvThermal/copyright
$(ArchiveDir)/
doc/
hddmsrc/
libfem/
sample_data/
tools/
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
1.4 実行方法
% advthermal-s ./sample_data/conv
% mpirun –np 6 advthermal-h ./sample_data/conv
% mpirun –np 2 advthermal-p ./sample_data/conv
2.1 並列処理機能
(1) シングル版 ( モジュール名 : advthermal-s)
使用可能な線形方程式ソルバは HDDM
(2) 静的負荷分散版 ( モジュール名 : advthermal-p)
使用可能な線形方程式ソルバは HDDM, BDD, BDD-DIAG, IBDD, IBDD-
DIAG
(3) 動的負荷分散版 ( モジュール名 : advthermal-h)
使用可能な線形方程式ソルバは HDDM, BDD, BDD-DIAG
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
vectorNormal:n
][retemperatuExternal:
tcoefficienferHeat trans:
generationheatInternal:
heatSpecifice:
Density:
][onappliedeTemperatur:u
onappliedfluxHeat:Q
retemperatuofderivativeTime:
t
u
tyconductiviThermal:
rflux vectoHeat:q
][eTemperatur:
C
u
Q
Cu
f
C
C
Cu
o
C
o
o
α
ρ
λ
Γ
Γ
∂
∂
u
_
Q
on
on0
on0)(
indiv
ingrad
Γ=
Γ=−⋅
Γ=−−⋅
Ω+−=
∂
∂
Ω−=
uu
Qnq
uunq
fq
t
u
c
uq
CCC
α
ρ
λ
uΓ
Heat conductive problem
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Finite Element (quadratic tetrahedral) Approximation
)}({}{}{)}({
][})]({[})]({[
)}({}})]{({[
}{
})]({[
tRRRtf
KuKuK
tfuuK
dt
ud
uC
hfq
hc
++=
+=
=+
convectionsurfacefromarisingVector:)}({
generationheatinternalfromarisingVector:}{
fluxheatfromarisingVector:}{
convectiontorelatedMatrix:][
conductiontorelatedMatrix:})]({[
matrixStifness:})]({[
matrixeCapacitanc:}]({[
retemperatunodalofVector:}{
tR
R
R
K
uK
uK
uC
u
h
f
q
h
c
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Time Discretized Equation
nnnnnnn
uKtCftuKtC }){][)1(]([}{}){][]([ 1
∆−−+∆=∆+ +
ϕϕ
sec)increment(time:t
size(mm)meshminimum:
3
)schemedifferenceBackward(1
∆
=
=
h
m
ϕ
This equation is solved by Domain Decomposition Method in
each time integration loop
)2)(1(
2
)1( 2
++
≤
∆
−
mmh
t
ϕλ
Stability condition :
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Domain decomposition
Interface
Domain Decomposition Method (DDM).
gSuB =
fKu =
Original finite element problem:
Analysis domain
After eliminating interior DOF, we get a reduced
problem on interface, called the interface
problem,
local Schur
complement
( ) ( ) ( ) ( )( ) ( )i
IB
i
II
Ti
IB
i
BB
i KKKKS
1−
−=
Schur complement matrix( ) ( ) ( )∑= =
N
i
Tiii RSRS 1
( )
( )
( ) ( )iTi
i
i
:R
:f
:K
Ω→Ω restriction operator
local stiffness matrix
local RHS vector
I : interior dofs, B : interface dofs
where
Interior
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
解析領域の全体モデル
分割モデル
( Step 1 )
分割モデル
( Step 2 )
部分 (Part)
Part 1 Part 2 Part 3
部分領域 (Subdomain)
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
領域 0
領域 1
領域 2
領域 3
部分 0
領域 4
領域 5
領域 6
領域 7
部分 1
CPU1
図 2 :領域の CPU への割り当て―シングル版
シングル版 ( モジュール名 : advthermal-s)
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
領域 0
領域 1
部分 0
CPU1
領域 6
領域 7
部分 3
CPU4
領域 8
領域 9
部分 4
CPU5
領域 2
領域 3
部分 1
CPU2
領域 4
領域 5
部分 2
CPU3
図 3 :領域の CPU への割り当て―静的負荷分散版
静的負荷分散版 ( モジュール名 : advthermal-p)
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
領域 1
領域 2
領域 3
部分 0
領域 0
CPU1
親 1
領域 5
領域 6
領域 7
部分 1
領域 4
CPU2
親 2
領域 0
領域 3
領域 2 領域 1 領域 4 領域 5 領域 6
領域 7
CPU3 CPU4 CPU5
子 1 子 2 子 3
図 4 :領域の CPU への割り当て―動的負荷分散版
動的負荷分散版 ( モジュール名 : advthermal-h)
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Hierarchical Domain Decomposition
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
$(ArchiveDir)/
hddmsrc/
libfem/
sample_data/
tools/
← ソースファイル
←fem ライブラリソースファイル
← サンプルデータ
← ツールソースファイル
Source Files
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
hddmsrc/hddm_types.h
typedef struct {
int domid ; /* subdomain id in its own part */
int gdomid ;/* global id of domid */
int partid ;
int nel ; /* number of elements */
int nnd ; /* nodes */
int ntemp ; /* temp b.c. */
int nflux ; /* flux b.c. */
int nconv ; /* conv b.c. */
int nradi ; /* radi b.c. */
int ninbd ; /* inner-domain b.c. */
int nsharenode;
int nd_elm ;
int nd_elm2 ;
int *nop ;
int *ndindex ;
Inbc *inbd ;
Bcond *bctemp ;
Bcond *bcflux ;
Bconv *bcconv ;
Bradi *bcradi ;
Sharenode *sharenode;
Slist *bclist ; /*+ Set of
boundary conditions +*/
char elm_type[128] ;
double *temp ;
double *oldtmp ;
double *force ;
double *flux ;
double *crd ;
/* material */
int have_matid ;
int *matid ;
int nmat ;
Material *mat ;
} DomMesh ;
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
typedef struct {
int partid ;
int n_part ;
int n_domain ; /* Number of in domains */
int n_outdom ; /* Number of out domains */
int t_nnd ; /* Total number of nodes */
int t_infree ; /* Total inner freedom */
int t_outfree ; /* Total outer freedom */
int t_midfree ; /* Total middler freedom */
int sum_nel ; /* Sumation of nel of all domains */
int sum_nnd ; /* Sumation of nnd of all domains */
int sum_nel_orig, sum_nnd_orig ;
int sum_ntemp ; /* Sumation of the number of templacement B.C. of all domains */
int sum_nflux ; /* Sumation of the number of flux B.C. of all domains */
int sum_nconv ; /* Sumation of the number of conv B.C. of all domains */
int sum_nradi ; /* Sumation of the number of radi B.C. of all domains */
int sum_ninbd ; /* Sumation of the number of inner boundary nodes */
double *crd ;
int have_matid ;
int nmat ;
Material *mat ;
OPinfo* op;
OPSinfo* opsn;
int t_insnode;
int t_outsnode;
int global_t_nodes ;
int global_t_elms ;
int global_t_domains;
DomMesh *dom ;
int *off_gdom ;
} PartMesh ;
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
typedef struct {
double lambda ;
double c ;
double rho ;
double stfn ;
double inheat ;
} Material ;
typedef struct {
int num ; /* node number */
double val ; /* value */
} Bcond ;
typedef struct {
int num1 ; /* element number */
int num2 ; /* surface number */
double val ; /* outside temperature */
double alpha ; /* alpha */
} Bconv ;
typedef struct {
int num1 ; /* element number */
int num2 ; /* surface number */
double val ; /* outside temperature */
double emis ; /* emisssivity */
double fact ; /* geometric factor */
} Bradi ;
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
hddmsrc/main.c
int main (int argc, char* argv[])
{
Thermal_Solver_Initialize( &argc, &argv, &npart, &insw, &outsw, &optsolv,,,
Thermal_Solver(insw, outsw, optsolv, cgopts, nsopts, pmesh) ;
Thermal_Solver_Finalize(optsolv, pmesh) ;
hddmsrc/hddm_solver.c
void Thermal_Solver ()
{
npart = get_num_parent() ;
mynpart = get_my_npart() ;
/* NonSteady loop */
nsloop = get_cur_nsloop(insw, optsolv, nsopts) ;
for ( ; nsloop < nsopts.max_loop ; nsloop++ ) {
HDDM_Solver ( insw, outsw, optsolv, cgopts, nsopts, pmesh ) ;
OutputResults ( pmesh, outsw, nsloop, NONSTEADY_OUT ) ;
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
void HDDM_Solver ()
{
/**** Parent Proc ************************************/
if ( am_I_parent() ) {
HDDM_Parent ( insw, outsw, optsolv, cgopts, nsopts, pmesh ) ;
}
/**** Child Proc *************************************/
else if ( am_I_child() ) {
HDDM_Child ( insw, optsolv, cgopts, nsopts ) ;
}
else {
Pfprintf(stderr,"What am I ?n") ;
Abort(-1);
}
}
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
hddmsrc/hddm_par.c
void HDDM_Parent ( )
{CGVector *cgvec ;
cgvec = NewCGVectors(pmesh, cgopts) ;
while(1) (                           /*=== CG
LOOP ===*/
for ( ipart = 0 ; ipart < mynpart ; ipart++ ) { partsolv() ; }
if (sw_cg == CG_FIRST ) {
HBDD_SolveCoarseProblem(pmesh, cgvec, Cmat, DZvec) ;
IncrementCGstep_step1(&optsolv, &cgopts, sw_cg, pmesh, cgvec, &gnorm);
CGSetBnorm(gnorm, REF_CGNORM_RESET_WAY) ;
set_cg_nr_norm0(gnorm, REF_CGNORM_RESET_WAY);
} else {
IncrementCGstep_step1(&optsolv, &cgopts, sw_cg, pmesh, cgvec, &gnorm);
}
IncrementCGstep_step2(&optsolv, &cgopts, sw_cg, cgvec ); /* Increment a CG step */
CGCheckConv(optsolv, &sw_cg, cgopts.tol, gnorm, &eps); /* Check convergence */
cgloop++;
PrepNextCGstep(sw_cg, pmesh, cgvec);
} /*=== CG LOOP ===*/
}
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
hddmsrc/hddm_types.h
#ifdef PARA_HDDM
#define partsolv(a, b, c, d, e, f, g,h) ppartsolv(a, b, c, d, e, f, g,h) ← advthermal-h
#include "p_partsolver.h"
#include "hddm_chi.h"
#else
#define partsolv(a, b, c, d, e, f, g,h) spartsolv(a, b, c, d, e, f, g,h) ← advthermal-p
#include "s_partsolver.h" advthermal-s
#endif
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
hddmsrc/p_partsolver.c
void ppartsolv()
{
while(1) {/*=== DOM LOOP ===*/
COM_ReadInt( &sig, 1, &node, &type ) ;
if ( sig == SIG_RECVDOM ) {
if ( n_send < pmesh.n_domain ) {
send_dom(node, send_domid, pmesh, need_precon_setup, cgvec.w, sw_cg,,
} else { /* n_send == pmesh.n_domain */
sig = SIG_NODOM ; /* to Child */
COM_WriteInt ( &sig, 1, node, type ) ;
}
} else if ( sig == SIG_SENDRES ) {
recv_dom( node,need_precon_setup, pmesh.dom, &cgvec, sw_cg, cgopts ) ;
n_analyzed++ ;
}
} /*=== DOM LOOP ===*/
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
hddmsrc/hddm_chi.c
void HDDM_Child (InputSW insw, OptSolv optsolv, CGOpts cgopts, NSOpts nsopts )
{
/*=== DOM LOOP ===*/
for (;;) {
if ( sig == SIG_SENDDOM ) {
get_dom( parnode, &need_precon_setup,&domid, &dmesh, sw_cg, sw_kpmat ) ;
hddmmat = MkNewHDDM_SkylineMat(sw_cg, dmesh, optsolv, nsopts);
/*=== FEM ===*/
domsolve(sw_cg, dmesh, hddmmat, optsolv ) ;
put_res( parnode,need_precon_setup, hddmmat, dmesh, sw_cg, cgopts ) ;
}
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
hddmsrc/s_partsolver.c
void spartsolv()
{
/*=== DOM LOOP ===*/
for ( idom = 0 ; idom < n_domain ; idom++ ) {
dmesh=SetDom4CG(optsolv, sw_cg, idom, pmesh, cgvec);
hddmmat = MkNewHDDM_SkylineMat(sw_cg, dmesh, optsolv, nsopts);
/*=== FEM ===*/
domsolve(sw_cg, dmesh, hddmmat, optsolv ) ;
for ( i = 0 ; i < dmesh.ninbd ; i++ ) { /* set cgvec */
cgvec.a_w[ dmesh.inbd[i].lonu ] += dmesh.force[ dmesh.inbd[i].dmnd ] ;
}
UnsetDom4CG(pmesh, &dmesh);
}
}
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
hddmsrc/domfem.c
HDDM_SkylineMat MkNewHDDM_SkylineMat()
{
/*+ Function: Make stiffness matrix for a subdomain (skyline matrix) +*/
select_element(dmesh.elm_type, optsolv.use_tet10_5);
/* Make stiffness matrix gk & right hand vector gf*/
skyline_mkindex(dmesh, &gk);
skyline_mkstiff_rhv(dmesh, gk, gf, optsolv, nsopts);
/* Make decomposed stiffness matrix gk_inv */
skyline_mkreducedindex(optsolv, bctemp_table, gk, &gk_inv);
copy_gk_to_inv(optsolv,dmesh, bctemp_table, gk, gk_inv);
SKY_Decomposite(gk_inv, work);
}
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
void skyline_mkstiff_rhv()
{
/*+ Function: Make stiffness matrix & right hand vector itself +*/
for (i=0, nop=dmesh.nop; i < nel; i++, nop += nd_elm) {
mk_elmk(ek, elm_crd, mat.lambda);
add_ek_to_gk(ek, nop, nd_elm, gk);
/* The Internal Heat Generation */
mk_elmf(ef, elm_crd, mat.inheat); add_ef_to_gf(ef, nop, nd_elm, gf);
/* HeatFlux */
pt = dmesh.bcflux[i].num; gf[ pt ] -= dmesh.bcflux[i].val;
/* HeatConvection */
mk_nop_conv(dmesh.nop, nop_conv, dmesh.nconv, dmesh.bcconv);
add_ek_to_gk(ek2, nop, nd_elm2, gk); add_ef_to_gf(ef2, nop, nd_elm2, gf);
/* HeatRadiation */
mk_nop_radi(dmesh.nop, nop_radi, dmesh.nradi, dmesh.bcradi);
add_ek_to_gk(ek2, nop, nd_elm2, gk); add_ef_to_gf(ef2, nop, nd_elm2, gf);
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
libfem/select_element.c
void mk_elmk( double *ek, double *crd, double lambda )
{
ft->make_elm_k( ek, crd, lambda ) ;
}
struct FuncTable
{
void (*make_elm_k)(double *ek, double *crd, double lambda) ;
void (*make_elm_f)(double *ef, double *crd, double inheat) ;
struct FuncTable Tet10 =
{
&mk_elmk_3_4_2,
&mk_elmf_3_4_2,
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
libfem/3d_conduct.c
#if ( ELM_TYPE == TET4 )
void mk_elmk_3_4_1( double *ek, double *crd, double lambda )
{
#elif ( ELM_TYPE == TET10 )
void mk_elmk_3_4_2( double *ek, double *crd, double lambda )
{
#elif ( ELM_TYPE == TET10_5 )
void mk_elmk_3_4_2_5( double *ek, double *crd, double lambda )
{
for ( intg = 0 ; intg < N_INTG ; intg++ ) {
mk_df_detj_10( fx, fy, fz, &detj, xe, ye, ze,
ps[intg][0], ps[intg][1], ps[intg][2], ps[intg][3] ) ;
w = wt[intg]* detj / 6.0 ;
ek[p] += ( fx[i] * fx[i] + fy[i] * fy[i] + fz[i] * fz[i] ) * w ;
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
hddmsrc/domfem.c
void domsolve()
{
/*+ Function: FEM solver for a subdomain +*/
put_neg_bctemp_to_vec(dmesh.ntemp, dmesh.bctemp, reac);
skysl1_add_multvec(hddmmat.gk, reac, temp);
SKY_MkSolution(hddmmat.gk_inv, temp);
put_bctemp_to_vec(dmesh.ntemp, dmesh.bctemp, temp);
d_clear(reac, matdim, 0.0);
skysl1_add_multvec(hddmmat.gk, temp, reac);
/* calc flux */
if (sw_cg == CG_LAST) {
for (i=0, nop=dmesh.nop; i < dmesh.nel; i++, nop += dmesh.nd_elm) {
mk_flux(elm_flux, elm_temp, elm_crd, mat.lambda);
}
}
}
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
2.2 ソルバの特徴
・ HDDM ソルバ
  CG 法の前処理として対角スケーリング前処理を使用している .
  1 万自由度程度までの問題や温度規定境界条件数が多い問題であれば , HDDM
ソルバの使用を薦める . ※ 使用可能モジュール : advthermal-s, advthermal-p, advthermal-h
・ BDD ソルバ
 非常に強力な前処理法である BDD 法 [8] を使用している .
 十分なメモリを確保できる計算機環境のユーザーは BDD ソルバの使用を薦め
る .
 ※使用可能モジュール : advthermal-p, advthermal-h
・ BDD-DIAG ソルバ
  BDD 法における Neumann-Neumann 前処理を対角スケーリングに置き換えた修正
  
  BDD 法 [10] を使用している .
  BDD ソルバを使用するのに十分なメモリを確保できない場合は BDD-DIAG ソ
ルバの使 用を薦める .
 ※使用可能モジュール : advthermal-p, advtherrmal-h
・ IBDD ソルバ
  BDD 法に不完全コース問題を採用した改良 BDD 法 [10] を使用している .
 大規模自由度問題において IBDD-DIAG ソルバで収束が得られない場合に使用
する
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
2.3 領域分割 (ADVENTURE_Metis) について
"Part" 数は並列処理の手法 , 使用するノード数や計算機環境に基づいて決定され
る .
"Domain" 数は , 計算処理に必要とされるメモリに基づいて決定される .
細かく分割すればメモリの使用量を少なくできる .
静的負荷分散版の場合 , 1 領域あたりの要素数が 180-370 のとき
BDD ソルバまたは BDD-DIAG ソルバを使用することで最良の性能を得ることが
できる .
動的負荷分散の場合その数は 350-450 である .
subdomainpart
element
NN
N
n
×
=
n : 1 領域あたりの要素数
Nelemnt
 :総要素数
Nsubdomain
:領域分割数
Npart
  :部分数
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
図 5 ADVENTURE システムによる
解析の流れ
メッシュ
ADVENTURE_BCtool
境界条件設定
解析モデル
(一体型)
ADVENTURE_Metis
領域分割
解析結果
(分割型)
ADVENTURE_Thermal
FEM 解析
解析結果
(分割型)
ADVENTURE_Visual
可視化システム
ASCII File
ADVENTURE
Format File
Single Module
Parallel Module
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
3.2 非定常解析機能
後退差分近似またはクランク・ニコルソン法による解析が可能
スタート
各領域の解析
領域間境界の更新
節点温度の更新
終了
階層型領域分割法
CG 法反復
時間積分ループ
図 6 :非定常解析の流れ
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
3.3 入出力データについて
画面に出力される解析ログ以外は全て ADVENTURE フォーマットファイルであり ,
部分 (Part) ごとに 1 ファイルとなっている
分割モデル
( 分割型 )
CG restart File
時間積分ステップ
restart File
最終解析結果
時間積分ステップ毎
の解析結果
ADVENTURE_Thermal
並列ソルバ
LOG 出力
必須
オプショナル
図 7 :入出力ファイル
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
3.4 単位系について
ADVENTURE_Thermal では , 入出力データの温度表現に摂氏を採用して
いる .
その他の単位系の指定機能は含まれておらず , 入力データ作成時に矛盾
のない単位系を使用しておく必要がある .
3.5 境界条件
・温度規定境界条件 ( 節点指定 )
・熱流束規定境界条件 ( 節点指定 )
・熱伝達規定境界条件 ( 面指定 )
・熱ふく射規定境界条件 ( 面指定 , 非定常解析時のみ )
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
3.6 物性値
等方的な材料物性に対し , 以下の物性値が使用できる .
・熱伝導率
・比熱 ( 非定常解析時に必要 )
・密度 ( 非定常解析時に必要 )
・ステファン・ボルツマン係数 ( 熱ふく射境界指定時に必要 )
・発熱量
3.7 解析結果出力
解析結果としては階層型に領域分割された形式で与えられ , 各節点での温度
( 摂氏 ) と熱流束が出力される . 入力解析モデルと同様に , 部分ごとに 1 ファイル
の
ADVENTURE_IO フォーマットで出力される .
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Incomplete Balancing Domain Decomposition for Large Scale
Thermal-Solid Coupling Problems
Masao OGINO, Ryuji SHIOYA,
Hiroshi KANAYAMA, and A.M.M. MUKADDES
Kyushu University, JAPAN
WCCM VI in conjunction with APCOM’04, Beijing, China
Minisymposium: Large Scale Coupled Problems and Related Topics
- Proposition of the IBDD-DIAG method for large scale analysis
- Thermal-solid coupling analysis with ADVENTURE system
- Thermal-solid coupling analysis of 12 million nodes model
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
ADVENTURE System
Module-based architecture of ADVENTURE system.
Development of Computational Mechanics System
for Large Scale Analysis and Design
http://adventure.q.t.u-tokyo.ac.jp/
Open source CAE software for large scale analysis and design
Solver modules,
ADV_Solid
Elastic-plastic analysis solver
ADV_Forge
Rigid-plastic analysis solver
ADV_Impact
Impact-contact analysis solver
ADV_Thermal
Thermal conductive analysis solver
ADV_Fluid
Thermal flow analysis solver
ADV_Magnetic
Electromagnetic analysis solver
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Modules for thermal-solid coupling
• ADVENTURE_Thermal:
steady and non-steady thermal conductive analysis in solid,
HDDM(Hierarchical Domain Decomposition Method)*
solver,
BDD(Balancing Domain Decomposition) preconditioner.
• ADVENTURE_Solid:
static elastic, elastic-plastic and large deformation analysis,
HDDM solver,
BDD preconditioner.
*G.Yagawa and R.Shioya, Parallel finite elements on a massively parallel computer with
domain decomposition, Computing Systems in Engineering, 4:4-6, 1994, pp.495-503.
*
HDDM is one of the parallel FEM based iterative DDM.
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Flow chart of thermal-solid weak coupling analysis with
ADVENTURE system.
Mesh, Thermal properties,
B.C. for thermal analysis
Domain decomposition
by ADVENTURE_Metis
Thermal analysis
by ADVENTURE_Thermal
Thermal analysis
by ADVENTURE_Thermal
Structural analysis
by ADVENTURE_Solid
Structural analysis
by ADVENTURE_Solid
Mesh, Mechanical
properties,
B.C. for solid analysis
Domain decomposition
by ADVENTURE_Metis
Deformation,
stress, strain, ...
Temperature
informations
Thermal analysis flowThermal analysis flow Solid analysis flowSolid analysis flow
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Balancing Domain Decomposition (BDD)*
DDM,
which solve the interface problem using Preconditioned CG
(PCG) method.
Neumann-Neumann (N-N) preconditioner,
which works to a residual vector as a local subdomain
preconditioner.
Coarse grid correction,
which deletes a coarse space component from a vector.
*J.Mandel, Balancing Domain Decomposition, Communications
on Numerical Methods in Engineering, Vol.9, 1993, pp.233-241.
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Domain decomposition
Interface
Domain Decomposition Method (DDM)
gSuB =
fKu =
Original finite element problem:
Analysis domain
After eliminating interior DOF, we get a reduced
problem on interface, called the interface
problem,
local Schur
complement
( ) ( ) ( ) ( )( ) ( )i
IB
i
II
Ti
IB
i
BB
i KKKKS
1−
−=
Schur complement matrix( ) ( ) ( )∑= =
N
i
Tiii RSRS 1
( )
( )
( ) ( )iTi
i
i
:R
:f
:K
Ω→Ω restriction operator
local stiffness matrix
local RHS vector
I : interior dofs, B : interface dofs
where
Interior
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
N-N preconditioniner
( ) ( ) ( ) ( ) ( ) ( )
V
N
i
Tiiiiii IRDR,VV:D =∑→ =1
Partition of unity
:V The space of the dofs on
interface, and
The space of the dofs
on interface of Ωi.
( ) :V i
( )
( ) ( )
( ) ( )



=Γ
≠Γ
= −
−
φ
φ
i
U
i
i
U
i
i
:S
~
:S
S 1
1
† S(i)
is non-singular,
S(i)
is singular.
N-N preconditioning operator is
where
( ) ( ) ( ) ( ) ( ) ,RDSDRT N
i
iTiiii
NN ∑= =− 1
†
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Construction of the coarse space
Local coarse space is defined by,
( ) ( ) ( ) ,VZRangeSKer iii ⊂⊂
( ) :V i Space of the interface of subdomain i.










−
−
−
=
0100
0010
0001
12
13
23
xx
xx
xx
z )i(
X
For the elastic problem,
At point on ,)x,x,x(X 321
)i(Ω∂
.X:B
,ZBZ
)i()i(
X
X
)i(
X
)i(
X
)i(
Ω∂→
∑=
For the heat conductive problem,
[ ]T)i( ,...,Z 11= Num. of `1` is the num.
of interface dof for ( ) .iΩ
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
BDD preconditioner
Preconditioning matrix is,
( ) ( ) ( ) ( ) ( ) ( )[ ]NNN ZDR,....,ZDRR 111
0 =
000 SRRS T= : coarse grid operator
SRSRP T
0
1
00
−= : S-orthogonal projection operator
where
If you set solution of the coarse space problem to initial guess of
the interface problem, BDD preconditioner can be simplified,
( ) ( ) ,PITPIPSM
T
NNBDD −−+= −
−1
( ) .TPISM NNBDD −
− −=1Simplification
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
BDD-DIAG: BDD with diagonal-scaling
• The N-N preconditioner requires,
- generalized inverse matrices,
- large memory size to keep inverse matrices.
( ) ( )
( )
( )( ){ }i
V
ii SdiagmaxISS
~
i
⋅⋅+= α
a regularization:
low precision
Moore-Penrose pseudo-inverse: high computational costs
• The diagonal-scaling preconditioner is employed as
local subdomain preconditioner, named BDD-DIAG.
This method shows memory shortage and low computational costs,
while it increases the number of iterations compared with BDD.
( ) ( ){ } ( ) .RSdiagRT N
i
Tiii
DIAG ∑= =
−
1
1
( ) ,TPISM DIAGDIAGBDD −=−
−
1
where
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Incomplete balancing operator
• Coarse grid correction:
- to invert coarse grid operator
- the dimension of is equal to,
in thermal analysis:
in solid analysis:
  It is difficult to apply for large scale problems.
• Incomplete parallel Cholesky factorized operator is employed for
coarse grid correction*
.
   - may increase the number of iterations,
- may decrease the computational costs greatly,
total computation time is expected to be reduced.
Even if it corrects using an approximate solution, it is investigated
numerically that results are the same.
ntdisplacemerigidofdofN ×
N
0S
0S
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Incomplete balancing domain decomposition
000 RS
~
RS
~ T= : incomplete coarse grid operator
S
~
RS
~
RP
~ T
0
1
00
−= : S-orthogonal projection operator
where
IBDD,
IBDD-DIAG,
Because the incomplete coarse grid correction cannot delete a
coarse component, these methods cannot be simplified.
( ) ( ) ,P
~
ITP
~
IP
~
SM
T
NNIBDD −−+= −
−1
( ) ( ) ,P
~
ITP
~
IP
~
SM
T
DIAGDIAGIBDD −−+=−
−
1
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
BDD type preconditioners
IBDD: N-N and incompletely balancing,
IBDD-DIAG: Diagonal-scaling and incompletely balancing,
( ) ( ) .P
~
ITP
~
IP
~
SM
T
NNIBDD −−+= −
−1
( ) ( ) .P
~
ITP
~
IP
~
SM
T
DIAGDIAGIBDD −−+=−
−
1
( ) .TPISM NNBDD −
− −=1
( ) .TPISM DIAGDIAGBDD −=−
−
1
BDD: N-N and completely balancing,
BDD-DIAG: Diagonal-scaling and completely balancing,
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Numerical examples
Thermal-solid coupling problems:
• Pipe model with 0.1M nodes,
for comparison with BDD type preconditioners.
• ABWR model with 12M nodes,
as the large scale analysis on MPP.
A related example:
• Seismic response analysis of ABWR,
which is an application of IBDD-DIAG in solid analysis.
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Pipe model
FE Mesh (tetrahedron-quadratic)
Elements: 61,913
Nodes: 114,112
DOF in thermal analysis: 112,166
DOF in solid analysis: 339,411
Temperature distribution
Equivalent stress distribution
and deform configuration
The pipe model
100 C
P
X
X
X
X
X
20 C
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
0.0
5.0
10.0
15.0
20.0
25.0
30.0
35.0
40.0
40 120 200 280 360 480 640 800 1200 1600
Number of subdomains
Time[sec]
0
10
20
30
40
50
60
70
80
90
100
40 120 200 280 360 480 640 800 1200 1600
Number of subdomains
Numberofiterations
Comparison of BDD performances
in thermal analysis
# subdomain vs. # iterations # subdomain vs. computational time
BDD-DIAG
BDD-DIAG
IBDD-DIAG
IBDD-DIAG
IBDD IBDD
BDD
BDD
Pentium4 3.0GHz X 4
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Comparison of BDD performances
in solid analysis
0
50
100
150
200
250
300
350
40 100 160 220 280 340 400 1000 2000 3200
Number of subdomains
Numberofiterations
0
100
200
300
400
500
600
700
800
40 100 160 220 280 340 400 1000 2000 3200
Number of subdomains
Time[sec]
# subdomain vs. # iterations # subdomain vs. computational time
IBDD-DIAG
IBDD-DIAG
BDD-DIAG
BDD-DIAGIBDD
IBDDBDD
BDD
Pentium4 3.0GHz X 4
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
ABWR model
Advanced Boiling Water Reactor
FE Mesh (tetrahedron-quadratic)
Elements: 7,486,792
Nodes: 11,794,506
DOF in thermal analysis: 12 M
DOF in solid analysis: 35 M
FE mesh of the ABWRABWR (TEPCO, Inc.)
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Computational performances
in thermal analysis
Iterations Time ParLU**
Memory
DDM* 3,201 1,259 sec - 13.0 GB
BDD 59 522 sec 371 sec 20.1 GB
IBDD 98 288 sec 30 sec 19.8 GB
BDD-DIAG 114 538 sec 371 sec 13.6 GB
IBDD-
DIAG 124 264 sec 30 sec 13.4 GB
Computational environments: Pentium4 2.0GHz(dual) X 30
Acknowledgement: Prof. Nakabayashi, Toyo University, Japan
Subdomains: 3,000
*DDM: DDM with diagonal scaling preconditioner
**ParLU: time for (incomplete) parallel Cholesky factorization of coarse grid operator
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Computational performances (solid)
Computational environments: ES 1,024 processors
1.0e-07
1.0e-06
1.0e-05
1.0e-04
1.0e-03
1.0e-02
1.0e-01
1.0e+ 00
1.0e+ 01
1.0e+ 02
0 2000 4000 6000 8000 10000 12000 14000 16000 18000
Number of iterations
Relativeresidualnorm
DDM:
17,565 iter., 2,806 sec,
894 GB memory
IBDD-DIAG:
853 iter., 488 sec,
896 GB memory
History of relative residual norm.
Acknowledgement:
The Earth Simulator
Center
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Seismic response analysis of ABWR
using IBDD-DIAG
-300.0
-200.0
-100.0
0.0
100.0
200.0
300.0
400.0
0.0 4.0 8.0 12.0 16.0 20.0 24.0 28.0 32.0 36.0 40.0 44.0 48.0 52.0
Elapsed time [sec]
Acceleration
-300.0
-200.0
-100.0
0.0
100.0
200.0
300.0
400.0
0.0 4.0 8.0 12.0 16.0 20.0 24.0 28.0 32.0 36.0 40.0 44.0 48.0 52.0
Elapsed time [sec]
Acceleration
elapsed time: 0.0sec – 0.96sec,
Stress distribution and deformation of ABWR
1940 Elcentro, acceleration history
in NS direction, sec.t 020=∆
CPU: ES 1,024 processors
Time step: 200 (4.0sec)
Computational time: 6.97hr
CPU: ES 1,024 processors
Time step: 200 (4.0sec)
Computational time: 6.97hr
Time-integration: Newmark’s beta
Damping: none
第 2 回 ADVENTURE 上級者セミナー
2005 年 9 月 16 日 ( 金 )
Conclusions
• A construction of new BDD type preconditioner, called
IBDD-DIAG.
• A thermal-solid coupling analysis with 12M nodes model on
MPP.
• Good performance of the IBDD-DIAG method in
computational time compared with original BDD for large
scale analysis.
In the future works,
• Comparison with other methods, AMG or FETI.

More Related Content

What's hot

ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用MITSUNARI Shigeo
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介MITSUNARI Shigeo
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)MITSUNARI Shigeo
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementationMITSUNARI Shigeo
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部NVIDIA Japan
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたRyo Sakamoto
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部NVIDIA Japan
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングComputational Materials Science Initiative
 
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Takahiro Harada
 
C++ AMPを使ってみよう
C++ AMPを使ってみようC++ AMPを使ってみよう
C++ AMPを使ってみようOsamu Masutani
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenMITSUNARI Shigeo
 

What's hot (20)

ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
 
llvm入門
llvm入門llvm入門
llvm入門
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
 
フラグを愛でる
フラグを愛でるフラグを愛でる
フラグを愛でる
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
20180728 halide-study
20180728 halide-study20180728 halide-study
20180728 halide-study
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
Slide dist
Slide distSlide dist
Slide dist
 
20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
 
From IA-32 to avx-512
From IA-32 to avx-512From IA-32 to avx-512
From IA-32 to avx-512
 
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)
 
C++ AMPを使ってみよう
C++ AMPを使ってみようC++ AMPを使ってみよう
C++ AMPを使ってみよう
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 

Similar to ADVENTURE_Thermalの概要

第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)RCCSRENKEI
 
ADVENTURE_Solid Ver.1.2の概要
ADVENTURE_Solid Ver.1.2の概要ADVENTURE_Solid Ver.1.2の概要
ADVENTURE_Solid Ver.1.2の概要ADVENTURE Project
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Takeshi Arabiki
 
OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)
OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)
OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)Kenji Aoyama
 
200625material naruse
200625material naruse200625material naruse
200625material naruseRCCSRENKEI
 
Project Loom + Project Panama
Project Loom + Project PanamaProject Loom + Project Panama
Project Loom + Project PanamaYuichi Sakuraba
 
PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価Toshiaki Hishinuma
 
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml ssuser3a4b8c
 
8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティングTakeshi Takaishi
 
衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18Koichiro Mori
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読takuyayamamoto1800
 
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係Mr. Vengineer
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DKatsushi Suzuki
 
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目hecomi
 
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)RCCSRENKEI
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Katsutoshi Makino
 

Similar to ADVENTURE_Thermalの概要 (20)

ADVENTURE_Solidの概要
ADVENTURE_Solidの概要ADVENTURE_Solidの概要
ADVENTURE_Solidの概要
 
第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)
 
ADVENTURE_Solid Ver.1.2の概要
ADVENTURE_Solid Ver.1.2の概要ADVENTURE_Solid Ver.1.2の概要
ADVENTURE_Solid Ver.1.2の概要
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
 
OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)
OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)
OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)
 
Mincs 日本語版
Mincs 日本語版Mincs 日本語版
Mincs 日本語版
 
200625material naruse
200625material naruse200625material naruse
200625material naruse
 
Slide
SlideSlide
Slide
 
Project Loom + Project Panama
Project Loom + Project PanamaProject Loom + Project Panama
Project Loom + Project Panama
 
PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価
 
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
 
8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング
 
衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読
 
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3D
 
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
 
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化
 

More from ADVENTURE Project

LexADV_WOVis Ver.0.1bの概要
LexADV_WOVis Ver.0.1bの概要LexADV_WOVis Ver.0.1bの概要
LexADV_WOVis Ver.0.1bの概要ADVENTURE Project
 
LexADV_TryDDM Ver. 0.1bの概要
LexADV_TryDDM Ver. 0.1bの概要LexADV_TryDDM Ver. 0.1bの概要
LexADV_TryDDM Ver. 0.1bの概要ADVENTURE Project
 
ADVENTURE_Mates Ver. 0.5bの概要
ADVENTURE_Mates Ver. 0.5bの概要ADVENTURE_Mates Ver. 0.5bの概要
ADVENTURE_Mates Ver. 0.5bの概要ADVENTURE Project
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTURE Project
 
ADVENTURE_Mates Ver.0.5b データ生成
ADVENTURE_Mates Ver.0.5b データ生成ADVENTURE_Mates Ver.0.5b データ生成
ADVENTURE_Mates Ver.0.5b データ生成ADVENTURE Project
 
ADVENTURE_MATES専用ビューア AdvMatesViewerについて
ADVENTURE_MATES専用ビューア AdvMatesViewerについてADVENTURE_MATES専用ビューア AdvMatesViewerについて
ADVENTURE_MATES専用ビューア AdvMatesViewerについてADVENTURE Project
 
ADVENTURE_Magnetic Ver.1.5.0の概要
ADVENTURE_Magnetic Ver.1.5.0の概要ADVENTURE_Magnetic Ver.1.5.0の概要
ADVENTURE_Magnetic Ver.1.5.0の概要ADVENTURE Project
 
ADVENTURE_sFlowの最新動向
ADVENTURE_sFlowの最新動向ADVENTURE_sFlowの最新動向
ADVENTURE_sFlowの最新動向ADVENTURE Project
 
ADVENTURE_Solid Ver.2.0の概要
ADVENTURE_Solid Ver.2.0の概要ADVENTURE_Solid Ver.2.0の概要
ADVENTURE_Solid Ver.2.0の概要ADVENTURE Project
 
ADVENTURE_BCtool Ver.2.の概要と実際[デモ]
ADVENTURE_BCtool Ver.2.の概要と実際[デモ]ADVENTURE_BCtool Ver.2.の概要と実際[デモ]
ADVENTURE_BCtool Ver.2.の概要と実際[デモ]ADVENTURE Project
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTURE Project
 
大規模並列解析用可視化モジュール ADVENTURE_POSTtool
大規模並列解析用可視化モジュール ADVENTURE_POSTtool大規模並列解析用可視化モジュール ADVENTURE_POSTtool
大規模並列解析用可視化モジュール ADVENTURE_POSTtoolADVENTURE Project
 
Linuxにおけるコマンドとエディタの使用方法の紹介
Linuxにおけるコマンドとエディタの使用方法の紹介Linuxにおけるコマンドとエディタの使用方法の紹介
Linuxにおけるコマンドとエディタの使用方法の紹介ADVENTURE Project
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTURE Project
 
ADVENTURE AutoGL 「おてがる」
ADVENTURE AutoGL 「おてがる」ADVENTURE AutoGL 「おてがる」
ADVENTURE AutoGL 「おてがる」ADVENTURE Project
 
ADVENTURE_Solid-1.2 構造体リファレンスマニュアル
ADVENTURE_Solid-1.2 構造体リファレンスマニュアルADVENTURE_Solid-1.2 構造体リファレンスマニュアル
ADVENTURE_Solid-1.2 構造体リファレンスマニュアルADVENTURE Project
 
ADVENTURE_Solid 線形代数関数群 advlasリファレンスマニュアル
ADVENTURE_Solid 線形代数関数群 advlasリファレンスマニュアルADVENTURE_Solid 線形代数関数群 advlasリファレンスマニュアル
ADVENTURE_Solid 線形代数関数群 advlasリファレンスマニュアルADVENTURE Project
 
原子力発電プラントの地震耐力予測シミュレーション
原子力発電プラントの地震耐力予測シミュレーション原子力発電プラントの地震耐力予測シミュレーション
原子力発電プラントの地震耐力予測シミュレーションADVENTURE Project
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTURE Project
 

More from ADVENTURE Project (20)

LexADV_WOVis Ver.0.1bの概要
LexADV_WOVis Ver.0.1bの概要LexADV_WOVis Ver.0.1bの概要
LexADV_WOVis Ver.0.1bの概要
 
LexADV_TryDDM Ver. 0.1bの概要
LexADV_TryDDM Ver. 0.1bの概要LexADV_TryDDM Ver. 0.1bの概要
LexADV_TryDDM Ver. 0.1bの概要
 
ADVENTURE_Mates Ver. 0.5bの概要
ADVENTURE_Mates Ver. 0.5bの概要ADVENTURE_Mates Ver. 0.5bの概要
ADVENTURE_Mates Ver. 0.5bの概要
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介
 
ADVENTURE_Mates Ver.0.5b データ生成
ADVENTURE_Mates Ver.0.5b データ生成ADVENTURE_Mates Ver.0.5b データ生成
ADVENTURE_Mates Ver.0.5b データ生成
 
ADVENTURE_MATES専用ビューア AdvMatesViewerについて
ADVENTURE_MATES専用ビューア AdvMatesViewerについてADVENTURE_MATES専用ビューア AdvMatesViewerについて
ADVENTURE_MATES専用ビューア AdvMatesViewerについて
 
ADVENTURE_Magnetic Ver.1.5.0の概要
ADVENTURE_Magnetic Ver.1.5.0の概要ADVENTURE_Magnetic Ver.1.5.0の概要
ADVENTURE_Magnetic Ver.1.5.0の概要
 
ADVENTURE_sFlowの最新動向
ADVENTURE_sFlowの最新動向ADVENTURE_sFlowの最新動向
ADVENTURE_sFlowの最新動向
 
ADVENTURE_Solid Ver.2.0の概要
ADVENTURE_Solid Ver.2.0の概要ADVENTURE_Solid Ver.2.0の概要
ADVENTURE_Solid Ver.2.0の概要
 
ADVENTURE_BCtool Ver.2.の概要と実際[デモ]
ADVENTURE_BCtool Ver.2.の概要と実際[デモ]ADVENTURE_BCtool Ver.2.の概要と実際[デモ]
ADVENTURE_BCtool Ver.2.の概要と実際[デモ]
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介
 
大規模並列解析用可視化モジュール ADVENTURE_POSTtool
大規模並列解析用可視化モジュール ADVENTURE_POSTtool大規模並列解析用可視化モジュール ADVENTURE_POSTtool
大規模並列解析用可視化モジュール ADVENTURE_POSTtool
 
Linuxにおけるコマンドとエディタの使用方法の紹介
Linuxにおけるコマンドとエディタの使用方法の紹介Linuxにおけるコマンドとエディタの使用方法の紹介
Linuxにおけるコマンドとエディタの使用方法の紹介
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介
 
ADVENTURE AutoGL 「おてがる」
ADVENTURE AutoGL 「おてがる」ADVENTURE AutoGL 「おてがる」
ADVENTURE AutoGL 「おてがる」
 
ADVENTURE_Solid-1.2 構造体リファレンスマニュアル
ADVENTURE_Solid-1.2 構造体リファレンスマニュアルADVENTURE_Solid-1.2 構造体リファレンスマニュアル
ADVENTURE_Solid-1.2 構造体リファレンスマニュアル
 
ADVENTURE_Solid 線形代数関数群 advlasリファレンスマニュアル
ADVENTURE_Solid 線形代数関数群 advlasリファレンスマニュアルADVENTURE_Solid 線形代数関数群 advlasリファレンスマニュアル
ADVENTURE_Solid 線形代数関数群 advlasリファレンスマニュアル
 
DecisionMaker
DecisionMakerDecisionMaker
DecisionMaker
 
原子力発電プラントの地震耐力予測シミュレーション
原子力発電プラントの地震耐力予測シミュレーション原子力発電プラントの地震耐力予測シミュレーション
原子力発電プラントの地震耐力予測シミュレーション
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介
 

ADVENTURE_Thermalの概要

  • 1. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) ADVENTURE_Thermal の概要 九州大学 塩谷隆二
  • 2. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) History of Adventure_Thermal 1996 Massively Parallel Computing for Large Scale Finite Elements R.Shioya 1997-2002 Adventure Project 2000.12.01 AdvSolid-0.8b 2000 領域分割法による 3 次元熱伝導解析 石川格 2001.11.14 AdvThermal-0.2b 2002 大規模並列弱連成解析 今村栄太 2002.03.01 AdvThermal-0.3b, AdvSolid-1.0(BDD) 2003 Study of Speed-up Technique of Large Scale Parallel FE. A.Mukaddes 2003.09.16 AdvSolid-1.1 2004 領域分割型有限要素法による超並列計算 荻野正雄 2005.07.11 AdvThermal-1.0(BDD)
  • 3. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Functions added to ADVENTURE_Thermal Version: 0.6b 01. Configure options ( install and compile) 02. BDD and BDD-DIAG solver 03. Bug fixed advthermal-p and advthermal-s Version: 1.0 01. “mkbc4th” tool for convection and radiation boundary conditions 02. “makefem_thermal” tool for flux boundary conditions 03. English manual ( with some example problems and tool explanation) 04. Japanese manual (with some example problems, tool explanation and BDD explanation ) Next Version 01. IBDD and IBDD-DIAG method 02. Time dependent boundary conditions
  • 4. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 )ADVENTURE_Thermal  Steady / Non-steady Heat Conductive Analysis with HDDM Version 1.0 プログラム使用マニュアル 1.1 本モジュールの特徴 ADVENTURE_Thermal は以下のような特徴を持っている . ・定常 / 非定常問題の解析が可能 ・ 4 面体 1 次 /2 次要素に対応 ・階層型領域分割法 (HDDM) による負荷分散並列処理が可 能 ・線形ソルバにバランシング領域分割法 (BDD) が使用可能 ・領域分割法を逐次処理するシングル版が使用可能 1.2 稼動環境 対応プラットホーム UNIX, Linux 並列通信ライブラリ MPI
  • 5. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 1.3 コンパイルとインストール• % configure --prefix=PREFIX ← シングル版実行モジュール ← 静的負荷分散版実行モジュール ← 動的負荷分散版実行モジュール ← 境界条件設定ツール ← 一体型 FEA モデル作成ツール ← 解析データ変換ツール ← 日本語ユーザーマニュアル ← 英語ユーザーマニュアル ← 日本語の簡易情報 ← 英語の簡易情報 ← 著作権規定 ← ユーザーマニュアル ← ソースファイル ←fem ライブラリソースファイル ← サンプルデータ ← ツールソースファイル $(HOME)/ADVENTURE/ bin/advthermal-s bin/advthermal-p bin/advthermal-h bin/mkbc4th bin/makefem_thermal bin/so2th doc/AdvThermal/manual-jp.pdf doc/AdvThermal/manual-eg.pdf doc/AdvThermal/README.ecuJP doc/AdvThermal/README doc/AdvThermal/copyright $(ArchiveDir)/ doc/ hddmsrc/ libfem/ sample_data/ tools/
  • 6. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 1.4 実行方法 % advthermal-s ./sample_data/conv % mpirun –np 6 advthermal-h ./sample_data/conv % mpirun –np 2 advthermal-p ./sample_data/conv 2.1 並列処理機能 (1) シングル版 ( モジュール名 : advthermal-s) 使用可能な線形方程式ソルバは HDDM (2) 静的負荷分散版 ( モジュール名 : advthermal-p) 使用可能な線形方程式ソルバは HDDM, BDD, BDD-DIAG, IBDD, IBDD- DIAG (3) 動的負荷分散版 ( モジュール名 : advthermal-h) 使用可能な線形方程式ソルバは HDDM, BDD, BDD-DIAG
  • 7. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) vectorNormal:n ][retemperatuExternal: tcoefficienferHeat trans: generationheatInternal: heatSpecifice: Density: ][onappliedeTemperatur:u onappliedfluxHeat:Q retemperatuofderivativeTime: t u tyconductiviThermal: rflux vectoHeat:q ][eTemperatur: C u Q Cu f C C Cu o C o o α ρ λ Γ Γ ∂ ∂ u _ Q on on0 on0)( indiv ingrad Γ= Γ=−⋅ Γ=−−⋅ Ω+−= ∂ ∂ Ω−= uu Qnq uunq fq t u c uq CCC α ρ λ uΓ Heat conductive problem
  • 8. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Finite Element (quadratic tetrahedral) Approximation )}({}{}{)}({ ][})]({[})]({[ )}({}})]{({[ }{ })]({[ tRRRtf KuKuK tfuuK dt ud uC hfq hc ++= += =+ convectionsurfacefromarisingVector:)}({ generationheatinternalfromarisingVector:}{ fluxheatfromarisingVector:}{ convectiontorelatedMatrix:][ conductiontorelatedMatrix:})]({[ matrixStifness:})]({[ matrixeCapacitanc:}]({[ retemperatunodalofVector:}{ tR R R K uK uK uC u h f q h c
  • 9. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Time Discretized Equation nnnnnnn uKtCftuKtC }){][)1(]([}{}){][]([ 1 ∆−−+∆=∆+ + ϕϕ sec)increment(time:t size(mm)meshminimum: 3 )schemedifferenceBackward(1 ∆ = = h m ϕ This equation is solved by Domain Decomposition Method in each time integration loop )2)(1( 2 )1( 2 ++ ≤ ∆ − mmh t ϕλ Stability condition :
  • 10. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Domain decomposition Interface Domain Decomposition Method (DDM). gSuB = fKu = Original finite element problem: Analysis domain After eliminating interior DOF, we get a reduced problem on interface, called the interface problem, local Schur complement ( ) ( ) ( ) ( )( ) ( )i IB i II Ti IB i BB i KKKKS 1− −= Schur complement matrix( ) ( ) ( )∑= = N i Tiii RSRS 1 ( ) ( ) ( ) ( )iTi i i :R :f :K Ω→Ω restriction operator local stiffness matrix local RHS vector I : interior dofs, B : interface dofs where Interior
  • 11. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 解析領域の全体モデル 分割モデル ( Step 1 ) 分割モデル ( Step 2 ) 部分 (Part) Part 1 Part 2 Part 3 部分領域 (Subdomain)
  • 12. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 領域 0 領域 1 領域 2 領域 3 部分 0 領域 4 領域 5 領域 6 領域 7 部分 1 CPU1 図 2 :領域の CPU への割り当て―シングル版 シングル版 ( モジュール名 : advthermal-s)
  • 13. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 領域 0 領域 1 部分 0 CPU1 領域 6 領域 7 部分 3 CPU4 領域 8 領域 9 部分 4 CPU5 領域 2 領域 3 部分 1 CPU2 領域 4 領域 5 部分 2 CPU3 図 3 :領域の CPU への割り当て―静的負荷分散版 静的負荷分散版 ( モジュール名 : advthermal-p)
  • 14. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 領域 1 領域 2 領域 3 部分 0 領域 0 CPU1 親 1 領域 5 領域 6 領域 7 部分 1 領域 4 CPU2 親 2 領域 0 領域 3 領域 2 領域 1 領域 4 領域 5 領域 6 領域 7 CPU3 CPU4 CPU5 子 1 子 2 子 3 図 4 :領域の CPU への割り当て―動的負荷分散版 動的負荷分散版 ( モジュール名 : advthermal-h)
  • 15. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Hierarchical Domain Decomposition
  • 16. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) $(ArchiveDir)/ hddmsrc/ libfem/ sample_data/ tools/ ← ソースファイル ←fem ライブラリソースファイル ← サンプルデータ ← ツールソースファイル Source Files
  • 17. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) hddmsrc/hddm_types.h typedef struct { int domid ; /* subdomain id in its own part */ int gdomid ;/* global id of domid */ int partid ; int nel ; /* number of elements */ int nnd ; /* nodes */ int ntemp ; /* temp b.c. */ int nflux ; /* flux b.c. */ int nconv ; /* conv b.c. */ int nradi ; /* radi b.c. */ int ninbd ; /* inner-domain b.c. */ int nsharenode; int nd_elm ; int nd_elm2 ; int *nop ; int *ndindex ; Inbc *inbd ; Bcond *bctemp ; Bcond *bcflux ; Bconv *bcconv ; Bradi *bcradi ; Sharenode *sharenode; Slist *bclist ; /*+ Set of boundary conditions +*/ char elm_type[128] ; double *temp ; double *oldtmp ; double *force ; double *flux ; double *crd ; /* material */ int have_matid ; int *matid ; int nmat ; Material *mat ; } DomMesh ;
  • 18. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) typedef struct { int partid ; int n_part ; int n_domain ; /* Number of in domains */ int n_outdom ; /* Number of out domains */ int t_nnd ; /* Total number of nodes */ int t_infree ; /* Total inner freedom */ int t_outfree ; /* Total outer freedom */ int t_midfree ; /* Total middler freedom */ int sum_nel ; /* Sumation of nel of all domains */ int sum_nnd ; /* Sumation of nnd of all domains */ int sum_nel_orig, sum_nnd_orig ; int sum_ntemp ; /* Sumation of the number of templacement B.C. of all domains */ int sum_nflux ; /* Sumation of the number of flux B.C. of all domains */ int sum_nconv ; /* Sumation of the number of conv B.C. of all domains */ int sum_nradi ; /* Sumation of the number of radi B.C. of all domains */ int sum_ninbd ; /* Sumation of the number of inner boundary nodes */ double *crd ; int have_matid ; int nmat ; Material *mat ; OPinfo* op; OPSinfo* opsn; int t_insnode; int t_outsnode; int global_t_nodes ; int global_t_elms ; int global_t_domains; DomMesh *dom ; int *off_gdom ; } PartMesh ;
  • 19. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) typedef struct { double lambda ; double c ; double rho ; double stfn ; double inheat ; } Material ; typedef struct { int num ; /* node number */ double val ; /* value */ } Bcond ; typedef struct { int num1 ; /* element number */ int num2 ; /* surface number */ double val ; /* outside temperature */ double alpha ; /* alpha */ } Bconv ; typedef struct { int num1 ; /* element number */ int num2 ; /* surface number */ double val ; /* outside temperature */ double emis ; /* emisssivity */ double fact ; /* geometric factor */ } Bradi ;
  • 20. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) hddmsrc/main.c int main (int argc, char* argv[]) { Thermal_Solver_Initialize( &argc, &argv, &npart, &insw, &outsw, &optsolv,,, Thermal_Solver(insw, outsw, optsolv, cgopts, nsopts, pmesh) ; Thermal_Solver_Finalize(optsolv, pmesh) ; hddmsrc/hddm_solver.c void Thermal_Solver () { npart = get_num_parent() ; mynpart = get_my_npart() ; /* NonSteady loop */ nsloop = get_cur_nsloop(insw, optsolv, nsopts) ; for ( ; nsloop < nsopts.max_loop ; nsloop++ ) { HDDM_Solver ( insw, outsw, optsolv, cgopts, nsopts, pmesh ) ; OutputResults ( pmesh, outsw, nsloop, NONSTEADY_OUT ) ;
  • 21. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) void HDDM_Solver () { /**** Parent Proc ************************************/ if ( am_I_parent() ) { HDDM_Parent ( insw, outsw, optsolv, cgopts, nsopts, pmesh ) ; } /**** Child Proc *************************************/ else if ( am_I_child() ) { HDDM_Child ( insw, optsolv, cgopts, nsopts ) ; } else { Pfprintf(stderr,"What am I ?n") ; Abort(-1); } }
  • 22. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) hddmsrc/hddm_par.c void HDDM_Parent ( ) {CGVector *cgvec ; cgvec = NewCGVectors(pmesh, cgopts) ; while(1) (                           /*=== CG LOOP ===*/ for ( ipart = 0 ; ipart < mynpart ; ipart++ ) { partsolv() ; } if (sw_cg == CG_FIRST ) { HBDD_SolveCoarseProblem(pmesh, cgvec, Cmat, DZvec) ; IncrementCGstep_step1(&optsolv, &cgopts, sw_cg, pmesh, cgvec, &gnorm); CGSetBnorm(gnorm, REF_CGNORM_RESET_WAY) ; set_cg_nr_norm0(gnorm, REF_CGNORM_RESET_WAY); } else { IncrementCGstep_step1(&optsolv, &cgopts, sw_cg, pmesh, cgvec, &gnorm); } IncrementCGstep_step2(&optsolv, &cgopts, sw_cg, cgvec ); /* Increment a CG step */ CGCheckConv(optsolv, &sw_cg, cgopts.tol, gnorm, &eps); /* Check convergence */ cgloop++; PrepNextCGstep(sw_cg, pmesh, cgvec); } /*=== CG LOOP ===*/ }
  • 23. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) hddmsrc/hddm_types.h #ifdef PARA_HDDM #define partsolv(a, b, c, d, e, f, g,h) ppartsolv(a, b, c, d, e, f, g,h) ← advthermal-h #include "p_partsolver.h" #include "hddm_chi.h" #else #define partsolv(a, b, c, d, e, f, g,h) spartsolv(a, b, c, d, e, f, g,h) ← advthermal-p #include "s_partsolver.h" advthermal-s #endif
  • 24. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) hddmsrc/p_partsolver.c void ppartsolv() { while(1) {/*=== DOM LOOP ===*/ COM_ReadInt( &sig, 1, &node, &type ) ; if ( sig == SIG_RECVDOM ) { if ( n_send < pmesh.n_domain ) { send_dom(node, send_domid, pmesh, need_precon_setup, cgvec.w, sw_cg,, } else { /* n_send == pmesh.n_domain */ sig = SIG_NODOM ; /* to Child */ COM_WriteInt ( &sig, 1, node, type ) ; } } else if ( sig == SIG_SENDRES ) { recv_dom( node,need_precon_setup, pmesh.dom, &cgvec, sw_cg, cgopts ) ; n_analyzed++ ; } } /*=== DOM LOOP ===*/
  • 25. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) hddmsrc/hddm_chi.c void HDDM_Child (InputSW insw, OptSolv optsolv, CGOpts cgopts, NSOpts nsopts ) { /*=== DOM LOOP ===*/ for (;;) { if ( sig == SIG_SENDDOM ) { get_dom( parnode, &need_precon_setup,&domid, &dmesh, sw_cg, sw_kpmat ) ; hddmmat = MkNewHDDM_SkylineMat(sw_cg, dmesh, optsolv, nsopts); /*=== FEM ===*/ domsolve(sw_cg, dmesh, hddmmat, optsolv ) ; put_res( parnode,need_precon_setup, hddmmat, dmesh, sw_cg, cgopts ) ; }
  • 26. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) hddmsrc/s_partsolver.c void spartsolv() { /*=== DOM LOOP ===*/ for ( idom = 0 ; idom < n_domain ; idom++ ) { dmesh=SetDom4CG(optsolv, sw_cg, idom, pmesh, cgvec); hddmmat = MkNewHDDM_SkylineMat(sw_cg, dmesh, optsolv, nsopts); /*=== FEM ===*/ domsolve(sw_cg, dmesh, hddmmat, optsolv ) ; for ( i = 0 ; i < dmesh.ninbd ; i++ ) { /* set cgvec */ cgvec.a_w[ dmesh.inbd[i].lonu ] += dmesh.force[ dmesh.inbd[i].dmnd ] ; } UnsetDom4CG(pmesh, &dmesh); } }
  • 27. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) hddmsrc/domfem.c HDDM_SkylineMat MkNewHDDM_SkylineMat() { /*+ Function: Make stiffness matrix for a subdomain (skyline matrix) +*/ select_element(dmesh.elm_type, optsolv.use_tet10_5); /* Make stiffness matrix gk & right hand vector gf*/ skyline_mkindex(dmesh, &gk); skyline_mkstiff_rhv(dmesh, gk, gf, optsolv, nsopts); /* Make decomposed stiffness matrix gk_inv */ skyline_mkreducedindex(optsolv, bctemp_table, gk, &gk_inv); copy_gk_to_inv(optsolv,dmesh, bctemp_table, gk, gk_inv); SKY_Decomposite(gk_inv, work); }
  • 28. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) void skyline_mkstiff_rhv() { /*+ Function: Make stiffness matrix & right hand vector itself +*/ for (i=0, nop=dmesh.nop; i < nel; i++, nop += nd_elm) { mk_elmk(ek, elm_crd, mat.lambda); add_ek_to_gk(ek, nop, nd_elm, gk); /* The Internal Heat Generation */ mk_elmf(ef, elm_crd, mat.inheat); add_ef_to_gf(ef, nop, nd_elm, gf); /* HeatFlux */ pt = dmesh.bcflux[i].num; gf[ pt ] -= dmesh.bcflux[i].val; /* HeatConvection */ mk_nop_conv(dmesh.nop, nop_conv, dmesh.nconv, dmesh.bcconv); add_ek_to_gk(ek2, nop, nd_elm2, gk); add_ef_to_gf(ef2, nop, nd_elm2, gf); /* HeatRadiation */ mk_nop_radi(dmesh.nop, nop_radi, dmesh.nradi, dmesh.bcradi); add_ek_to_gk(ek2, nop, nd_elm2, gk); add_ef_to_gf(ef2, nop, nd_elm2, gf);
  • 29. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) libfem/select_element.c void mk_elmk( double *ek, double *crd, double lambda ) { ft->make_elm_k( ek, crd, lambda ) ; } struct FuncTable { void (*make_elm_k)(double *ek, double *crd, double lambda) ; void (*make_elm_f)(double *ef, double *crd, double inheat) ; struct FuncTable Tet10 = { &mk_elmk_3_4_2, &mk_elmf_3_4_2,
  • 30. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) libfem/3d_conduct.c #if ( ELM_TYPE == TET4 ) void mk_elmk_3_4_1( double *ek, double *crd, double lambda ) { #elif ( ELM_TYPE == TET10 ) void mk_elmk_3_4_2( double *ek, double *crd, double lambda ) { #elif ( ELM_TYPE == TET10_5 ) void mk_elmk_3_4_2_5( double *ek, double *crd, double lambda ) { for ( intg = 0 ; intg < N_INTG ; intg++ ) { mk_df_detj_10( fx, fy, fz, &detj, xe, ye, ze, ps[intg][0], ps[intg][1], ps[intg][2], ps[intg][3] ) ; w = wt[intg]* detj / 6.0 ; ek[p] += ( fx[i] * fx[i] + fy[i] * fy[i] + fz[i] * fz[i] ) * w ;
  • 31. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) hddmsrc/domfem.c void domsolve() { /*+ Function: FEM solver for a subdomain +*/ put_neg_bctemp_to_vec(dmesh.ntemp, dmesh.bctemp, reac); skysl1_add_multvec(hddmmat.gk, reac, temp); SKY_MkSolution(hddmmat.gk_inv, temp); put_bctemp_to_vec(dmesh.ntemp, dmesh.bctemp, temp); d_clear(reac, matdim, 0.0); skysl1_add_multvec(hddmmat.gk, temp, reac); /* calc flux */ if (sw_cg == CG_LAST) { for (i=0, nop=dmesh.nop; i < dmesh.nel; i++, nop += dmesh.nd_elm) { mk_flux(elm_flux, elm_temp, elm_crd, mat.lambda); } } }
  • 32. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 2.2 ソルバの特徴 ・ HDDM ソルバ   CG 法の前処理として対角スケーリング前処理を使用している .   1 万自由度程度までの問題や温度規定境界条件数が多い問題であれば , HDDM ソルバの使用を薦める . ※ 使用可能モジュール : advthermal-s, advthermal-p, advthermal-h ・ BDD ソルバ  非常に強力な前処理法である BDD 法 [8] を使用している .  十分なメモリを確保できる計算機環境のユーザーは BDD ソルバの使用を薦め る .  ※使用可能モジュール : advthermal-p, advthermal-h ・ BDD-DIAG ソルバ   BDD 法における Neumann-Neumann 前処理を対角スケーリングに置き換えた修正      BDD 法 [10] を使用している .   BDD ソルバを使用するのに十分なメモリを確保できない場合は BDD-DIAG ソ ルバの使 用を薦める .  ※使用可能モジュール : advthermal-p, advtherrmal-h ・ IBDD ソルバ   BDD 法に不完全コース問題を採用した改良 BDD 法 [10] を使用している .  大規模自由度問題において IBDD-DIAG ソルバで収束が得られない場合に使用 する
  • 33. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 2.3 領域分割 (ADVENTURE_Metis) について "Part" 数は並列処理の手法 , 使用するノード数や計算機環境に基づいて決定され る . "Domain" 数は , 計算処理に必要とされるメモリに基づいて決定される . 細かく分割すればメモリの使用量を少なくできる . 静的負荷分散版の場合 , 1 領域あたりの要素数が 180-370 のとき BDD ソルバまたは BDD-DIAG ソルバを使用することで最良の性能を得ることが できる . 動的負荷分散の場合その数は 350-450 である . subdomainpart element NN N n × = n : 1 領域あたりの要素数 Nelemnt  :総要素数 Nsubdomain :領域分割数 Npart   :部分数
  • 34. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 図 5 ADVENTURE システムによる 解析の流れ メッシュ ADVENTURE_BCtool 境界条件設定 解析モデル (一体型) ADVENTURE_Metis 領域分割 解析結果 (分割型) ADVENTURE_Thermal FEM 解析 解析結果 (分割型) ADVENTURE_Visual 可視化システム ASCII File ADVENTURE Format File Single Module Parallel Module
  • 35. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 3.2 非定常解析機能 後退差分近似またはクランク・ニコルソン法による解析が可能 スタート 各領域の解析 領域間境界の更新 節点温度の更新 終了 階層型領域分割法 CG 法反復 時間積分ループ 図 6 :非定常解析の流れ
  • 36. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 3.3 入出力データについて 画面に出力される解析ログ以外は全て ADVENTURE フォーマットファイルであり , 部分 (Part) ごとに 1 ファイルとなっている 分割モデル ( 分割型 ) CG restart File 時間積分ステップ restart File 最終解析結果 時間積分ステップ毎 の解析結果 ADVENTURE_Thermal 並列ソルバ LOG 出力 必須 オプショナル 図 7 :入出力ファイル
  • 37. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 3.4 単位系について ADVENTURE_Thermal では , 入出力データの温度表現に摂氏を採用して いる . その他の単位系の指定機能は含まれておらず , 入力データ作成時に矛盾 のない単位系を使用しておく必要がある . 3.5 境界条件 ・温度規定境界条件 ( 節点指定 ) ・熱流束規定境界条件 ( 節点指定 ) ・熱伝達規定境界条件 ( 面指定 ) ・熱ふく射規定境界条件 ( 面指定 , 非定常解析時のみ )
  • 38. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 3.6 物性値 等方的な材料物性に対し , 以下の物性値が使用できる . ・熱伝導率 ・比熱 ( 非定常解析時に必要 ) ・密度 ( 非定常解析時に必要 ) ・ステファン・ボルツマン係数 ( 熱ふく射境界指定時に必要 ) ・発熱量 3.7 解析結果出力 解析結果としては階層型に領域分割された形式で与えられ , 各節点での温度 ( 摂氏 ) と熱流束が出力される . 入力解析モデルと同様に , 部分ごとに 1 ファイル の ADVENTURE_IO フォーマットで出力される .
  • 39. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Incomplete Balancing Domain Decomposition for Large Scale Thermal-Solid Coupling Problems Masao OGINO, Ryuji SHIOYA, Hiroshi KANAYAMA, and A.M.M. MUKADDES Kyushu University, JAPAN WCCM VI in conjunction with APCOM’04, Beijing, China Minisymposium: Large Scale Coupled Problems and Related Topics - Proposition of the IBDD-DIAG method for large scale analysis - Thermal-solid coupling analysis with ADVENTURE system - Thermal-solid coupling analysis of 12 million nodes model
  • 40. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) ADVENTURE System Module-based architecture of ADVENTURE system. Development of Computational Mechanics System for Large Scale Analysis and Design http://adventure.q.t.u-tokyo.ac.jp/ Open source CAE software for large scale analysis and design Solver modules, ADV_Solid Elastic-plastic analysis solver ADV_Forge Rigid-plastic analysis solver ADV_Impact Impact-contact analysis solver ADV_Thermal Thermal conductive analysis solver ADV_Fluid Thermal flow analysis solver ADV_Magnetic Electromagnetic analysis solver
  • 41. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Modules for thermal-solid coupling • ADVENTURE_Thermal: steady and non-steady thermal conductive analysis in solid, HDDM(Hierarchical Domain Decomposition Method)* solver, BDD(Balancing Domain Decomposition) preconditioner. • ADVENTURE_Solid: static elastic, elastic-plastic and large deformation analysis, HDDM solver, BDD preconditioner. *G.Yagawa and R.Shioya, Parallel finite elements on a massively parallel computer with domain decomposition, Computing Systems in Engineering, 4:4-6, 1994, pp.495-503. * HDDM is one of the parallel FEM based iterative DDM.
  • 42. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Flow chart of thermal-solid weak coupling analysis with ADVENTURE system. Mesh, Thermal properties, B.C. for thermal analysis Domain decomposition by ADVENTURE_Metis Thermal analysis by ADVENTURE_Thermal Thermal analysis by ADVENTURE_Thermal Structural analysis by ADVENTURE_Solid Structural analysis by ADVENTURE_Solid Mesh, Mechanical properties, B.C. for solid analysis Domain decomposition by ADVENTURE_Metis Deformation, stress, strain, ... Temperature informations Thermal analysis flowThermal analysis flow Solid analysis flowSolid analysis flow
  • 43. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Balancing Domain Decomposition (BDD)* DDM, which solve the interface problem using Preconditioned CG (PCG) method. Neumann-Neumann (N-N) preconditioner, which works to a residual vector as a local subdomain preconditioner. Coarse grid correction, which deletes a coarse space component from a vector. *J.Mandel, Balancing Domain Decomposition, Communications on Numerical Methods in Engineering, Vol.9, 1993, pp.233-241.
  • 44. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Domain decomposition Interface Domain Decomposition Method (DDM) gSuB = fKu = Original finite element problem: Analysis domain After eliminating interior DOF, we get a reduced problem on interface, called the interface problem, local Schur complement ( ) ( ) ( ) ( )( ) ( )i IB i II Ti IB i BB i KKKKS 1− −= Schur complement matrix( ) ( ) ( )∑= = N i Tiii RSRS 1 ( ) ( ) ( ) ( )iTi i i :R :f :K Ω→Ω restriction operator local stiffness matrix local RHS vector I : interior dofs, B : interface dofs where Interior
  • 45. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) N-N preconditioniner ( ) ( ) ( ) ( ) ( ) ( ) V N i Tiiiiii IRDR,VV:D =∑→ =1 Partition of unity :V The space of the dofs on interface, and The space of the dofs on interface of Ωi. ( ) :V i ( ) ( ) ( ) ( ) ( )    =Γ ≠Γ = − − φ φ i U i i U i i :S ~ :S S 1 1 † S(i) is non-singular, S(i) is singular. N-N preconditioning operator is where ( ) ( ) ( ) ( ) ( ) ,RDSDRT N i iTiiii NN ∑= =− 1 †
  • 46. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Construction of the coarse space Local coarse space is defined by, ( ) ( ) ( ) ,VZRangeSKer iii ⊂⊂ ( ) :V i Space of the interface of subdomain i.           − − − = 0100 0010 0001 12 13 23 xx xx xx z )i( X For the elastic problem, At point on ,)x,x,x(X 321 )i(Ω∂ .X:B ,ZBZ )i()i( X X )i( X )i( X )i( Ω∂→ ∑= For the heat conductive problem, [ ]T)i( ,...,Z 11= Num. of `1` is the num. of interface dof for ( ) .iΩ
  • 47. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) BDD preconditioner Preconditioning matrix is, ( ) ( ) ( ) ( ) ( ) ( )[ ]NNN ZDR,....,ZDRR 111 0 = 000 SRRS T= : coarse grid operator SRSRP T 0 1 00 −= : S-orthogonal projection operator where If you set solution of the coarse space problem to initial guess of the interface problem, BDD preconditioner can be simplified, ( ) ( ) ,PITPIPSM T NNBDD −−+= − −1 ( ) .TPISM NNBDD − − −=1Simplification
  • 48. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) BDD-DIAG: BDD with diagonal-scaling • The N-N preconditioner requires, - generalized inverse matrices, - large memory size to keep inverse matrices. ( ) ( ) ( ) ( )( ){ }i V ii SdiagmaxISS ~ i ⋅⋅+= α a regularization: low precision Moore-Penrose pseudo-inverse: high computational costs • The diagonal-scaling preconditioner is employed as local subdomain preconditioner, named BDD-DIAG. This method shows memory shortage and low computational costs, while it increases the number of iterations compared with BDD. ( ) ( ){ } ( ) .RSdiagRT N i Tiii DIAG ∑= = − 1 1 ( ) ,TPISM DIAGDIAGBDD −=− − 1 where
  • 49. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Incomplete balancing operator • Coarse grid correction: - to invert coarse grid operator - the dimension of is equal to, in thermal analysis: in solid analysis:   It is difficult to apply for large scale problems. • Incomplete parallel Cholesky factorized operator is employed for coarse grid correction* .    - may increase the number of iterations, - may decrease the computational costs greatly, total computation time is expected to be reduced. Even if it corrects using an approximate solution, it is investigated numerically that results are the same. ntdisplacemerigidofdofN × N 0S 0S
  • 50. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Incomplete balancing domain decomposition 000 RS ~ RS ~ T= : incomplete coarse grid operator S ~ RS ~ RP ~ T 0 1 00 −= : S-orthogonal projection operator where IBDD, IBDD-DIAG, Because the incomplete coarse grid correction cannot delete a coarse component, these methods cannot be simplified. ( ) ( ) ,P ~ ITP ~ IP ~ SM T NNIBDD −−+= − −1 ( ) ( ) ,P ~ ITP ~ IP ~ SM T DIAGDIAGIBDD −−+=− − 1
  • 51. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) BDD type preconditioners IBDD: N-N and incompletely balancing, IBDD-DIAG: Diagonal-scaling and incompletely balancing, ( ) ( ) .P ~ ITP ~ IP ~ SM T NNIBDD −−+= − −1 ( ) ( ) .P ~ ITP ~ IP ~ SM T DIAGDIAGIBDD −−+=− − 1 ( ) .TPISM NNBDD − − −=1 ( ) .TPISM DIAGDIAGBDD −=− − 1 BDD: N-N and completely balancing, BDD-DIAG: Diagonal-scaling and completely balancing,
  • 52. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Numerical examples Thermal-solid coupling problems: • Pipe model with 0.1M nodes, for comparison with BDD type preconditioners. • ABWR model with 12M nodes, as the large scale analysis on MPP. A related example: • Seismic response analysis of ABWR, which is an application of IBDD-DIAG in solid analysis.
  • 53. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Pipe model FE Mesh (tetrahedron-quadratic) Elements: 61,913 Nodes: 114,112 DOF in thermal analysis: 112,166 DOF in solid analysis: 339,411 Temperature distribution Equivalent stress distribution and deform configuration The pipe model 100 C P X X X X X 20 C
  • 54. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) 0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 40 120 200 280 360 480 640 800 1200 1600 Number of subdomains Time[sec] 0 10 20 30 40 50 60 70 80 90 100 40 120 200 280 360 480 640 800 1200 1600 Number of subdomains Numberofiterations Comparison of BDD performances in thermal analysis # subdomain vs. # iterations # subdomain vs. computational time BDD-DIAG BDD-DIAG IBDD-DIAG IBDD-DIAG IBDD IBDD BDD BDD Pentium4 3.0GHz X 4
  • 55. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Comparison of BDD performances in solid analysis 0 50 100 150 200 250 300 350 40 100 160 220 280 340 400 1000 2000 3200 Number of subdomains Numberofiterations 0 100 200 300 400 500 600 700 800 40 100 160 220 280 340 400 1000 2000 3200 Number of subdomains Time[sec] # subdomain vs. # iterations # subdomain vs. computational time IBDD-DIAG IBDD-DIAG BDD-DIAG BDD-DIAGIBDD IBDDBDD BDD Pentium4 3.0GHz X 4
  • 56. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) ABWR model Advanced Boiling Water Reactor FE Mesh (tetrahedron-quadratic) Elements: 7,486,792 Nodes: 11,794,506 DOF in thermal analysis: 12 M DOF in solid analysis: 35 M FE mesh of the ABWRABWR (TEPCO, Inc.)
  • 57. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Computational performances in thermal analysis Iterations Time ParLU** Memory DDM* 3,201 1,259 sec - 13.0 GB BDD 59 522 sec 371 sec 20.1 GB IBDD 98 288 sec 30 sec 19.8 GB BDD-DIAG 114 538 sec 371 sec 13.6 GB IBDD- DIAG 124 264 sec 30 sec 13.4 GB Computational environments: Pentium4 2.0GHz(dual) X 30 Acknowledgement: Prof. Nakabayashi, Toyo University, Japan Subdomains: 3,000 *DDM: DDM with diagonal scaling preconditioner **ParLU: time for (incomplete) parallel Cholesky factorization of coarse grid operator
  • 58. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Computational performances (solid) Computational environments: ES 1,024 processors 1.0e-07 1.0e-06 1.0e-05 1.0e-04 1.0e-03 1.0e-02 1.0e-01 1.0e+ 00 1.0e+ 01 1.0e+ 02 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 Number of iterations Relativeresidualnorm DDM: 17,565 iter., 2,806 sec, 894 GB memory IBDD-DIAG: 853 iter., 488 sec, 896 GB memory History of relative residual norm. Acknowledgement: The Earth Simulator Center
  • 59. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Seismic response analysis of ABWR using IBDD-DIAG -300.0 -200.0 -100.0 0.0 100.0 200.0 300.0 400.0 0.0 4.0 8.0 12.0 16.0 20.0 24.0 28.0 32.0 36.0 40.0 44.0 48.0 52.0 Elapsed time [sec] Acceleration -300.0 -200.0 -100.0 0.0 100.0 200.0 300.0 400.0 0.0 4.0 8.0 12.0 16.0 20.0 24.0 28.0 32.0 36.0 40.0 44.0 48.0 52.0 Elapsed time [sec] Acceleration elapsed time: 0.0sec – 0.96sec, Stress distribution and deformation of ABWR 1940 Elcentro, acceleration history in NS direction, sec.t 020=∆ CPU: ES 1,024 processors Time step: 200 (4.0sec) Computational time: 6.97hr CPU: ES 1,024 processors Time step: 200 (4.0sec) Computational time: 6.97hr Time-integration: Newmark’s beta Damping: none
  • 60. 第 2 回 ADVENTURE 上級者セミナー 2005 年 9 月 16 日 ( 金 ) Conclusions • A construction of new BDD type preconditioner, called IBDD-DIAG. • A thermal-solid coupling analysis with 12M nodes model on MPP. • Good performance of the IBDD-DIAG method in computational time compared with original BDD for large scale analysis. In the future works, • Comparison with other methods, AMG or FETI.

Editor's Notes

  1. Domain Decomposition is non-overlapping type. Then original system is reduced into the interface system. This equation called the interface problem. The coefficient matrix is called Schur complement.