<?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=System_struct</id>
	<title>System struct - 版の履歴</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=System_struct"/>
	<link rel="alternate" type="text/html" href="http://comp.chem.tohoku.ac.jp/mediawiki/index.php?title=System_struct&amp;action=history"/>
	<updated>2026-05-26T13:51:24Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>http://comp.chem.tohoku.ac.jp/mediawiki/index.php?title=System_struct&amp;diff=1119&amp;oldid=prev</id>
		<title>Hirano: ページの作成:「== 概要 == system_struct は ms ファイルに対する操作を行う構造体である。 現在、(ms ファイルの)バージョンが0.3未満と0.3以上で仕…」</title>
		<link rel="alternate" type="text/html" href="http://comp.chem.tohoku.ac.jp/mediawiki/index.php?title=System_struct&amp;diff=1119&amp;oldid=prev"/>
		<updated>2026-05-26T04:18:01Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == system_struct は ms ファイルに対する操作を行う構造体である。 現在、(ms ファイルの)バージョンが0.3未満と0.3以上で仕…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
system_struct は ms ファイルに対する操作を行う構造体である。 現在、(ms ファイルの)バージョンが0.3未満と0.3以上で仕様が大きく異なっている。 以下に使用できるサブルーチンの一覧をバージョンごとに示す。&lt;br /&gt;
&lt;br /&gt;
=== どのversionにも対応===&lt;br /&gt;
* read&lt;br /&gt;
* write&lt;br /&gt;
* set&lt;br /&gt;
* allocate&lt;br /&gt;
* get_grpstart&lt;br /&gt;
&lt;br /&gt;
=== version&amp;lt;0.3 専用===&lt;br /&gt;
* calc&lt;br /&gt;
* make_pairtype&lt;br /&gt;
&lt;br /&gt;
=== version&amp;gt;=0.3 専用===&lt;br /&gt;
* bonddata_check&lt;br /&gt;
* angledata_check&lt;br /&gt;
* dihedraldata_check&lt;br /&gt;
* outofplanedata_check&lt;br /&gt;
* reallocate_intradata&lt;br /&gt;
* (clean?)&lt;br /&gt;
&lt;br /&gt;
ms ファイルのバージョンによる仕様の違いは [[msファイルの仕様]] を参照のこと。&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;
&lt;br /&gt;
module system_module&lt;br /&gt;
  implicit none&lt;br /&gt;
&lt;br /&gt;
  real,parameter,private :: current_version = 0.3   !!! バージョン&lt;br /&gt;
  integer,private,parameter :: maxbonddata = 20    !!! 結合情報の最大行数&lt;br /&gt;
  integer,private,parameter :: maxangledata = 5   !!! 結合角情報の最大行数&lt;br /&gt;
  integer,private,parameter :: maxadj = 6    !!! 隣接原子の最大個数&lt;br /&gt;
&lt;br /&gt;
  type :: system_struct&lt;br /&gt;
&lt;br /&gt;
    !!! システム情報&lt;br /&gt;
    real :: version     !!! 読み取り形式のバージョン&lt;br /&gt;
    REAL8 :: size(1:3)    !!! 系のサイズ&lt;br /&gt;
!    REAL8 :: T    !!! 温度&lt;br /&gt;
    REAL8 :: Tinit    !!! 温度&lt;br /&gt;
&lt;br /&gt;
    !!! サイト情報&lt;br /&gt;
    integer :: nsite=0    !!! 全サイト数&lt;br /&gt;
    character(len=10),allocatable :: name(:)    !!! サイト名 (1:nsite)&lt;br /&gt;
    integer,allocatable :: grpnum(:)    !!! グループ番号 (1:nsite)&lt;br /&gt;
    REAL8,allocatable :: m(:)    !!! 質量 (1:nsite)&lt;br /&gt;
    REAL8,allocatable :: q(:)    !!! 電荷 (1:nsite)&lt;br /&gt;
    REAL8,allocatable :: alpha(:)    !!! 分極率 (1:nsite)&lt;br /&gt;
    REAL8,allocatable :: sigma(:)    !!! LJ パラメータ(sigma) (1:nsite)&lt;br /&gt;
    REAL8,allocatable :: eps(:)    !!! LJ パラメータ(epsilon) (1:nsite)&lt;br /&gt;
    REAL8,allocatable :: x(:,:)    !!! 座標 (1:3,1:nsite) (1:3=x,y,z)&lt;br /&gt;
    REAL8,allocatable :: v(:,:)    !!! 速度 (1:3,1:nsite) (1:3=x,y,z)&lt;br /&gt;
    REAL8,allocatable :: p(:,:)    !!! 運動量 (1:3,1:nsite) (1:3=x,y,z)&lt;br /&gt;
    REAL8,allocatable :: F(:,:)    !!! 力 (1:3,1:nsite) (1:3=x,y,z)&lt;br /&gt;
!!!!!!! version &amp;lt; 0.3 専用 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
    integer,allocatable :: nadj(:)    !!! 隣接サイト数 (1:nsite)&lt;br /&gt;
    integer,allocatable :: adj(:,:)    !!! 隣接サイト番号 (1:nadj,1:nsite)&lt;br /&gt;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
&lt;br /&gt;
!!!!!!! version &amp;lt; 0.3 専用 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
    !!! 結合情報(BOND_DATA)&lt;br /&gt;
    character(len=20) :: bonddataline(1:maxbonddata)&lt;br /&gt;
    !!! 結合情報のテキスト&lt;br /&gt;
    !!!&lt;br /&gt;
    !!! フォーマット(空白はいくつでも可）&lt;br /&gt;
    !!!&lt;br /&gt;
    !!!   サイト1の名前  サイト2の名前  結合距離(A) 結合定数&lt;br /&gt;
    !!!&lt;br /&gt;
    !!!  *** 結合定数は今のところ使っていない。 0 とすること。&lt;br /&gt;
    !!!&lt;br /&gt;
    integer :: nbonddata !!! データが格納されている bonddataline の数&lt;br /&gt;
    integer :: nbond    !!! 全結合数、重複なし&lt;br /&gt;
    integer,allocatable :: bond(:,:)    !!! 結合のリスト (1:2,1:nbond)&lt;br /&gt;
    REAL8,allocatable :: r_eq(:)    !!! 結合距離 (1:nbond)&lt;br /&gt;
    REAL8,allocatable :: k_r(:)    !!! 結合定数 (1:nbond)&lt;br /&gt;
&lt;br /&gt;
    !!! 結合角情報(ANGLE_DATA)&lt;br /&gt;
    character(len=20) :: angledataline(1:maxangledata)&lt;br /&gt;
    integer :: nangledata !!! データが格納されている angledataline の数&lt;br /&gt;
    integer :: nangle    !!! 全結合角数、重複なし&lt;br /&gt;
    integer,allocatable :: angle(:,:)    !!! 結合角のリスト (1:3,1:nangle)&lt;br /&gt;
    REAL8,allocatable :: theta_eq(:)    !!! 結合角 (1:nangle)&lt;br /&gt;
    REAL8,allocatable :: k_theta(:)    !!! 結合定数 (1:naangle)&lt;br /&gt;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
&lt;br /&gt;
!!!!!!! version &amp;gt;= 0.3 専用 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
    !!! 結合情報(BOND_DATA)&lt;br /&gt;
    character(len=80),allocatable :: bonddataline2(:)&lt;br /&gt;
    !!! 結合情報の文字列 (1:nbonddata2)&lt;br /&gt;
    integer :: nbonddata2&lt;br /&gt;
    !!! データが格納されている bonddataline2 の数&lt;br /&gt;
&lt;br /&gt;
    !!! 結合角情報(ANGLE_DATA)&lt;br /&gt;
    character(len=80),allocatable :: angledataline2(:)&lt;br /&gt;
    !!! 結合角情報の文字列 (1:nangledata2)&lt;br /&gt;
    integer :: nangledata2&lt;br /&gt;
    !!! データが格納されている angledataline2 の数&lt;br /&gt;
&lt;br /&gt;
    !!! 二面角情報(DIHEDRAL_DATA)&lt;br /&gt;
    character(len=80),allocatable :: dihedraldataline2(:)&lt;br /&gt;
    !!! 二面角情報の文字列 (1:ndihedraldata2)&lt;br /&gt;
    integer :: ndihedraldata2&lt;br /&gt;
    !!! データが格納されている dihedraldataline2 の数&lt;br /&gt;
&lt;br /&gt;
    !!! 面外角情報(OUTOFPLANE_DATA)&lt;br /&gt;
    character(len=80),allocatable :: outofplanedataline2(:)&lt;br /&gt;
    !!! 面外角情報の文字列 (1:noutofplanedata2)&lt;br /&gt;
    integer :: noutofplanedata2&lt;br /&gt;
    !!! データが格納されている outofplanedataline2 の数&lt;br /&gt;
&lt;br /&gt;
    integer,allocatable :: pairtype(:,:)    !!! (1:nsite,1:nsite) &lt;br /&gt;
    !!! 2つのサイト番号のペア がどの結合状態にあるかを判定する変数。&lt;br /&gt;
    !!! pairtype = -1   : 同じ番号のペア or 計算しないペア&lt;br /&gt;
    !!!             0   : 異なる分子間のペア or 分子内 1-i(i&amp;gt;=5) ペア&lt;br /&gt;
    !!!             1   : 同じ分子内の 1-2 ペア&lt;br /&gt;
    !!!             10  : 同じ分子内の 1-3 ペア&lt;br /&gt;
    !!!             100 : 同じ分子内の 1-4 ペア&lt;br /&gt;
    !!!&lt;br /&gt;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
&lt;br /&gt;
    !!! フラグ&lt;br /&gt;
    logical :: done_allocate = .false.&lt;br /&gt;
    logical :: done_reallocate_intradata = .false.&lt;br /&gt;
    logical :: done_calc = .false.&lt;br /&gt;
    logical :: done_init = .false.&lt;br /&gt;
&lt;br /&gt;
  contains&lt;br /&gt;
    procedure :: read    !!! (unit)&lt;br /&gt;
      !!! どの version にも対応&lt;br /&gt;
      !!! ms ファイルの読み取りを行うサブルーチン。&lt;br /&gt;
      !!! version &amp;lt; 0.3 では&lt;br /&gt;
      !!! SITE_DATA(隣接リストあり),BOND_DATA,ANGLE_DATA (ただし、&lt;br /&gt;
      !!! 角度の拘束等物理的に意味のあることはできない) を読み取る。&lt;br /&gt;
      !!! version &amp;gt;= 0.3 では&lt;br /&gt;
      !!! SITE_DATA(隣接リストなし),BOND_DATA,ANGLE_DATA,&lt;br /&gt;
      !!! DIHEDRAL_DATA,OUTOFPLANE_DATA を読み取る。&lt;br /&gt;
      !!! 詳しい仕様は mediawiki の&lt;br /&gt;
      !!! 「ms ファイルの仕様」を参照。&lt;br /&gt;
      !!! 入力 --- msファイル&lt;br /&gt;
      !!! 出力 --- system 構造体変数&lt;br /&gt;
      !!!          (ver &amp;lt;0.3, &amp;gt;=0.3 共通)&lt;br /&gt;
      !!!          sys%version, sys%nsite, sys%size, sys%Tinit&lt;br /&gt;
      !!!          sys%name, sys%grpnum, sys%m, sys%q, sys%alpha&lt;br /&gt;
      !!!          sys%sigma, sys%eps, sys%x, sys%v, sys%F, sys%p&lt;br /&gt;
      !!!&lt;br /&gt;
      !!!          (ver&amp;lt;0.3)&lt;br /&gt;
      !!!          sys%nadj, sys%adj&lt;br /&gt;
      !!!          sys%bonddataline, sys%nbonddata&lt;br /&gt;
      !!!          sys%angledataline, sys%nangledata&lt;br /&gt;
      !!!&lt;br /&gt;
      !!!          (ver&amp;gt;=0.3)&lt;br /&gt;
      !!!          sys%pairtype&lt;br /&gt;
      !!!          sys%bonddataline2, sys%nbonddata2&lt;br /&gt;
      !!!          sys%angledataline2, sys%nangledata2&lt;br /&gt;
      !!!          sys%dihedraldataline2, sys%ndihedraldata2&lt;br /&gt;
      !!!          sys%outofplanedataline2, sys%noutofplanedata2&lt;br /&gt;
      !!!&lt;br /&gt;
    procedure :: write   !!! (unit,file)&lt;br /&gt;
      !!! どの version にも対応&lt;br /&gt;
      !!! ms ファイルの作成を行うサブルーチン。&lt;br /&gt;
      !!! version &amp;lt; 0.3 では&lt;br /&gt;
      !!! SITE_DATA(隣接リストあり),BOND_DATA,ANGLE_DATA (ただし、&lt;br /&gt;
      !!! 角度の拘束等物理的に意味のあることはできない) を書き込む。&lt;br /&gt;
      !!! version &amp;gt;= 0.3 では&lt;br /&gt;
      !!! SITE_DATA(隣接リストなし),BOND_DATA,ANGLE_DATA,&lt;br /&gt;
      !!! DIHEDRAL_DATA,OUTOFPLANE_DATA を書き込む。&lt;br /&gt;
      !!! 詳しい仕様は mediawiki の&lt;br /&gt;
      !!! 「ms ファイルの仕様」を参照。&lt;br /&gt;
      !!! 入力 --- system 構造体&lt;br /&gt;
      !!! 出力 --- msファイル&lt;br /&gt;
      !!!&lt;br /&gt;
!    procedure :: set     !!! set(version,nsite,size,T) (optional):&lt;br /&gt;
    procedure :: set    !!! (version,nsite,size,Tinit)&lt;br /&gt;
      !!! どの version にも対応&lt;br /&gt;
      !!! ネームリスト変数(&amp;amp;system)を system_struct にセットする&lt;br /&gt;
      !!! サブルーチン。&lt;br /&gt;
      !!! 入力 --- version, nsite, size, Tinit&lt;br /&gt;
      !!!          version (optional) : ms ファイルのバージョン&lt;br /&gt;
      !!!          nsite (optional) : 粒子数&lt;br /&gt;
      !!!          size(1:3) (optional) : セルのサイズ&lt;br /&gt;
      !!!          Tinit (optional) : 初期温度&lt;br /&gt;
      !!! 出力 --- sys%version, sys%nsite, sys%size, sys%Tinit&lt;br /&gt;
      !!!&lt;br /&gt;
    PROCEDURE :: clean    !!! ()&lt;br /&gt;
      !!! Deallocate unneccessary arrays to free memory.&lt;br /&gt;
      !!! メモリ削減のために不要な配列を deallocate する&lt;br /&gt;
      !!! サブルーチン&lt;br /&gt;
      !!! 2016/11/25 現在、&lt;br /&gt;
      !!!   sys%bonddataline2&lt;br /&gt;
      !!!   sys%angledataline2&lt;br /&gt;
      !!!   sys%dihedraldataline2&lt;br /&gt;
      !!!   sys%outofplanedataline2&lt;br /&gt;
      !!! を deallocate するようになっているが、&lt;br /&gt;
      !!! これらの変数は msファイルに write する必要があるので、&lt;br /&gt;
      !!! このサブルーチンは使用されていない。&lt;br /&gt;
&lt;br /&gt;
    procedure :: bonddata_check   !!! (line,ibonddata2,site1,site2)&lt;br /&gt;
      !!! version &amp;gt;= 0.3 専用&lt;br /&gt;
      !!! BOND_DATA (version&amp;gt;=0.3) に格納されているデータと&lt;br /&gt;
      !!! 重複がないかをチェックするサブルーチン&lt;br /&gt;
      !!! 基本的に system%read 中でのみ呼ばれると想定している。&lt;br /&gt;
      !!! 入力 --- line, ibonddata2&lt;br /&gt;
      !!!          line : 重複チェックを行いたい行データ&lt;br /&gt;
      !!!          ibonddata2 : system%read 中で現在&lt;br /&gt;
      !!!                       読み込んでいる行数&lt;br /&gt;
      !!! 出力 --- 重複判定(エラーがあれば log に出力) &lt;br /&gt;
      !!!          site1, site2&lt;br /&gt;
      !!!          site1,site2 : line 中に入力されているサイト番号&lt;br /&gt;
      !!!          番号の並びについて 1-2 or 2-1 を同じ情報だと&lt;br /&gt;
      !!!          見なしているため、どちらかの並びで入力する&lt;br /&gt;
      !!!          必要がある。&lt;br /&gt;
      !!!&lt;br /&gt;
    procedure :: angledata_check   !!! (line,iangledata2,site1,site2,site3)&lt;br /&gt;
      !!! version &amp;gt;= 0.3 専用&lt;br /&gt;
      !!! ANGLE_DATA (version&amp;gt;=0.3) に格納されているデータと&lt;br /&gt;
      !!! 重複がないかをチェックするサブルーチン&lt;br /&gt;
      !!! 基本的に system%read 中でのみ呼ばれると想定している。&lt;br /&gt;
      !!! 入力 --- line, iangledata2&lt;br /&gt;
      !!!          line : 重複チェックを行いたい行データ&lt;br /&gt;
      !!!          iangledata2 : system%read 中で現在&lt;br /&gt;
      !!!                        読み込んでいる行数&lt;br /&gt;
      !!! 出力 --- 重複判定(エラーがあれば log に出力)&lt;br /&gt;
      !!!          site1, site2, site3&lt;br /&gt;
      !!!          site1,site2,site3 : line 中に入力されているサイト番号&lt;br /&gt;
      !!!          番号の並びについて 1-2-3 or 3-2-1 を同じ情報&lt;br /&gt;
      !!!          だと見なしているため、どちらかの並びで入力する&lt;br /&gt;
      !!!          必要がある。&lt;br /&gt;
      !!!&lt;br /&gt;
    procedure :: dihedraldata_check   !!! (line,idihedraldata2,&lt;br /&gt;
      !!!                                  site1,site2,site3,site4) &lt;br /&gt;
      !!! version &amp;gt;= 0.3 専用&lt;br /&gt;
      !!! DIHEDRAL_DATA (version&amp;gt;=0.3) に格納されているデータと&lt;br /&gt;
      !!! 重複がないかをチェックするサブルーチン&lt;br /&gt;
      !!! 基本的に system%read 中でのみ呼ばれると想定している。&lt;br /&gt;
      !!! 入力 --- line, idihedraldata2&lt;br /&gt;
      !!!          line : 重複チェックを行いたい行データ&lt;br /&gt;
      !!!          idihedraldata2 : system%read 中で現在&lt;br /&gt;
      !!!                           読み込んでいる行数&lt;br /&gt;
      !!! 出力 --- 重複判定(エラーがあれば log に出力)&lt;br /&gt;
      !!!          site1, site2, site3, site4&lt;br /&gt;
      !!!          site1,site2,site3,site4 : line 中に入力されている&lt;br /&gt;
      !!!                                    サイト番号&lt;br /&gt;
      !!!          番号の並びについて 1-2-3-4 or 4-3-2-1 を同じ情報&lt;br /&gt;
      !!!          だと見なしているため、どちらかの並びで入力する&lt;br /&gt;
      !!!          必要がある。&lt;br /&gt;
      !!!          番号の並びによって符号が変化するので注意。&lt;br /&gt;
      !!!&lt;br /&gt;
    procedure :: outofplanedata_check   !!! (line,ioutofplanedata2,&lt;br /&gt;
      !!!                                    site1,site2,site3,site4)&lt;br /&gt;
      !!! version &amp;gt;= 0.3 専用&lt;br /&gt;
      !!! OUTOFPLANE_DATA (version&amp;gt;=0.3) に格納されているデータと&lt;br /&gt;
      !!! 重複がないかをチェックするサブルーチン&lt;br /&gt;
      !!! 基本的に system%read 中でのみ呼ばれると想定している。&lt;br /&gt;
      !!! 入力 --- line, ioutofplanedata2&lt;br /&gt;
      !!!          line : 重複チェックを行いたい行データ&lt;br /&gt;
      !!!          ioutofplanedata2 : system%read 中で現在&lt;br /&gt;
      !!!                             読み込んでいる行数&lt;br /&gt;
      !!! 出力 --- 重複判定(エラーがあれば log に出力)&lt;br /&gt;
      !!!          site1, site2, site3, site4&lt;br /&gt;
      !!!          site1,site2,site3,site4 : line 中に入力されている&lt;br /&gt;
      !!!                                    サイト番号&lt;br /&gt;
      !!!          番号の並びについて 1-2-3-4 or 1-2-4-3 or&lt;br /&gt;
      !!!                             3-2-1-4 or 3-2-4-1 or&lt;br /&gt;
      !!!                             4-2-1-3 or 4-2-3-1&lt;br /&gt;
      !!!          を同じ情報だと見なしているため、&lt;br /&gt;
      !!!          いずれかの並びで入力する必要がある。&lt;br /&gt;
      !!!          番号の並びによってポテンシャルの定義&lt;br /&gt;
      !!!          が変化するので注意。&lt;br /&gt;
      !!!&lt;br /&gt;
    procedure :: allocate    !!! (n)&lt;br /&gt;
      !!! どの version にも対応&lt;br /&gt;
      !!! SITE_DATAの配列のアロケーションを行うサブルーチン&lt;br /&gt;
      !!! 入力 --- n&lt;br /&gt;
      !!!          n (optional) : SITE_DATA を allocate したい粒子数&lt;br /&gt;
      !!!          入力値を設定しない場合 sys%nsite で&lt;br /&gt;
      !!!          allocate される&lt;br /&gt;
      !!! 出力 --- system 構造体変数&lt;br /&gt;
      !!!          (ver &amp;lt;0.3, &amp;gt;=0.3 共通)&lt;br /&gt;
      !!!          sys%name, sys%grpnum, sys%m, sys%q, sys%alpha&lt;br /&gt;
      !!!          sys%sigma, sys%eps, sys%x, sys%v, sys%F, sys%p&lt;br /&gt;
      !!!&lt;br /&gt;
      !!!          (ver&amp;lt;0.3)&lt;br /&gt;
      !!!          sys%nadj, sys%adj&lt;br /&gt;
      !!!&lt;br /&gt;
    procedure :: reallocate_intradata    !!! (nb,na,nd,no)&lt;br /&gt;
      !!! version &amp;gt;= 0.3 専用&lt;br /&gt;
      !!! BOND_DATA以下のデータ(version&amp;gt;=0.3)&lt;br /&gt;
      !!! の配列のアロケーションを行う&lt;br /&gt;
      !!! 入力 --- nb, na, nd, no&lt;br /&gt;
      !!!          nb (optional) : bonddataline2 を allocate&lt;br /&gt;
      !!!                          したい数&lt;br /&gt;
      !!!          na (optional) : angledataline2 を allocate&lt;br /&gt;
      !!!                          したい数&lt;br /&gt;
      !!!          nd (optional) : dihedraldataline2 を allocate&lt;br /&gt;
      !!!                          したい数&lt;br /&gt;
      !!!          no (optional) : outofplanedataline2 を allocate&lt;br /&gt;
      !!!                          したい数&lt;br /&gt;
      !!!          入力値を設定しない場合 sys%nbonddata2,&lt;br /&gt;
      !!!          sys%nangledata2, sys%ndihedraldata2, &lt;br /&gt;
      !!!          sys%noutofplanedata2 で allocate される&lt;br /&gt;
      !!! 出力 --- system 構造体変数&lt;br /&gt;
      !!!          sys%nbonddata2, sys%nangledata2&lt;br /&gt;
      !!!          sys%ndihedraldata2, sys%noutofplanedata2&lt;br /&gt;
      !!!&lt;br /&gt;
&lt;br /&gt;
    procedure :: calc    !!! ()&lt;br /&gt;
      !!! version &amp;lt; 0.3 専用&lt;br /&gt;
      !!! system%read で格納した BOND_DATA,ANGLE_DATA の文字列データから&lt;br /&gt;
      !!! パラメータを読み取り、system_struct の変数に格納する&lt;br /&gt;
      !!! サブルーチン。&lt;br /&gt;
      !!! 入力 --- system 構造体&lt;br /&gt;
      !!! 出力 --- system 構造体変数&lt;br /&gt;
      !!!          sys%nbond, sys%nangle, sys%bond, sys%angle&lt;br /&gt;
      !!!          sys%r_eq, sys%k_r, sys%theta_eq, sys%k_theta&lt;br /&gt;
      !!!&lt;br /&gt;
    procedure :: get_grpstart !!! (grpstart,ngrp)&lt;br /&gt;
      !!! どの version にも対応&lt;br /&gt;
      !!! グループの開始番号を計算するサブルーチン。&lt;br /&gt;
      !!! 入力 --- system 構造体&lt;br /&gt;
      !!! 出力 --- grpstart, ngrp&lt;br /&gt;
      !!!          grpstart : 同じグループ番号の中で、&lt;br /&gt;
      !!!                     はじめに出てくる&lt;br /&gt;
      !!!                     サイトの番号の配列&lt;br /&gt;
      !!!          ngrp : ms ファイルのグループ番号の最大値&lt;br /&gt;
      !!!&lt;br /&gt;
    procedure :: make_pairtype    !!! (site1,site2) result(check)&lt;br /&gt;
      !!! version &amp;lt; 0.3 専用&lt;br /&gt;
      !!! site1 と site2 がどの結合状態にあるかを判定する関数。&lt;br /&gt;
      !!! 入力 --- site1, site2&lt;br /&gt;
      !!!          site1,site2 : 判定したいサイト番号のペア&lt;br /&gt;
      !!! 出力 --- check&lt;br /&gt;
      !!!          check : サイト番号ペアのタイプに応じた数&lt;br /&gt;
      !!!&lt;br /&gt;
      !!!   check = -1  : 同じ番号のペア or 計算しないペア&lt;br /&gt;
      !!!            0  : 異なる分子間のペア or 分子内 1-i(i&amp;gt;=5) ペア&lt;br /&gt;
      !!!            1  : 同じ分子内の 1-2 ペア&lt;br /&gt;
      !!!            10 : 同じ分子内の 1-3 ペア&lt;br /&gt;
      !!!&lt;br /&gt;
  endtype&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hirano</name></author>
	</entry>
</feed>