気体の動力学的理論の例示  J. C. Maxwellの課題と考え方

物理学史研究刊行会編「物理学古典論文叢書」（全12巻、東海大学出版会）

量子コンピュータ：量子力学にたどり着くための三つの方法
https://qiita.com/kaizen_nagoya/items/cfc35e62c81a978cc2fc

の三番目の歴史を辿るのによい。

第5巻の最初の論文では、その第二部がClausiusによって指摘され、英文でURLに掲載されている文章からは削除されている。書籍になっている日本文には残っている。

電磁気学の基本原理であるMaxwell方程式のMaxwellですら、後に間違いであることを認める内容を、論文として出していることは、いかに物理学において、仮説はあくまで仮説であり、よりよい仮説へ変化していくことがわかる。

正しい、誤りというよりは、より厳密な誤差の少ない理論へと近づいていくと考えるとよいかもしれない。あるいは、ある制約条件下では成り立つ経験則も、他の制約条件では成り立たないかもしれないことを知っているとよい。

何かの規則に照らして妥当かどうかという判断は相対的である。前提としている仮説が妥当でなければ、結論は妥当でない。仮説が妥当であるかどうかは、場合によっては永久に確かめられないこともあるかもしれない。

科学技術の文章は、法律の文章と異なり、数式で表さないと妥当さが確かめられないこともある。そこで、順次、数式を入力し、プログラム例を示していく。



#第05巻　気体分子運動論
　気体の動力学的理論の例示 / J. C. Maxwell著 ; 佐光興亜訳

 Illustrations of the dynamical theory of gases.—Part I. On the motions and collisions of perfectly elastic spheres
J. C. Maxwell M.A.

誤植：p.15 (21)の次の式が(22)

P.18 第II部　２種類あるいはそれ以上の種類の運動粒子間の相互の拡散過程について

http://www.ffn.ub.es/luisnavarro/nuevo_maletin/Maxwell_1860_Equilibrium_distribution.pdf
>PARTII
On the process of diffusion of two or more kinds of moving particles among one another.
This part has been omitted because its methods and conclusions were later found to be incorrect by Clausius, and the errors were admitted by Maxwell.

訳注：p.4 活力(visviva) ：運動エネルギー

#参考資料(reference)

Maxwell's Equations
http://www.maxwells-equations.com

気体シミュレータ "Piston" ver.1.0.5
http://polymer.apphy.u-fukui.ac.jp/~koishi/Piston/index.php

剛体球の大規模数値計算をしたい人生だった
https://qiita.com/NatsukiLab/items/476e00fea40b86ece31f


```shell-session:macOS
$ docker run -it gcc /bin/bash
```
dockerが起動したら

```shell-session:docker/ubuntu
# apt update; apt -y upgrade
# apt install -y vim sudo wget git curl 
# git clone https://github.com/FDPS/FDPS.git
Cloning into 'FDPS'...
remote: Enumerating objects: 1686, done.
remote: Total 1686 (delta 0), reused 0 (delta 0), pack-reused 1686
Receiving objects: 100% (1686/1686), 61.39 MiB | 10.09 MiB/s, done.
Resolving deltas: 100% (850/850), done.
# cd FDPS
# ls
LICENSE  README.md  doc  sample  scripts  src  tests
# cd sample
# ls
c  c++	fortran

# cd c++
# ls
nbody  nbody+sph  nbodysph  p3m  sph  treepm  vdw-test	water

# cd vdw-test
# ls
Makefile  test.py  vdwtest.cpp

# make
g++  -I../../../src/ -std=c++11 -O3 -Wall -ffast-math -funroll-loops -o vdwtest.out vdwtest.cpp
In file included from ../../../src/tree_for_force.hpp:1680,
                 from ../../../src/particle_simulator.hpp:7,
                 from vdwtest.cpp:17:
../../../src/tree_for_force_impl.hpp: In instantiation of 'void ParticleSimulator::TreeForForce<TSM, Tforce, Tepi, Tepj, Tmomloc, Tmomglb, Tspj>::initialize(ParticleSimulator::U64, ParticleSimulator::F64, ParticleSimulator::U32, ParticleSimulator::U32) [with TSM = ParticleSimulator::SEARCH_MODE_SCATTER; Tforce = FPLJ; Tepi = FPLJ; Tepj = FPLJ; Tmomloc = ParticleSimulator::MomentSearchInAndOut; Tmomglb = ParticleSimulator::MomentSearchInAndOut; Tspj = ParticleSimulator::SuperParticleBase; ParticleSimulator::U64 = long long unsigned int; ParticleSimulator::F64 = double; ParticleSimulator::U32 = unsigned int]':
vdwtest.cpp:479:72:   required from here
../../../src/tree_for_force_impl.hpp:89:19: warning: unused variable 'n_proc' [-Wunused-variable]
   89 |         const S64 n_proc = Comm::getNumberOfProc();
      |                   ^~~~~~
vdwtest.cpp: In function 'int main(int, char**)':
vdwtest.cpp:445:29: warning: '/t-de.dat' directive writing 9 bytes into a region of size between 1 and 1024 [-Wformat-overflow=]
  445 |         sprintf(sout_de, "%s/t-de.dat", dir_name);
      |                             ^~~~~~~~~
vdwtest.cpp:445:16: note: 'sprintf' output between 10 and 1033 bytes into a destination of size 1024
  445 |         sprintf(sout_de, "%s/t-de.dat", dir_name);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vdwtest.cpp:446:31: warning: '/t-tcal.dat' directive writing 11 bytes into a region of size between 1 and 1024 [-Wformat-overflow=]
  446 |         sprintf(sout_tcal, "%s/t-tcal.dat", dir_name);
      |                               ^~~~~~~~~~~
vdwtest.cpp:446:16: note: 'sprintf' output between 12 and 1035 bytes into a destination of size 1024
  446 |         sprintf(sout_tcal, "%s/t-tcal.dat", dir_name);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vdwtest.cpp:505:32: warning: '%s' directive writing up to 1023 bytes into a region of size 256 [-Wformat-overflow=]
  505 |             sprintf(filename, "%s/%04d.dat", dir_name, snp_id++);
      |                                ^~            ~~~~~~~~
vdwtest.cpp:505:31: note: directive argument in the range [0, 2147483647]
  505 |             sprintf(filename, "%s/%04d.dat", dir_name, snp_id++);
      |                               ^~~~~~~~~~~~~
vdwtest.cpp:505:20: note: 'sprintf' output between 10 and 1039 bytes into a destination of size 256
  505 |             sprintf(filename, "%s/%04d.dat", dir_name, snp_id++);
      |             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```