<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>http://comp.chem.tohoku.ac.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Flexlist_module</id>
	<title>Flexlist module - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="http://comp.chem.tohoku.ac.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Flexlist_module"/>
	<link rel="alternate" type="text/html" href="http://comp.chem.tohoku.ac.jp/mediawiki/index.php?title=Flexlist_module&amp;action=history"/>
	<updated>2026-05-27T10:17:08Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>http://comp.chem.tohoku.ac.jp/mediawiki/index.php?title=Flexlist_module&amp;diff=1125&amp;oldid=prev</id>
		<title>Hirano: ページの作成:「　Flexiest モジュールは、サイズ可変のリスト型データの集まりのフォーマットを変換するサブルーチンをまとめたものである…」</title>
		<link rel="alternate" type="text/html" href="http://comp.chem.tohoku.ac.jp/mediawiki/index.php?title=Flexlist_module&amp;diff=1125&amp;oldid=prev"/>
		<updated>2026-05-26T04:19:50Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「　Flexiest モジュールは、サイズ可変のリスト型データの集まりのフォーマットを変換するサブルーチンをまとめたものである…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;　Flexiest モジュールは、サイズ可変のリスト型データの集まりのフォーマットを変換するサブルーチンをまとめたものである。汎用性が高いので、独立したモジュールとしている。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== リスト型データの種類 ==&lt;br /&gt;
;(1) リスト &lt;br /&gt;
&lt;br /&gt;
　各行はバイアスポテンシャル(#1, #2, ...)ごとに適用するノード番号とする。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!バイアス番号&lt;br /&gt;
!ノード番号&lt;br /&gt;
|-&lt;br /&gt;
|#1&lt;br /&gt;
|1  2&lt;br /&gt;
|-&lt;br /&gt;
|#2&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|#3&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|#4&lt;br /&gt;
| -1  -2  -8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
※ ノード番号は、基本的に正の整数とする。&lt;br /&gt;
&lt;br /&gt;
　ただし、0はすべてのノード、負の数はそれを除いた全てのノードを意味すると拡張する。正の数、0、負の数が混在することは許されない。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;(2) テーブル (行はバイアス番号、列はノード番号）&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
!colspan=&amp;quot;8&amp;quot;|ノード&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=&amp;quot;4&amp;quot;|バイアス&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|T&lt;br /&gt;
|F&lt;br /&gt;
|-&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|F&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|T&lt;br /&gt;
|F&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;(3) 転置リスト&lt;br /&gt;
各行はノード番号で、それごとに適用されるバイアスポテンシャル番号を示す。&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ノード&lt;br /&gt;
!バイアス&lt;br /&gt;
|-&lt;br /&gt;
|#1&lt;br /&gt;
|1  3&lt;br /&gt;
|-&lt;br /&gt;
|#2&lt;br /&gt;
|1  3&lt;br /&gt;
|-&lt;br /&gt;
|#3&lt;br /&gt;
|3  4&lt;br /&gt;
|-&lt;br /&gt;
|#4&lt;br /&gt;
|3  4&lt;br /&gt;
|-&lt;br /&gt;
|#5&lt;br /&gt;
|3  4&lt;br /&gt;
|-&lt;br /&gt;
|#6&lt;br /&gt;
|3  4&lt;br /&gt;
|-&lt;br /&gt;
|#7&lt;br /&gt;
|2  3  4&lt;br /&gt;
|-&lt;br /&gt;
|#8&lt;br /&gt;
|3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 変数の形式 ==&lt;br /&gt;
;(1) リスト、および (3) 転置リスト&lt;br /&gt;
　以下のサイズ可変のリストlist_type構造体の1次元配列 &lt;br /&gt;
&lt;br /&gt;
type(list_type) :: list(:) で与えられる。&lt;br /&gt;
　&lt;br /&gt;
&lt;br /&gt;
　ただし、list_typeの形は、&lt;br /&gt;
&amp;lt;source lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
  type list_type&lt;br /&gt;
    integer, allocatable :: id(:)    !!!  1行あたりの要素配列。&lt;br /&gt;
  end type list_type&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;(2) テーブル&lt;br /&gt;
　2次元の論理変数配列。 logical :: table(sizex, sizey)&lt;br /&gt;
&lt;br /&gt;
== サブルーチン一覧 ==&lt;br /&gt;
リスト変数のチェック&lt;br /&gt;
&amp;lt;source lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
* translate_list (list, isize)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
　(1)のリスト型データの妥当性をチェックする。同じノード番号を重複している場合や、ノード番号に正の数、0、負の数が混在するとエラーとする。&lt;br /&gt;
また、ノード番号に0や負の数を含む拡張形の場合、正の数のみのリスト型データに変換して出力する。&lt;br /&gt;
&lt;br /&gt;
データ構造変換のサブルーチン&lt;br /&gt;
&amp;lt;source lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
* list2table (list, table)  (1) -&amp;gt; (2)&lt;br /&gt;
* table2list (table, list)  (2) -&amp;gt; (1)&lt;br /&gt;
* transpose_list (list_in, list_out)  (1) -&amp;gt; (3)&lt;br /&gt;
* table2pair (table,plist,nrow,ncolumn)&lt;br /&gt;
* pair2table (plist,table,nrow,ncolumn)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
※ list2tableでは、ノード番号に0や負の数を含む拡張形を認めない。その場合、前もってtranslate_list を行っておく必要がある。&lt;br /&gt;
&lt;br /&gt;
※ transpose_list は、内部的に (1)-&amp;gt;(2), (2)の転置、(2)の転置-&amp;gt; (1)の転置 を実施している。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Module structure ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
&lt;br /&gt;
MODULE flexlist_module&lt;br /&gt;
&lt;br /&gt;
  IMPLICIT NONE&lt;br /&gt;
&lt;br /&gt;
! サイズ可変のリスト。これを1次元配列として、2次元のリスト構造を表す。&lt;br /&gt;
! Neighbor list struct. &lt;br /&gt;
&lt;br /&gt;
  TYPE flexlist_struct&lt;br /&gt;
    INTEGER,ALLOCATABLE :: id(:)  !!! 1行あたりの要素配列。&lt;br /&gt;
  END TYPE flexlist_struct&lt;br /&gt;
&lt;br /&gt;
! Pair list struct.&lt;br /&gt;
  &lt;br /&gt;
  TYPE pairlist_struct&lt;br /&gt;
    INTEGER :: a   !!! Index of one side.&lt;br /&gt;
    INTEGER :: b   !!! Index of another side.&lt;br /&gt;
  END TYPE pairlist_struct&lt;br /&gt;
&lt;br /&gt;
CONTAINS&lt;br /&gt;
&lt;br /&gt;
  !!! Subroutine for copying list.&lt;br /&gt;
  SUBROUTINE copy_list(list,list_cp)&lt;br /&gt;
&lt;br /&gt;
  !!! Subroutine for add element to existing flexlist.&lt;br /&gt;
  SUBROUTINE add_id(flexlist,id)&lt;br /&gt;
&lt;br /&gt;
  !!! Subroutine for remove element from existing flexlist.&lt;br /&gt;
  SUBROUTINE remove_id(flexlist,id)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hirano</name></author>
	</entry>
</feed>