2017年4月21日金曜日

nclでループが閉じていない時に出るエラー

nclで止まる時、errorを吐いてもよく分からない時がある。
それが

$ ncl hoge.ncl  
Copyright (C) 1995-2015 - All Rights Reserved 
University Corporation for Atmospheric Research 
NCAR Command Language Version 6.3.0 
The use of this software is governed by a License Agreement. 
See http://www.ncl.ucar.edu/ for more details. 
fatal:syntax error: line ××× in file hoge.ncl before or near \n  
end 
---^ 

fatal:error in statement 
fatal:syntax error: line -1 before or near   

^

fatal:error in statement 

これ。
大抵の場合(というか今のところ)、ループが閉じていない時に出るerrorなので、ループ文を確認すること。

githubに入門した

アカウントを作って、インストールだけして、放置プレイしていたgithub。
いい加減、これまでのスクリプトの類を整理する必要も出てきたので、もう使ってみよう!ということで。

今日の目標は、WRFのwpsを自動化したshellをgitにあげる。
乱雑になるので、ちゃんと整理しなおしてHPに上げること!←自分に言い聞かせる

参考URL
GitHub https://github.com/
【GitHub超初心者入門】この前初めてGitHubを使い始めたエンジニア見習いが書くGitHubの使い方と実践~とりあえず一緒に動かしてみようぜ!~ - Qiita http://qiita.com/nnahito/items/565f8755e70c51532459#%E3%83%97%E3%83%83%E3%82%B7%E3%83%A5%E3%81%97%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%A4%89%E6%9B%B4%E6%9B%B4%E6%96%B0%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B


1.web上のGitHubにリポジトリを作る。
web上のリポジトリを、リモートリポジトリと呼ぶらしい。

githubにログインする。

右側の"New repository"を選択する。


"Repository name"の窓に、適当な名前(今回は"WRF"とした)を入力する。

  • "Description"の窓には、このリポジトリの説明を入力できる。
  • 無料版の場合、"Public"(閲覧制限無し)しか選択することが出来ない。
  • "Initialize ...."にチェックを入れると、READMEをこの時点で作ることもできる。

"Create repository"を選択する。


これでWRFという名前のリモートリポジトリが出来た。

2.端末にリポジトリを作る。
端末上(つまり自分のPC)のリポジトリを、ローカルリポジトリと呼ぶらしい。
基本的にはどこにローカルリポジトリを作っても問題ない”はず”だが、研究室のimacと私用のmac book airとで共有できるように、google drive上にローカルリポジトリを作った。

$ mkdir ~/Google ドライブ/git #github用ディレクトリ
$ mkdir ~/Google ドライブ/git/WRF #ローカルリポジトリ
$ cd ~/Google ドライブ/git/WRF
$ git init
$ la -a
.               ..               .git

と.gitというディレクトリが出来れば成功。

3.ローカルリポジトリにファイルを登録する。
この作業のことを、コミットと呼ぶらしい。
コミットしたいファイルをwps-auto-v7.cshとして、このファイルをローカルリポジトリにcpもしくはmvして

$ git add wps-auto-v7.csh

こうすると、変更点を勝手にインデックスに追加してくれるらしい。
そのあと…

$ git commit -m "最初のコミット"

これで、インデックスの内容が全てローカルリポジトリに登録される。
オプション -m "hogehoge" で、メモを残せる。

3.web上のgithubにデータを送信する。
この作業のことを、(リモートリポジトリにデータを)プッシュと呼ぶらしい。
ここでは1でリモートレポジトリを作った時に作成されたURLを使う。
まずインデックスをリモートリポジトリに作成するために

$ git remote add origin https://github.com/h-yoshi/WRF.git

次にコミットされたファイルをリモートリポジトリにプッシュする。

$ git push origin master

するとリモートリポジトリ、つまりgithubにデータが登録されている。

うん。疲れた。笑
長かった。

ディレクトリを作るのにも挑戦したが、単純には作れないらしい(空のディレクトリを作ることが出来ない)
web上でパス指定してデータをプッシュすることでディレクトリを作り、それをリモートすることでローカルリポジトリに対応するディレクトリを作成した。

とりあえず今回はここまでにする!

2017年4月20日木曜日

連続の式(質量保存の法則)

気分転換もかねて、こういうのも更新しようとふと思い立ってページを開いたら連続の式だった。

連続の式つまり、質量保存の法則とは、運動しても空気の質量は変化しないことを示したものである。
  1. 3辺の長さが$\delta x$、$\delta y$、$\delta z$、つまり体積が$\delta x\delta y\delta z$の直方体を考える。
  2. 空気の密度$\rho$、つまり質量が$\rho \delta x\delta y\delta z$だと考える。
  3. この直方体が風によって動き、体積が変化しても質量が変化しない。
ことを数式で示すと、

$\begin{align} \dfrac {d\left( \rho \delta x\delta y\delta z\right) } {dt}=0 \end{align}$

になる。(1)式左辺に、微分の積の法則($\dfrac {d} {dx}\left( fg\right) =f\dfrac {dg} {dx}+g\dfrac {df} {dx}$、今は${f}=\rho$、${g}=\delta x\delta y\delta z$)を用いると

$\begin{align} \rho \dfrac {d\left( \delta x\delta y\delta z\right) } {dt} + \delta x\delta y\delta z\dfrac {d\rho } {dt} =0 \end{align}$

(2)式の両辺を$\rho \delta x\delta y\delta z$で割ると

$\begin{align} \dfrac {1} {\rho }\dfrac {d\rho } {dt}+\dfrac {1} {\delta x\delta y\delta z}\dfrac {d\left( \delta x\delta y\delta z\right) } {dt}=0\end{align}$

(3)式の左辺第二項は、三次元の発散の式($\dfrac {1} {V}\dfrac {dV} {dt}=\dfrac {\partial u} {\partial x}+\dfrac {\partial v} {\partial y}+\dfrac {\partial w} {\partial z}$、今は${V} = \delta x\delta y\delta z$)なので

$\begin{align} \dfrac {1} {\rho }\dfrac {d\rho } {dt}+\dfrac {\partial u} {\partial x}+\dfrac {\partial v} {\partial y}+\dfrac {\partial w} {\partial z}=0\end{align}$

(4)式が連続の式、質量保存の式と呼ばれる。
一般的に、非圧縮性流体(=密度がどの時間、どの場所でも一定である流体)である場合、$\dfrac {d\rho } {dt} =0$(密度が時間変化しない)なので、これを(4)式に用いると、

$\begin{align} \dfrac {\partial u} {\partial x}+\dfrac {\partial v} {\partial y}+\dfrac {\partial w} {\partial z}=0\end{align}$

つまり、非圧縮性流体の場合、発散=0ということになる。

2017年4月19日水曜日

student用無料Intel CompilerをMacにインストールする

参考URL
Qualify for Free Software - Student | Intel® Software https://software.intel.com/en-us/qualify-for-free-software/student

条件は、Intelのアカウントを持っていること。
ちなみに無料でインストール出来るのは

Intel® Parallel Studio XE Composer Edition for C++ macOS*
Intel® Parallel Studio XE Composer Edition for Fortran macOS*

ですよ。笑
C++とFortranを両方インストールしたい場合、それぞれのserial numberを発行する必要があります。
Mac版で進めますが、windows版Linux版もあります。
基本的な流れは、C++もFortranの一緒なので、Fortranをインストールする流れを。


  1. 参考URLに飛び、”Fortran OS X*”をクリック。
  2. 4つの質問に答えて、"Agree"をクリック。
  3. 必要箇所を埋めて、"Submit"をクリック。
  4. Intelからメールが来るので、確認して"Download"をクリック。
  5. "Choose a Version"で任意のバージョンを選択し(基本的には最新版で良いと思う。)、"m_fcompxe_online_2017.2.046.dmg(上)"をクリックしダウンロード。下は、フルパッケージをダウンロードしてインストールする場合。
  6. ダウンロード先で、m_fcompxe_online_2017.2.046.dmgを実行する。
  7. 今回はrootでインストールするので、"install as root"を選択する。
  8. root、もしくはroot権限のあるアカウントのパスワードを入力する。
  9. 少し待ち時間が有る。たぶん。たぶんあった。
  10. ライセンスの規約を読み、"accept"にチェックを入れる。
  11. 4ないしは5で確認できる、シリアルナンバーを入力する。
  12. 学習プログラム に入る場合は"Yes"、入らない場合は"No"を選択する。
  13. Xcodeを一緒にインストールする場合は"Both command line and Xcode integration environment"、既にインストールされている場合は"Command line install only"を選択する。
  14. パスやインストールされるものを確認する。問題なければ"install"、カスタマイズしたければ"Customize"を選択する。ここではフルパッケージでインストールする。
  15. 待ち時間がある。おおよそ20分位だった。
  16. インストール完了。"ifort"とコマンドラインに入力すれば、しっかりerrorが返ってくる。

C++もカスタマイズの内容が違うだけで手順は全く同じ。

Sierraでは/Volumesでmkdir出来ない

/Volumes以下にディレクトリを毎回作って、sshfsでマウントさせるshellを使っていたのだが…例えば…

#!/usr/bin/csh

if(! -d /Volumes/mnt_la ) then
        mkdir /Volumes/mnt_la
endif

sshfs username@laurel.kudpc.kyoto-u.ac.jp:/LARGE0/groupname/username /Volumes/mnt_la

のようにして、京大スパコンのストレージをマウントしていた。

どうやら、sierraでは/Volumesはroot権限が必要らしい。

参考URL
macos - permission denied mkdir /Volumes - Ask Different https://apple.stackexchange.com/questions/235820/permission-denied-mkdir-volumes

つい最近までyosemiteだったので、全く気が付かなかった。
yosemiteでは、アカウントの権限で/Volumesにmkdir出来ていた。
まま、無理してroot権限の位置にこだわる理由がないので、アカウントの権限でmkdir出来る位置にディレクトリを作ってマウントすることにした。
いろんなaliasを変えなくては。


2017年4月18日火曜日

tmuxのおすすめページ

参考URL
tmuxを使い始めたので基本的な機能の使い方とかを整理してみた - 完熟トマト http://kanjuku-tomato.blogspot.jp/2014/02/tmux.html

綺麗なくらいにまとまっていた。
言うこと無い気がする。

2.tmux - Hiroaki Yoshioka's page
https://sites.google.com/a/dpac.dpri.kyoto-u.ac.jp/yoshioka/tips/tmux

インストールの類は自分のページで。

Macでアカウントにroot権限を与える

参考URL
Mac でルートユーザを有効にする方法 - Apple サポート
https://support.apple.com/ja-jp/HT204012

まさにこの通りだった。笑
この作業をする前のステータスが”管理者”になっているアカウントであったとしても、この作業をしないとroot権限のコマンドは入らない。
もともとのパスワードと、root権限を与える際に設定するパスワードは同じでも構わない。

2017年4月16日日曜日

BloggerにTwitterのUser Timelineを埋め込む

参考URL
タイムラインを埋め込む方法 | Twitterヘルプセンター https://support.twitter.com/articles/20171533?lang=ja

変な時間に起きたら寝られなくなってしまい。

基本的には

**************** ここから参考URL先のコピペ ****************

ウェブサイトに埋め込みタイムラインを追加するには

  1. Twitterにログイン
  2. [設定] に移動し、[ウィジェット] を選択
  3. [新規作成] をクリック
  4. 埋め込みタイムラインの種類を選択し、設定を開始
    •  [ユーザータイムライン] の場合、ツイートを表示したいユーザーのユーザー名を入力します。
    •  [お気に入り] の場合、お気に入りを表示したいユーザーのユーザー名を入力します。
    •  [リスト] の場合、ドロップダウンメニューから自分が作成または保存した公開リストを選択します。
    •  [検索] の場合、検索クエリを入力します (高度な検索の場合、検索オプションを使用します)。
    • 不適切なコンテンツや冒涜的なコンテンツなどを排除するには、セーフサーチを選択します。
  5. デザインをカスタマイズ。ウェブサイトに合った高さテーマ (明るいか暗いか)、リンクの色を指定します。画像が含まれるツイートで画像を自動的に表示するように埋め込みタイムラインを設定することもできます。
  6. [ウィジェットを作成] をクリックし、コードを自分のウェブサイトのHTMLにコピーペースト。これで完了です。

**************** ここまで参考URL先のコピペ ****************

なんだろうけど、古い?のか、ユーザータイムラインの種類を、ウィジェットのページで選択することが出来ないので。


ここのページを使う方法を

  1. 上のURLに飛んで、一番上の窓に「@ユーザー名」を入力する。
  2. 下にスクロールして、"Embedded Timeline"を選択する。
  3. 下に該当するアカウントのtweetが出てくるのでこだわりがなければ、"Copy Code"を選択すれば良い。だがしかし、大抵の場合は、多少なりともこだわりがあると思うので。笑
  4. "set customization options"を選択すると、サイズや色、言語を選べるので自由に選択してから、"Update"を選択した後、"Copy Code"を選択すると、クリップボードにコピーされる。
  5. Bloggerの管理画面に飛び、"レイアウト"を選択し、好みの位置に"ガジェットを追加"する。※もちろんデフォルト以外の位置にも追加できる。これはBloggerの機能。
  6. 新しいウィンドウが立ち上がるので、"基本"から"HTML/JavaScript"を選択。
  7. "タイトル"の窓にはタイトルを、"コンテンツ"の窓には4でコピーしたコードを入力して、”保存”を選択する。ここでコードを書き換えれば、色やサイズを変更もできる。
  8. tweetが、任意の位置に指定したサイズで埋め込まれる。

人のアカウントのtweetを勝手に自分のHPに埋め込むこともできる…けど、有名人でもない限り、嫌がられるだろうことは自明なので、やらないように。笑

githubの基本用語

ある仕事でGithubをちゃんと使うようになって、いろんな基本用語(知識)があやふやなことに気付いたのでメモ。 リポジトリ ファイルやディレクトリの状態を保存する場所。 手元の端末 にある「ローカルリポジトリ」とサーバなどネットワーク上にある「リモートリポジトリ」の...