有限要素法で格子分割 for Python
有限要素法の勉強中。3日目。 これまで研究で有限要素法(FEM)や有限体積法(FVM)をやってきた。しかし、それらは汎用コードの恩恵を受けて、GUI上で操作するだけであった。しかし、エンジニアたるもの自分でコーディングしなければという趣味的な衝動を受け、実装を試みている。
有限要素法の基本
- GEOMETRY: 領域設定
- MESHER: 格子生成
- BC: 境界条件・初期条件の設定
- SOLVE: 解析
- POST PROSSECE: 結果の表示
格子生成
まず初めにつまづいたのが、格子生成である。これが出来なければなにもはじまらない。
格子(メッシュ)というのは、解析する形状を細かい領域に分割することである。格子には(二次元では)三角形や四角形が主に使われる。物理シミュレーションの分野以外にも、3Dのイメージ等で使われる。
ドロネー線図を使っての、格子分割が重要なようだ。
「計算幾何講義」 http://www.kanenko.com/~kanenko/KOUGI/CompGeo/cpgeoc.pdf
実装してみる
有限要素法では、要素(エレメント)とそれを形成する節点(ポイント)が必要である。自動格子分割では、要素と節点の管理をどうするかがキモである。とりあえず四角要素で格子分割してみた。
https://gist.github.com/peace098beat/d4738a60e9c9e2e63c23
とりあえず、四角形要素に対して、各要素を保持しながら四角形を作ることができた。コーディング初心者の僕では難しかった。
次回は、この四角系を三角要素に分割したい。分割では要素の削除・追加等の更新作業が必要になるのでまたややこしくなりそう。
参考
「基本的な有限要素法」 http://hplgit.github.io/INF5620/doc/notes/fem-sphinx/main_fem.html 1ページだが、非常にたくさんの資料が詰め込まれている。 「人工環境設計解析工学 メッシュ生成と アダプティブリメッシング」 http://www.nasl.t.u-tokyo.ac.jp/katsu/lectures/ee-analysis/adaptive.pdf 「2次元の階層メッシュを用いた高速なアダプティブ解析」 http://mps.q.t.u-tokyo.ac.jp/~muro/ResearchAreas5_J.htm
理論と実務がつながる 実践有限要素法シミュレーション―汎用コードで正しい結果を得るための実践的知識
- 作者: 泉聡志,酒井信介
- 出版社/メーカー: 森北出版
- 発売日: 2010/09/18
- メディア: 単行本(ソフトカバー)
- クリック: 10回
- この商品を含むブログを見る
<解析塾秘伝>有限要素法のつくり方! -FEMプログラミングの手順とノウハウ-
- 作者: 石川博幸,青木伸輔,日比学,NPO法人CAE懇話会解析塾テキスト編集グループ
- 出版社/メーカー: 日刊工業新聞社
- 発売日: 2014/06/24
- メディア: 単行本
- この商品を含むブログ (1件) を見る
【Amazon.co.jp限定 】 ASUS ゲーミングモニター 23型フルHDディスプレイ (応答速度1ms / HDMI×2,D-sub×1 / スピーカー内蔵 / 3年保証) VX238H-P
- 出版社/メーカー: Asustek
- 発売日: 2014/05/28
- メディア: Personal Computers
- この商品を含むブログを見る
- 作者: 裕時悠示
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/11/17
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 丸戸史明,深崎暮人
- 出版社/メーカー: KADOKAWA
- 発売日: 2016/11/19
- メディア: 文庫
- この商品を含むブログ (2件) を見る
- 作者: 近江のこ
- 出版社/メーカー: 小学館
- 発売日: 2016/11/18
- メディア: Kindle版
- この商品を含むブログを見る
Pythonでスクレイピングする | youtube動画のヒット数を調べる
BeautifulSoup
題名のとおり。以前から興味を持っていたスクレイピングを試してみました。
結構簡単。
今回は、youtubeの検索結果のヒット数が知りたかった。いちいち手で打ってしらべるのが面倒だったので、Pythonでやってみる。Webページをコードからいじるのは楽しいです。
URLはこうなっている
https://www.youtube.com/results?search_query=lock+dance
"search_query="の後を変更すればいいわけだ。
コードはこうなった。
試したコード
# -*- coding: utf-8 -*- import urllib2 from bs4 import BeautifulSoup # 検索先 youtube_url = 'https://www.youtube.com/results?search_query=' # 検索ワード格納用バッファ search_querys = [] search_querys.append('dance') search_querys.append('ダンス') search_querys.append('ヒップホップダンス') search_querys.append('ヒップホップ+ダンス') search_querys.append('hiphopdance') search_querys.append('hiphop+dance') search_querys.append('lockdance') search_querys.append('lock+dance') search_querys.append('housedance') search_querys.append('house+dance') search_querys.append('breakdance') search_querys.append('break+dance') search_querys.append('breaking') # 検索結果格納用バッファ result = [] for search_query in search_querys: # アクセス先を生成 URL = youtube_url + search_query # htmlを取得 res = urllib2.urlopen(URL) # 料理する soup = BeautifulSoup(res.read()) # 予め取得したい要素を指定する a = soup.find('p', attrs={'class':'num-results'}) b = a.find('strong') # 結果の表示 print '--Result--' print u'検索ワード = ' + search_query.decode('utf-8') print u'約'+ b.string + u'件' # 結果の格納 result_child = {search_query, b.string} result.append(result_child) print result 結果 --Result-- 検索ワード = dance 約124,000,000件 --Result-- 検索ワード = ダンス 約3,250,000件 --Result-- 検索ワード = ヒップホップダンス 約4,630,000件 --Result-- 検索ワード = ヒップホップ+ダンス 約4,620,000件 --Result-- 検索ワード = hiphopdance 約176,000件 --Result-- 検索ワード = hiphop+dance 約558,000件 --Result-- 検索ワード = lockdance 約22,600件 --Result-- 検索ワード = lock+dance 約507,000件 --Result-- 検索ワード = housedance 約254,000件 --Result-- 検索ワード = house+dance 約7,950,000件 --Result-- 検索ワード = breakdance 約1,710,000件 --Result-- 検索ワード = break+dance 約3,100,000件 --Result-- 検索ワード = breaking 約15,300,000件
非常に参考になった資料
http://www.slideshare.net/checkpoint77/pythonweb-38279221
BeautifulSoupでスクレイピングのまとめ
http://taichino.com/programming/1531
Pythonらしいコードの書き方
http://kesin.hatenablog.com/entry/2013/05/12/004541
Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう
- 作者: クジラ飛行机
- 出版社/メーカー: ソシム
- 発売日: 2016/12/06
- メディア: 単行本
- この商品を含むブログを見る
- 作者: Ryan Mitchell,嶋田健志,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/03/18
- メディア: 大型本
- この商品を含むブログ (2件) を見る
【Amazon.co.jp限定 】 ASUS ゲーミングモニター 23型フルHDディスプレイ (応答速度1ms / HDMI×2,D-sub×1 / スピーカー内蔵 / 3年保証) VX238H-P
- 出版社/メーカー: Asustek
- 発売日: 2014/05/28
- メディア: Personal Computers
- この商品を含むブログを見る
- 作者: 裕時悠示
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/11/17
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 丸戸史明,深崎暮人
- 出版社/メーカー: KADOKAWA
- 発売日: 2016/11/19
- メディア: 文庫
- この商品を含むブログ (2件) を見る
- 作者: 近江のこ
- 出版社/メーカー: 小学館
- 発売日: 2016/11/18
- メディア: Kindle版
- この商品を含むブログを見る
wordpressへhatenaブログ記事の自動投稿
wordpressへhatenaブログ記事の自動投稿
hatenaブログでは登校データをMT(MovableType)形式で書き出すことができます。
調査
Movable Type 3.2 マニュアル - Movable Typeの読み込みフォーマット
問題
- 画像は、はてなフォロライフのリンクになってる
- はてダPlusで過去にアップしたファイルのリンクは変になってる
- 同日投稿の記事の順番が変になってるケースあり => 見逃せる
大筋良いけど、微妙に駄目。そんな状況でした。リンクが変になってるのは、プラグインで後から見つけられるんで、今のところ放置。
Step5 リンク切れをチェック
過去にアップしたファイルのリンクが変になっているのは、その場で修正。たまたま私は、アップしたファイルは1つだけだったので、すぐに修正できました。 後は、純粋にリンク切れをしているURLがあったんですが、それは追々直していく予定です。
開発用のwordpressを作成
僕が使っているレンタルサーバにはwordpressインストール機能がついているので、wordpressは1分で作れます。とても楽。
http://fififactory.com/wp-dev/
とりあえずインポート
hatena記事をwordpressにインポートする。
ツールを調べると、結構沢山でてきた。MVインポーター風のツールをインストール。
記事は特に問題ないです。
自動投稿
本当にしたいのはこっちなのです。
自動投稿用環境
http://www.fififactory.com/rd-wp/
調査
[python] [twitter] WordPressに自動投稿するスクリプトを作ってみた
[Python]xmlrpclibを使ってブログにエントリ投稿する方法
重要なのは以下の箇所である。 import xmlrpcself.server = xmlrpclib.ServerProxy(url)entry_id = server.metaWeblog.newPost(...) 非常にスッキリとした仕様であることが分かる。
調べていると、xmlrpc.phpというwordpressのAPIをたたくみたい。これは/wp/フォルダにあった。ためしにブラウザで直接アクセスするとおこられる。
http://fififactory.com/rd-wp/wp/xmlrpc.php
さて上の方法を使って実際にためしたら、とても簡単にできた。
あとは、元の記事を切り貼りして、日付毎に投稿するだけだ。
ロードマップ
非常に参考になった記事
【Amazon.co.jp限定 】 ASUS ゲーミングモニター 23型フルHDディスプレイ (応答速度1ms / HDMI×2,D-sub×1 / スピーカー内蔵 / 3年保証) VX238H-P
- 出版社/メーカー: Asustek
- 発売日: 2014/05/28
- メディア: Personal Computers
- この商品を含むブログを見る
- 作者: 裕時悠示
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/11/17
- メディア: Kindle版
- この商品を含むブログを見る