Open In Colab

Bulk Water

Set up environment (optional)

These steps are required for Google Colab, but may work on other systems too:

[1]:
#import locale
#locale.getpreferredencoding = lambda: "UTF-8"
#!python3 -m pip install pack-mm data-tutorials weas-widget

Let us start by creating a small box of water 10 A in size, for normal density that means 33 water molecules.

[2]:
from pack_mm.core.core import pack_molecules
from weas_widget import WeasWidget


e, final = pack_molecules(
        molecule="H2O",
        nmols=33,
        arch="mace_mp",
        model="small-0b2",
        device="cpu",
        where="anywhere",
        cell_a=10,
        cell_b=10,
        cell_c=10,
        seed=2025,
        temperature=300,
        ntries=20,
        geometry=True,
        threshold=0.5,
        )
Inserting 33 H2O molecules in .
    Using mace_mp model small-0b2 on cpu.
    Insert in anywhere.
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/e3nn/o3/_wigner.py:10: UserWarning: Environment variable TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD detected, since the`weights_only` argument was not explicitly passed to `torch.load`, forcing weights_only=False.
  _Jd, _W3j_flat, _W3j_indices = torch.load(os.path.join(os.path.dirname(__file__), 'constants.pt'))
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/torch/jit/_script.py:1491: FutureWarning: `torch.jit.script` is deprecated. Please switch to `torch.compile` or `torch.export`.
  warnings.warn(
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/torch/jit/_script.py:1491: FutureWarning: `torch.jit.script` is deprecated. Please switch to `torch.compile` or `torch.export`.
  warnings.warn(
cuequivariance or cuequivariance_torch is not available. Cuequivariance acceleration will be disabled.
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/torch/jit/_script.py:1491: FutureWarning: `torch.jit.script` is deprecated. Please switch to `torch.compile` or `torch.export`.
  warnings.warn(
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/mace/calculators/mace.py:226: UserWarning: Environment variable TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD detected, since the`weights_only` argument was not explicitly passed to `torch.load`, forcing weights_only=False.
  torch.load(f=model_path, map_location=device)
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/torch/jit/_serialization.py:176: FutureWarning: `torch.jit.load` is deprecated. Please switch to `torch.export`.
  warnings.warn(
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/torch/jit/_serialization.py:176: FutureWarning: `torch.jit.load` is deprecated. Please switch to `torch.export`.
  warnings.warn(
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/torch/jit/_serialization.py:176: FutureWarning: `torch.jit.load` is deprecated. Please switch to `torch.export`.
  warnings.warn(
Using Materials Project MACE for MACECalculator with /home/runner/.cache/mace/macesmalldensityagnesistressmodel
Using float64 for MACECalculator, which is slower but more accurate. Recommended for geometry optimization.
Old energy=0.0, new energy=-14.169908427446721, de=-14.169908427446721, acc=np.float64(1.1067904436111663e+238), random=0.6573675854710377
Inserted particle 1
Old energy=-14.169908427446721, new energy=-28.388449306260227, de=-14.218540878813506, acc=np.float64(7.261977566078882e+238), random=0.7694578719378116
Inserted particle 2
Old energy=-28.388449306260227, new energy=-42.56138109854783, de=-14.1729317922876, acc=np.float64(1.2441012080377765e+238), random=0.6663921049033288
Inserted particle 3
Old energy=-42.56138109854783, new energy=-56.720451704384196, de=-14.15907060583637, acc=np.float64(7.277763676744587e+237), random=0.5196536887579605
Inserted particle 4
Old energy=-56.720451704384196, new energy=-70.95493496595596, de=-14.23448326157176, acc=np.float64(1.345473773275616e+239), random=0.06739574665921966
Inserted particle 5
Old energy=-70.95493496595596, new energy=-85.20119759619391, de=-14.24626263023795, acc=np.float64(2.122071379141933e+239), random=0.49961201043327175
Inserted particle 6
Old energy=-85.20119759619391, new energy=-99.4226181862961, de=-14.221420590102198, acc=np.float64(8.117680232384532e+238), random=0.1050746012583641
Inserted particle 7
Old energy=-99.4226181862961, new energy=-113.79662130272757, de=-14.374003116431467, acc=np.float64(2.969657990413869e+241), random=0.9378701885604214
Inserted particle 8
Old energy=-113.79662130272757, new energy=-128.13062203759785, de=-14.334000734870273, acc=np.float64(6.319689981845402e+240), random=0.3762683149324123
Inserted particle 9
Old energy=-128.13062203759785, new energy=-141.85615337199786, de=-13.725531334400017, acc=np.float64(3.791894695894241e+230), random=0.6727933834766038
Inserted particle 10
Old energy=-141.85615337199786, new energy=-156.06180658142108, de=-14.205653209423218, acc=np.float64(4.411146815908922e+238), random=0.09706066849775918
Inserted particle 11
Old energy=-156.06180658142108, new energy=-170.53713931561305, de=-14.475332734191966, acc=np.float64(1.4961311672701558e+243), random=0.47590567428965436
Inserted particle 12
Old energy=-170.53713931561305, new energy=-184.44423715363098, de=-13.907097838017933, acc=np.float64(4.256379248324519e+233), random=0.1445197281328413
Inserted particle 13
Old energy=-184.44423715363098, new energy=-198.8723316569115, de=-14.428094503280533, acc=np.float64(2.40658967246052e+242), random=0.6096984257895941
Inserted particle 14
Old energy=-198.8723316569115, new energy=-213.04724634722007, de=-14.174914690308555, acc=np.float64(1.3432812220825123e+238), random=0.10084644599814097
Inserted particle 15
Old energy=-213.04724634722007, new energy=-225.548543930126, de=-12.50129758290592, acc=np.float64(1.0295025792403101e+210), random=0.8475810108898351
Inserted particle 16
Old energy=-225.548543930126, new energy=-237.81867754510063, de=-12.27013361497464, acc=np.float64(1.3466116834684025e+206), random=0.9573928760728474
Inserted particle 17
Old energy=-237.81867754510063, new energy=-251.69716390805326, de=-13.878486362952628, acc=np.float64(1.4073059625944881e+233), random=0.3273810695294246
Inserted particle 18
Old energy=-251.69716390805326, new energy=-240.755982687732, de=10.941181220321255, acc=np.float64(1.571024023004777e-184), random=0.06247404096988407
Old energy=-251.69716390805326, new energy=-265.9848430306396, de=-14.287679122586326, acc=np.float64(1.0532383716559922e+240), random=0.9267631049637567
Inserted particle 19
Old energy=-265.9848430306396, new energy=-273.78462117763786, de=-7.799778146998278, acc=np.float64(1.0728779686218274e+131), random=0.3402871935608006
Inserted particle 20
Old energy=-273.78462117763786, new energy=-285.0964906085945, de=-11.31186943095662, acc=np.float64(1.0742544121306291e+190), random=0.1776678297264329
Inserted particle 21
Old energy=-285.0964906085945, new energy=-298.767292786814, de=-13.670802178219503, acc=np.float64(4.5650611352144245e+229), random=0.6002380235886438
Inserted particle 22
Old energy=-298.767292786814, new energy=-286.09731608133103, de=12.669976705482952, acc=np.float64(1.4245807063316535e-213), random=0.868138468423006
Old energy=-298.767292786814, new energy=-312.4208127465705, de=-13.653519959756522, acc=np.float64(2.3394728388110177e+229), random=0.657014836768514
Inserted particle 23
Old energy=-312.4208127465705, new energy=-315.2519351263058, de=-2.831122379735291, acc=np.float64(3.63729764383905e+47), random=0.5318473353823712
Old energy=-312.4208127465705, new energy=-324.3828667679099, de=-11.962054021339384, acc=np.float64(8.989410999100251e+200), random=0.9616436876719956
Inserted particle 24
Old energy=-324.3828667679099, new energy=-334.7276976756465, de=-10.344830907736593, acc=np.float64(6.103366546767006e+173), random=0.21200357006485315
Inserted particle 25
Old energy=-334.7276976756465, new energy=-348.8852358657079, de=-14.157538190061416, acc=np.float64(6.85890027328025e+237), random=0.4817459907937399
Inserted particle 26
Old energy=-348.8852358657079, new energy=-360.37717264453835, de=-11.49193677883045, acc=np.float64(1.1379062387516487e+193), random=0.7175118692379753
Inserted particle 27
Old energy=-360.37717264453835, new energy=-370.7194668673783, de=-10.34229422283994, acc=np.float64(5.532927860076645e+173), random=0.4094954707153864
Inserted particle 28
Old energy=-370.7194668673783, new energy=-381.90781888174286, de=-11.188352014364568, acc=np.float64(9.038683297513475e+187), random=0.19004083637014857
Inserted particle 29
Old energy=-381.90781888174286, new energy=-390.18913322157334, de=-8.281314339830487, acc=np.float64(1.3182721379881335e+139), random=0.2593074228409512
Inserted particle 30
Old energy=-390.18913322157334, new energy=-392.7194210876552, de=-2.530287866081835, acc=np.float64(3.2135105364186836e+42), random=0.368706041406911
Old energy=-390.18913322157334, new energy=-343.22770348980066, de=46.96142973177268, acc=np.float64(0.0), random=0.29948735641057544
Old energy=-390.18913322157334, new energy=-391.9470646471931, de=-1.757931425619745, acc=np.float64(3.403754206204541e+29), random=0.11024899776641639
Old energy=-390.18913322157334, new energy=-397.4714077514512, de=-7.282274529877839, acc=np.float64(2.172047115970688e+122), random=0.853089891818317
Inserted particle 31
Old energy=-397.4714077514512, new energy=-201.84842700716277, de=195.6229807442884, acc=np.float64(0.0), random=0.7172312048224184
Old energy=-397.4714077514512, new energy=-409.51758859289333, de=-12.046180841442151, acc=np.float64(2.328091753685072e+202), random=0.7007421832233066
Inserted particle 32
Old energy=-409.51758859289333, new energy=-422.30745403223574, de=-12.789865439342407, acc=np.float64(7.250295553039641e+214), random=0.37954479237838723
Inserted particle 33
Using Materials Project MACE for MACECalculator with /home/runner/.cache/mace/macesmalldensityagnesistressmodel
Using float64 for MACECalculator, which is slower but more accurate. Recommended for geometry optimization.
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/mace/calculators/mace.py:226: UserWarning: Environment variable TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD detected, since the`weights_only` argument was not explicitly passed to `torch.load`, forcing weights_only=False.
  torch.load(f=model_path, map_location=device)
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/torch/jit/_serialization.py:176: FutureWarning: `torch.jit.load` is deprecated. Please switch to `torch.export`.
  warnings.warn(
/home/runner/work/pack-mm/pack-mm/.venv/lib/python3.12/site-packages/torch/jit/_serialization.py:176: FutureWarning: `torch.jit.load` is deprecated. Please switch to `torch.export`.
  warnings.warn(
       Step     Time          Energy          fmax
LBFGS:    0 07:12:16     -422.307454       13.877663
LBFGS:    1 07:12:16     -435.791603       15.542238
LBFGS:    2 07:12:16     -445.636460        8.628340
LBFGS:    3 07:12:17     -451.808973        4.176232
LBFGS:    4 07:12:17     -455.545885        3.666724
LBFGS:    5 07:12:18     -458.932705        3.087802
LBFGS:    6 07:12:18     -462.238560        2.496349
LBFGS:    7 07:12:18     -464.286151        3.489929
LBFGS:    8 07:12:19     -466.032275        2.215424
LBFGS:    9 07:12:19     -467.425347        1.697507
LBFGS:   10 07:12:20     -468.662562        2.029074
LBFGS:   11 07:12:20     -469.699687        2.413723
LBFGS:   12 07:12:20     -470.733457        1.752417
LBFGS:   13 07:12:21     -471.567068        1.079853
LBFGS:   14 07:12:21     -472.669489        1.711636
LBFGS:   15 07:12:21     -473.205563        1.634225
LBFGS:   16 07:12:22     -473.831545        1.175250
LBFGS:   17 07:12:22     -474.157829        2.514301
LBFGS:   18 07:12:23     -474.720307        1.106639
LBFGS:   19 07:12:23     -475.243021        0.929779
LBFGS:   20 07:12:23     -475.673385        1.057766
LBFGS:   21 07:12:24     -475.932370        0.881880
LBFGS:   22 07:12:24     -476.175535        0.882676
LBFGS:   23 07:12:25     -476.420049        1.188850
LBFGS:   24 07:12:25     -476.594292        0.765145
LBFGS:   25 07:12:25     -476.862982        0.805157
LBFGS:   26 07:12:26     -477.133243        0.879516
LBFGS:   27 07:12:26     -477.358436        1.161428
LBFGS:   28 07:12:27     -477.583134        0.853986
LBFGS:   29 07:12:27     -477.816074        0.892980
LBFGS:   30 07:12:27     -478.002069        0.802879
LBFGS:   31 07:12:28     -478.159765        0.907363
LBFGS:   32 07:12:28     -478.304739        0.732561
LBFGS:   33 07:12:29     -478.516317        0.698569
LBFGS:   34 07:12:29     -478.721229        0.788372
LBFGS:   35 07:12:29     -478.936063        0.775582
LBFGS:   36 07:12:30     -479.103873        0.650802
LBFGS:   37 07:12:30     -479.262580        0.675939
LBFGS:   38 07:12:30     -479.421737        0.860773
LBFGS:   39 07:12:31     -479.601171        0.640421
LBFGS:   40 07:12:31     -479.790530        0.622390
LBFGS:   41 07:12:32     -479.910151        0.659465
LBFGS:   42 07:12:32     -480.006815        0.481454
LBFGS:   43 07:12:32     -480.136074        0.590734
LBFGS:   44 07:12:33     -480.262922        0.953696
LBFGS:   45 07:12:33     -480.392769        0.508664
LBFGS:   46 07:12:34     -480.490737        0.586978
LBFGS:   47 07:12:34     -480.588302        0.639654
LBFGS:   48 07:12:34     -480.763744        0.638177
LBFGS:   49 07:12:35     -480.897251        0.534118
LBFGS:   50 07:12:35     -481.021311        0.485723
LBFGS:   51 07:12:35     -481.127862        0.582302
LBFGS:   52 07:12:36     -481.232738        0.612588
LBFGS:   53 07:12:36     -481.347576        0.649466
LBFGS:   54 07:12:37     -481.454183        0.629958
LBFGS:   55 07:12:37     -481.556168        0.408971
LBFGS:   56 07:12:37     -481.641221        0.448516
LBFGS:   57 07:12:38     -481.724783        0.448668
LBFGS:   58 07:12:38     -481.835808        0.413646
LBFGS:   59 07:12:39     -481.914032        0.685601
LBFGS:   60 07:12:39     -481.981834        0.460009
LBFGS:   61 07:12:39     -482.056799        0.391624
LBFGS:   62 07:12:40     -482.132678        0.308693
LBFGS:   63 07:12:40     -482.215704        0.362441
LBFGS:   64 07:12:40     -482.271780        0.359791
LBFGS:   65 07:12:41     -482.338623        0.381272
LBFGS:   66 07:12:41     -482.395852        0.422197
LBFGS:   67 07:12:42     -482.458444        0.386613
LBFGS:   68 07:12:42     -482.532481        0.394048
LBFGS:   69 07:12:42     -482.601371        0.402546
LBFGS:   70 07:12:43     -482.653404        0.353862
LBFGS:   71 07:12:43     -482.691509        0.377310
LBFGS:   72 07:12:43     -482.734611        0.330249
LBFGS:   73 07:12:44     -482.799811        0.381771
LBFGS:   74 07:12:44     -482.857080        0.447662
LBFGS:   75 07:12:45     -482.917838        0.376530
LBFGS:   76 07:12:45     -482.968576        0.315092
LBFGS:   77 07:12:45     -483.020102        0.310454
LBFGS:   78 07:12:46     -483.066142        0.347737
LBFGS:   79 07:12:46     -483.112253        0.311655
LBFGS:   80 07:12:46     -483.152855        0.330687
LBFGS:   81 07:12:47     -483.191872        0.268214
LBFGS:   82 07:12:47     -483.224914        0.444314
LBFGS:   83 07:12:48     -483.260812        0.273215
LBFGS:   84 07:12:48     -483.299696        0.464131
LBFGS:   85 07:12:48     -483.342284        0.301555
LBFGS:   86 07:12:49     -483.380349        0.306767
LBFGS:   87 07:12:49     -483.408996        0.324210
LBFGS:   88 07:12:50     -483.442423        0.342083
LBFGS:   89 07:12:50     -483.484117        0.290655
LBFGS:   90 07:12:50     -483.530734        0.297088
LBFGS:   91 07:12:51     -483.560967        0.248771
LBFGS:   92 07:12:51     -483.600029        0.496099
LBFGS:   93 07:12:51     -483.648500        0.461463
LBFGS:   94 07:12:52     -483.694032        0.991482
LBFGS:   95 07:12:52     -483.760075        0.537252
LBFGS:   96 07:12:53     -483.806151        0.382513
LBFGS:   97 07:12:53     -483.840036        0.343296
LBFGS:   98 07:12:53     -483.870777        0.350422
LBFGS:   99 07:12:54     -483.921630        0.429894
LBFGS:  100 07:12:54     -483.964606        0.493325
LBFGS:  101 07:12:54     -483.996735        0.413160
LBFGS:  102 07:12:55     -484.032976        0.290603
LBFGS:  103 07:12:55     -484.070603        0.287104
LBFGS:  104 07:12:56     -484.102650        0.266610
LBFGS:  105 07:12:56     -484.135817        0.265644
LBFGS:  106 07:12:56     -484.162171        0.250373
LBFGS:  107 07:12:57     -484.189260        0.292548
LBFGS:  108 07:12:57     -484.218739        0.307715
LBFGS:  109 07:12:58     -484.248907        0.565384
LBFGS:  110 07:12:58     -484.278317        0.251283
LBFGS:  111 07:12:58     -484.303058        0.216313
LBFGS:  112 07:12:59     -484.320560        0.222352
LBFGS:  113 07:12:59     -484.340146        0.220417
LBFGS:  114 07:13:00     -484.365009        0.237989
LBFGS:  115 07:13:00     -484.388229        0.175005
LBFGS:  116 07:13:00     -484.410060        0.206293
LBFGS:  117 07:13:01     -484.430236        0.204081
LBFGS:  118 07:13:01     -484.452477        0.252452
LBFGS:  119 07:13:01     -484.475909        0.273593
LBFGS:  120 07:13:02     -484.498682        0.301685
LBFGS:  121 07:13:02     -484.518715        0.308898
LBFGS:  122 07:13:03     -484.537707        0.230875
LBFGS:  123 07:13:03     -484.559027        0.203123
LBFGS:  124 07:13:03     -484.580842        0.256447
LBFGS:  125 07:13:04     -484.603563        0.279150
LBFGS:  126 07:13:04     -484.623792        0.214336
LBFGS:  127 07:13:05     -484.642450        0.210545
LBFGS:  128 07:13:05     -484.661977        0.295679
LBFGS:  129 07:13:05     -484.689155        0.401164
LBFGS:  130 07:13:06     -484.718331        0.308733
LBFGS:  131 07:13:06     -484.741818        0.382936
LBFGS:  132 07:13:07     -484.763953        0.216649
LBFGS:  133 07:13:07     -484.787856        0.235494
LBFGS:  134 07:13:07     -484.812531        0.264911
LBFGS:  135 07:13:08     -484.835767        0.402090
LBFGS:  136 07:13:08     -484.858430        0.217955
LBFGS:  137 07:13:09     -484.877322        0.179545
LBFGS:  138 07:13:09     -484.898388        0.261471
LBFGS:  139 07:13:09     -484.921436        0.243428
LBFGS:  140 07:13:10     -484.948703        0.319640
LBFGS:  141 07:13:10     -484.971011        0.261407
LBFGS:  142 07:13:10     -484.991352        0.230273
LBFGS:  143 07:13:11     -485.011476        0.211246
LBFGS:  144 07:13:11     -485.036650        0.290986
LBFGS:  145 07:13:12     -485.059315        0.183145
LBFGS:  146 07:13:12     -485.079177        0.199937
LBFGS:  147 07:13:12     -485.097575        0.197300
LBFGS:  148 07:13:13     -485.115220        0.225362
LBFGS:  149 07:13:13     -485.131850        0.206018
LBFGS:  150 07:13:14     -485.148506        0.180703
LBFGS:  151 07:13:14     -485.164133        0.192632
LBFGS:  152 07:13:14     -485.179739        0.192122
LBFGS:  153 07:13:15     -485.193961        0.157358
LBFGS:  154 07:13:15     -485.206883        0.150165
LBFGS:  155 07:13:16     -485.217582        0.131588
LBFGS:  156 07:13:16     -485.226837        0.132443
LBFGS:  157 07:13:16     -485.236188        0.135832
LBFGS:  158 07:13:17     -485.246934        0.128135
LBFGS:  159 07:13:17     -485.258847        0.150494
LBFGS:  160 07:13:18     -485.271095        0.170134
LBFGS:  161 07:13:18     -485.282844        0.206563
LBFGS:  162 07:13:18     -485.293838        0.155076
LBFGS:  163 07:13:19     -485.304935        0.155138
LBFGS:  164 07:13:19     -485.316104        0.131744
LBFGS:  165 07:13:20     -485.327063        0.189763
LBFGS:  166 07:13:20     -485.337150        0.153033
LBFGS:  167 07:13:20     -485.347754        0.150837
LBFGS:  168 07:13:21     -485.359310        0.153125
LBFGS:  169 07:13:21     -485.371676        0.162042
LBFGS:  170 07:13:22     -485.382159        0.141846
LBFGS:  171 07:13:22     -485.390716        0.119534
LBFGS:  172 07:13:22     -485.399287        0.143396
LBFGS:  173 07:13:23     -485.410824        0.179864
LBFGS:  174 07:13:23     -485.424947        0.205644
LBFGS:  175 07:13:24     -485.438451        0.241467
LBFGS:  176 07:13:24     -485.448004        0.214444
LBFGS:  177 07:13:24     -485.456397        0.134921
LBFGS:  178 07:13:25     -485.464157        0.134603
LBFGS:  179 07:13:25     -485.473787        0.186881
LBFGS:  180 07:13:26     -485.480683        0.173870
LBFGS:  181 07:13:26     -485.487157        0.115710
LBFGS:  182 07:13:26     -485.493831        0.128687
LBFGS:  183 07:13:27     -485.501392        0.116799
LBFGS:  184 07:13:27     -485.508188        0.154474
LBFGS:  185 07:13:28     -485.513987        0.102474
LBFGS:  186 07:13:28     -485.519603        0.105016
LBFGS:  187 07:13:28     -485.525997        0.152877
LBFGS:  188 07:13:29     -485.532837        0.173260
LBFGS:  189 07:13:29     -485.538829        0.115077
LBFGS:  190 07:13:30     -485.543717        0.090573
[3]:
viewer=WeasWidget()
viewer.from_ase(final)
viewer.avr.model_style = 1
viewer.avr.show_hydrogen_bonds = True
viewer
[3]:
[4]:
m = sum(final.get_masses())*1.660538921*10**(-24)
V = final.get_volume()*10**(-24)
rho = m/V
print(final.cell.cellpar())
print(f"Mass: {m:.3e} g")
print(f"Volume: {V:.3e} cm^3")
print(f"Density: {rho:.2f} g/cm^3")
[10.12960775 10.12960775 10.12960775 90.         90.         90.        ]
Mass: 9.872e-22 g
Volume: 1.039e-21 cm^3
Density: 0.95 g/cm^3