読者です 読者をやめる 読者になる 読者になる

lochtext

http://us.battle.net/sc2/en/profile/2312833/1/lochtext/

近況:4通目の発明提案書を提出した

発明塾の2014夏コンテストの発明提案書を提出した。これで2013年9月から執筆した発明提案書は4通目になる。このコンテストは某業界大手クライアントからの委託であり採用されると発明は譲渡される代わりに賞金をもらうことができる。インターンシップから帰ってきてからとにかく時間を突っ込んで完成させたので満足度は高いが、個人的には技術的完成度はまだまだのところもあると思っている。採用になった場合特許申請の1年6カ月後に公開されるので、また告知します。

渋谷で外国人に話しかけられた

「ソーォリィ、スゥスァヤ?」

こんなかんじ。スラブ系の30-40代くらいの女性。
どこに行きたいのって聞いたらスゥスァヤって繰り返すので、ハァ? って思ったんだけど、よく考えたら渋谷で思い当たるのってツタヤくらいしかないので、ここの道をまっすぐ行けば着くよって教えてあげて別れた。
最近外国人にいきなり話しかけられてもそこそこ返せるようになった。やはり研究室で日常的に英語を話しているのは大きい…。

ボードゲーム「モノポリー」のモンテカルロシミュレーションプログラム

授業の課題でモンテカルロシミュレーションを作れといわれたので、モノポリーをシミュレートするプログラムをC++で作ってみた。以下のような特徴がある。

  • 乱数発生器としてメルセンヌツイスタを用いた。
  • 繰り返し回数や土地の価格などを自由に変更できる。
  • プレイヤーごとの勝率や、ゲームが既定ターンで終了した割合などを出力できる。
  • プレイヤーの行動パターンがしょぼい。自由に追加できるので追加して遊ぼう。
  • 交渉による土地の交換などは実装していない。
  • チャンスカード、鉄道、エネルギー会社、刑務所なども実装していない。
  • 家を買うところのソースが良くないと思う。再帰とかできれいに実装できるのかな?

以下ソースを貼り付け

続きを読む

FortranをCっぽく書く

授業で分子動力学(※)シミュレーションをFortran実装するという課題が出たのでやってみた。本当はFortran2003の機能を使ってC++っぽくオブジェクト指向で書きたかったが途中で挫折した。

とりあえずCっぽくはなったと思うので公開してみる。
他の人が読めないFortranコードを書く研究者が減るといいなぁ。

(※)FCC構造に置いたアルミニウム原子のシミュレーション。

参考:
Verlet法の計算手順
ドウジンテイスウ.log — Fortran2003の試用ーgfortran

module particles
implicit none

real(8) :: dt = 1.0d-15
real(8) :: m = 1.67d-27 * 27.0d0
real(8) :: a0 = 4.05d-10

integer :: step
integer :: endStep = 2000

type :: particle
  real(8) :: x(3),xnew(3),xold(3) !座標
  real(8) :: v(3) !速度
  real(8) :: f(3) !力
  real(8) :: r(108) !原子間距離(allocatable is better)
end type particle

end module particles

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
program MD
use particles
implicit none

type(particle) :: ps(108)
integer i

call psInit(ps)
call forceUpdate(ps)
call positionUpdateInit(ps)

do step=1,endStep

  call forceUpdate(ps)
  call positionUpdate(ps)
  call velocityUpdate(ps)
  call writeTrajectory(ps)

  call goToNextStep(ps)

end do

stop
end program

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine psInit(ps)
use particles
  type(particle):: ps(108)
  integer i,j,k

  do i =1,3
    do j = 1,3
      do k = 1,3
        ps(((i-1)*9+(j-1)*3+k)*4-3)%x(1)=(i-1)*a0
        ps(((i-1)*9+(j-1)*3+k)*4-3)%x(2)=(j-1)*a0
        ps(((i-1)*9+(j-1)*3+k)*4-3)%x(3)=(k-1)*a0
      end do
    end do
  end do

  do i = 1, 108, 4

  ps(i+1)%x(1)=ps(i)%x(1)+a0/2.0d0
  ps(i+1)%x(2)=ps(i)%x(2)+a0/2.0d0
  ps(i+1)%x(3)=ps(i)%x(3)+0.0d0
  ps(i+1)%v(1)=0.0d0
  ps(i+1)%v(2)=0.0d0
  ps(i+1)%v(3)=0.0d0

  ps(i+2)%x(1)=ps(i)%x(1)+0.0d0
  ps(i+2)%x(2)=ps(i)%x(2)+a0/2.0d0
  ps(i+2)%x(3)=ps(i)%x(3)+a0/2.0d0
  ps(i+2)%v(1)=0.0d0
  ps(i+2)%v(2)=0.0d0
  ps(i+2)%v(3)=0.0d0

  ps(i+3)%x(1)=ps(i)%x(1)+a0/2.0d0
  ps(i+3)%x(2)=ps(i)%x(2)+0.0d0
  ps(i+3)%x(3)=ps(i)%x(3)+a0/2.0d0
  ps(i+3)%v(1)=0.0d0
  ps(i+3)%v(2)=0.0d0
  ps(i+3)%v(3)=0.0d0

  end do

  return
end subroutine psInit

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine positionUpdateInit(ps)
use particles
implicit none
  type(particle) :: ps(108)
  integer :: i,j

  do i = 1,108
    do j = 1,3
      ps(i)%xold(j) = ps(i)%x(j)
      ps(i)%x(j) = ps(i)%x(j)+dt*ps(i)%v(j)+dt*dt/(2.0d0*m)*ps(i)%F(j)
    end do
  end do

  return
end subroutine positionUpdateInit

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine forceUpdate(ps)
use particles
implicit none
  type(particle) :: ps(108)

  real(8) :: eps = 0.27d0 * 1.602d-19
  real(8) :: alpha = 1.16d10
  real(8) :: r0 = 3.25d-10

  integer :: i,j,k

  do i=1,108
    do j = 1,3
      ps(i)%f(j) = 0.0d0
      do k=1,108
        if(i /= k) then
          ps(i)%r(k) = dsqrt((ps(i)%x(1) - ps(k)%x(1))*(ps(i)%x(1) - ps(k)%x(1))+&
                              (ps(i)%x(2) - ps(k)%x(2))*(ps(i)%x(2) - ps(k)%x(2))+&
                              (ps(i)%x(3) - ps(k)%x(3))*(ps(i)%x(3) - ps(k)%x(3)))
          ps(i)%f(j) = ps(i)%f(j) + (-1.0d0*eps)*(-2.0d0*alpha*dexp(-2.0d0*alpha*(ps(i)%r(k)-r0))&
            +2.0d0*alpha*dexp(-1.0d0*alpha*(ps(i)%r(k)-r0)))*(ps(i)%x(j)-ps(k)%x(j))/ps(i)%r(k)
        else
          ps(i)%r(k) = 0.0d0
        end if
      end do
    end do
  end do

  return
end subroutine forceUpdate

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine positionUpdate(ps)
use particles
implicit none
  type(particle) :: ps(108)

  integer i,j

  do i = 1,108
    do j = 1,3
      ps(i)%xnew(j) = 2.0d0*ps(i)%x(j)-ps(i)%xold(j)+dt*dt/m*ps(i)%f(j)
    end do
  end do

  return
end subroutine positionupdate

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine velocityUpdate(ps)
use particles
implicit none
  type(particle) :: ps(108)

!!!!未実装
  
  return
end subroutine velocityUpdate

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine writeTrajectory(ps)
use particles
implicit none
  type(particle) :: ps(108)

  integer :: i
if(mod(step,1000) == 0) then
  print '("step=",i10)',step

  do i = 1,108
    print '("x=",e10.2e2,",y=",e10.2e2,",z=",e10.2e2)',&
	ps(i)%xnew(1),ps(i)%xnew(2),ps(i)%xnew(3)
  end do

end if

  return
end subroutine writeTrajectory

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine goToNextStep(ps)
use particles
implicit none
  type(particle) :: ps(108)

  integer :: i,j

  do i=1,108
    do j=1,3
      ps(i)%xold(j)=ps(i)%x(j)
      ps(i)%x(j)=ps(i)%xnew(j)
    end do
  end do

  return
end subroutine goToNextStep

エネファームは売電できない

正確に言うと、エネファーム+太陽光のシステムにしないと売電できない。
これの困ったところは、家庭の電気需要変動によって動かしたり止めたりという場面がどうしても出てくるため、発電効率のよいSOFC型のエネファームにおいてセルの劣化が激しくなる。これによるライフサイクルコストの向上は相当なものだと思われるので、常に定格電圧を維持して売電できるようにすべきなのだが、どうも制度上それはできないらしい。まぁ電力会社だって不安定部分の吸収・供給だけ押し付けられちゃたまらんわということか。

WIRED vol.11レビュー

http://wired.jp/magazine/?id=11&from=headerright

Nest

グーグルのNest買収が与える影響--期待される「モノのインターネット」の普及促進 - CNET Japan

「火災警報器」という地味すぎる分野でのイノベーション。アメリカの警報機はよく誤作動するらしくその改善と、IoTの先駆的な取り組みを内蔵しているらしい。今家についている警報機は誤作動したことがないのでこの製品がすごいのかどうかはわからなかった。

マクラーレンアプライド・テクノロジーズ

マクラーレンのF1技術、薬剤の臨床試験に応用される : F1通信
F1チームの技術の根幹は「モニタリング&分析」だという話。NASA由来の技術が日常生活で使われているように、そういう極限環境で進化したモノをフツウの世界に転用するのはアメリカ人の得意技だが、イギリスにもそういう良い文化があるらしい。

キューブカット工法

ディーアイシービルの解体に「キューブカット工法」を適用|最新情報|株式会社大林組
画像が少ないのはまだ企業秘密だからか。ネットを検索しても画像が全然出てこなかった。

Spiber 関山和秀

Spiberとは | Spiber Inc.
http://www.nistep.go.jp/wp/wp-content/uploads/nicestep2010-07_sekiyama.pdf
どう使っていくのか、ホントに期待できる。どんな機能性持たせられるのかは未知数なのでもうちょっと突っ込んで調べてみたい。

MOLCURE

あんまり情報見つからず。医療の自動化関連っぽい。

無電源ワクチン保管庫

Vaccine Cold Chain Device | Intellectual Ventures
出自はIVだからどっかに特許があるんだがどれかはわからなかった。また調べて追記する。

撲滅の経済学

ポリオ撲滅に向けてアフガニスタンで最後の戦いを繰り広げる医療チーム。伝染病は撲滅に近づくほど1症例当たりのコストが上がるが、根絶による未来のコスト削減がそれを補って余りある、という話。

Bill Gates & Bill Clinton

「ビッグ・プッシュ」と「傲慢な援助」の対立を超えて、アメリカの開発経済に関する議論を良い方へ向かわせる力をこの2人は持っている。

入学式に参加しませんでした。

ニトリのベッドの配送とかぶってしまったので…。

組み立てやってくれて2万は非常に安いと思った。
でも次からはもうちょっと早く届けてくれよな!