1/29/2009

ミニモニタ

http://www.amazon.co.jp/exec/obidos/ASIN/B001QVJ83C/gj_moji-22/ref=nosim/
USB接続らしい。これは便利そうだ。

ただ,モニタ自体安くなっているので,場所に困るとか,延長して別のところで見せたりとか,ちょっと変わった利用の仕方かな。
あるいはサーバーとか?

実験棟などでは,普段はPC単体でデータログして,確認のためにこれに繋いで見るっていうのはありかもしれないな。小型PCも中古だといくらでも手にはいるので,HDDを換装すれば信頼できるようになるし。

1/27/2009

非対称,構造対称マトリクスの解法 MKL PARADISO

備忘録。
水熱連成で,非対称マトリクスになってしまう場合について。
MKLのParadisoで非対称マトリクスを解くためのサブルーチンの一例。

サンプルコード:

INCLUDE 'mkl_pardiso.f90'
subroutine MainMKL()
use MKL_PARDISO
real(8) :: A(5,5)
real(8) :: val(13)
integer :: col(13)
integer :: ptrB(5)
integer :: ptrE(5)
integer :: m
real(8) :: alpha

!MKL PARAMETERS
type(mkl_pardiso_handle) :: pt(64)
integer :: maxfct=1, mnum=1, mtype=11, phase=13, n, nrhs=1, error, msglvl=0
integer :: iparm(64)
integer :: nnz
integer :: ncol
integer :: idum
real(8) :: ddum
real(8), allocatable :: value(:)
real(8), allocatable :: b(:)
real(8), allocatable :: x(:)
integer, allocatable :: columns(:)
integer, allocatable :: rowindex(:)
integer, allocatable :: perm(:)

integer :: i, j, k
integer :: nzidx
integer :: MAX_OF_NODES

pt(:)=mkl_pardiso_handle(0)
iparm(1)=0

A=0.D0
A(1,1)=1.D0
A(1,2)=-1.D0
A(1,4)=-3.D0
A(2,1)=-2.D0
A(2,2)=5.D0
A(3,3)=4.D0
A(3,4)=6.D0
A(3,5)=4.D0
A(4,1)=-4.D0
A(4,3)=2.D0
A(4,4)=7.D0
A(5,2)=8.D0
A(5,5)=-5.D0


!n x nを定義
MAX_OF_NODES=5
n=MAX_OF_NODES


!rowIndexを定義
allocate(rowindex(1:(n+1)))
allocate(b(1:n))
allocate(x(1:n))
allocate(perm(1:n))
rowindex(1)=1
nnz=0
do i = 1, n
ncol=0
do j = 1, n
if(A(i,j)/=0.D0) nnz=nnz+1
if((A(i,j)/=0.D0)) ncol=ncol+1
enddo
rowindex(i+1)=rowindex(i)+ncol
enddo
allocate(value(1:nnz))
allocate(columns(1:nnz))

nzidx=0
do i =1, n
do j=1, n
if(A(i,j)/=0.D0)then
nzidx=nzidx+1
value(nzidx)=A(i,j)
columns(nzidx)=j
endif
enddo
enddo

do i=1, nnz
write(*,*) value(i), columns(i)
enddo
!-------------------------------------------------------------
!Factorization & Solution
!-------------------------------------------------------------
phase = 13 ! only factorization

!ここで,OutFvecを代入
do i = 1, n
b(i) = 1.D0
end do

call pardiso (pt, maxfct, mnum, mtype, phase, n, value, rowindex, columns,&
& perm, nrhs, iparm, msglvl, b, x, error)
write(*,*) 'error', error
do i = 1, n
write(*,*) ' x(',i,') = ', x(i), b(i)
end do


b=matmul(A, x)
do i = 1, n
write(*,*) ' b(',i,') = ', b(i)
end do

!-------------------------------------------------------------
!Termination and release of memory
!-------------------------------------------------------------
phase = -1 ! release internal memory
CALL pardiso (pt, maxfct, mnum, mtype, phase, MAX_OF_NODES, value, rowindex, columns,&
& perm, nrhs, iparm, msglvl, b, x, error)
return
end subroutine MainMKL

1/23/2009

ぼー

なんというか,学生の卒論,修論データをチェックしていると,本当にいろいろなことに気づく。
まさしく,研究テーマの宝の山なんですが,あまりにおおくて,メモしていても忘れてしまう。
1年前の今頃,この実験はかならずやろう,と思っていたことを思い出したり,なんでこのデータをこのグラフで今まで整理してこなかったのか,と本当に愕然とするような事態にも遭遇する。

あと,うちでは,乾燥装置(11%,105度,冷凍)を整備したけれども,実験の材齢のデータで水和をとめておくことは本当に重要。11%RHは長期的にやるとC-S-Hが形かわっている感じがするけど,その他のデータは半年くらいなら融通が利く。東北のH先生には,ドモホルン方式だね,といわれたけど,追加的に確認実験をして,整合性がとれたり,仮説が立証されると本当に小躍りする。


しばらくは,表面関係の本を読みあさっていたけれども,また,水分移動,熱移動の話にもどってきた。今年は,JCIで熱勾配による水分移動を熱伝導率の含水率依存性から評価する論文を岸君が出した。ペーストの熱伝導率では,含水率が大きいときは,20%程度も水分移動で熱が運ばれることを実験的に示すとともに,熱勾配の物性値をある指標から定量的に予測できることも示した。
水熱連成大事だね,という前置きの論文です。

で,20日から,水熱の完全連成プログラムをつくっている。完全に連立するとマトリクスが対称にならないので,いろいろ思案していたけども,結局MKLの非対称アルゴリズムで対応することにした。来年度の科研があたれば,水・熱・応力完全連成を目指したいところです。

また,JCIでは4年生二人ががんばって,論文を投稿した。一人はセメント硬化体の温度履歴依存性について,相組成と反応率から説明する論文。収縮理論と絡めるとその大事さがわかると思うけれども,そこが記載できなかったので,ちょっと唐突な論文になってしまったかも。

もう一人は,高炉セメントの水和で温度履歴の影響。
彼の研究は,投稿には間に合わなかったけど石膏やアルミの挙動とひずみの関係について,ある程度の知見が得られた。石膏を多く添加することの意義,というのがあきらかになったと思っている。

寺本は,相変わらず超高強度のデータを示した。
私は,マスコンのひび割れ幅の式です。JCI指針のものを投稿させていただいた。

そろそろ,科研および国交省の助成のおわりが近づいているので,いままでのデータをまとめて論文・報告書を書かないといけないなあ。
頭にある奴を早くはき出したい。

1/04/2009

あけましておめでとうございます。

謹賀新年

あけましておめでとうございます。
今年は,ばりばり,がんばっていきたいと思います。