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'))
cuequivariance or cuequivariance_torch is not available. Cuequivariance acceleration will be disabled.
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:199: 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)
Old energy=0.0, new energy=-14.169908427446723, de=-14.169908427446723, acc=np.float64(1.106790443611292e+238), random=0.6573675854710377
Inserted particle 1
Old energy=-14.169908427446723, new energy=-28.388449306260227, de=-14.218540878813505, 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.7204517043842, de=-14.159070605836376, acc=np.float64(7.277763676746241e+237), random=0.5196536887579605
Inserted particle 4
Old energy=-56.7204517043842, new energy=-70.95493496595596, de=-14.234483261571754, acc=np.float64(1.3454737732753098e+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.42261818629609, de=-14.221420590102184, acc=np.float64(8.117680232379918e+238), random=0.1050746012583641
Inserted particle 7
Old energy=-99.42261818629609, new energy=-113.7966213027276, de=-14.37400311643151, acc=np.float64(2.9696579904185955e+241), random=0.9378701885604214
Inserted particle 8
Old energy=-113.7966213027276, new energy=-128.1306220375978, de=-14.334000734870187, acc=np.float64(6.319689981824566e+240), random=0.3762683149324123
Inserted particle 9
Old energy=-128.1306220375978, new energy=-141.85615337199786, de=-13.725531334400074, acc=np.float64(3.7918946959024316e+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.53713931561308, de=-14.475332734191994, acc=np.float64(1.4961311672716866e+243), random=0.47590567428965436
Inserted particle 12
Old energy=-170.53713931561308, new energy=-184.44423715363098, de=-13.907097838017904, acc=np.float64(4.256379248320164e+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.04724634722004, de=-14.174914690308526, acc=np.float64(1.3432812220809855e+238), random=0.10084644599814097
Inserted particle 15
Old energy=-213.04724634722004, new energy=-225.548543930126, de=-12.501297582905949, acc=np.float64(1.0295025792414219e+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.6971639080533, de=-13.878486362952685, acc=np.float64(1.4073059625976879e+233), random=0.3273810695294246
Inserted particle 18
Old energy=-251.6971639080533, new energy=-240.75598269219518, de=10.941181215858137, acc=np.float64(1.5710242942282633e-184), random=0.06247404096988407
Old energy=-251.6971639080533, new energy=-265.98484303063964, de=-14.287679122586326, acc=np.float64(1.0532383716559922e+240), random=0.9267631049637567
Inserted particle 19
Old energy=-265.98484303063964, new energy=-273.78462117763786, de=-7.7997781469982215, acc=np.float64(1.07287796861951e+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.0973160835176, de=12.669976703296356, acc=np.float64(1.4245808268246304e-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.38286676790995, de=-11.96205402133944, acc=np.float64(8.98941099912018e+200), random=0.9616436876719956
Inserted particle 24
Old energy=-324.38286676790995, new energy=-334.7276976756465, de=-10.344830907736537, acc=np.float64(6.103366546753475e+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.3771726445383, de=-11.491936778830393, acc=np.float64(1.1379062387491906e+193), random=0.7175118692379753
Inserted particle 27
Old energy=-360.3771726445383, new energy=-370.71946686737834, de=-10.342294222840053, acc=np.float64(5.532927860100863e+173), random=0.4094954707153864
Inserted particle 28
Old energy=-370.71946686737834, new energy=-381.90781888174286, de=-11.188352014364511, acc=np.float64(9.038683297493437e+187), random=0.19004083637014857
Inserted particle 29
Old energy=-381.90781888174286, new energy=-390.1891332215734, de=-8.281314339830544, acc=np.float64(1.3182721379910562e+139), random=0.2593074228409512
Inserted particle 30
Old energy=-390.1891332215734, new energy=-392.71942108765535, de=-2.5302878660819488, acc=np.float64(3.213510536432795e+42), random=0.368706041406911
Old energy=-390.1891332215734, new energy=-343.2277035252214, de=46.96142969635201, acc=np.float64(0.0), random=0.29948735641057544
Old energy=-390.1891332215734, new energy=-391.9470646471931, de=-1.757931425619688, acc=np.float64(3.4037542061970436e+29), random=0.11024899776641639
Old energy=-390.1891332215734, new energy=-397.4714077514512, de=-7.282274529877782, acc=np.float64(2.1720471159658727e+122), random=0.853089891818317
Inserted particle 31
Old energy=-397.4714077514512, new energy=-201.84842710657355, de=195.62298064487763, acc=np.float64(0.0), random=0.7172312048224184
Old energy=-397.4714077514512, new energy=-409.5175885928934, de=-12.046180841442208, acc=np.float64(2.328091753690233e+202), random=0.7007421832233066
Inserted particle 32
Old energy=-409.5175885928934, new energy=-422.30745403223574, de=-12.78986543934235, acc=np.float64(7.250295553023568e+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:199: 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)
       Step     Time          Energy          fmax
LBFGS:    0 19:01:11     -422.307454       13.877663
LBFGS:    1 19:01:12     -435.791603       15.542238
LBFGS:    2 19:01:12     -445.636460        8.628340
LBFGS:    3 19:01:13     -451.808973        4.176232
LBFGS:    4 19:01:13     -455.545885        3.666724
LBFGS:    5 19:01:14     -458.932705        3.087802
LBFGS:    6 19:01:14     -462.238560        2.496349
LBFGS:    7 19:01:15     -464.286151        3.489929
LBFGS:    8 19:01:15     -466.032275        2.215424
LBFGS:    9 19:01:15     -467.425347        1.697507
LBFGS:   10 19:01:16     -468.662562        2.029074
LBFGS:   11 19:01:16     -469.699687        2.413723
LBFGS:   12 19:01:17     -470.733457        1.752417
LBFGS:   13 19:01:17     -471.567068        1.079853
LBFGS:   14 19:01:18     -472.669489        1.711636
LBFGS:   15 19:01:18     -473.205563        1.634225
LBFGS:   16 19:01:19     -473.831545        1.175250
LBFGS:   17 19:01:19     -474.157829        2.514301
LBFGS:   18 19:01:20     -474.720307        1.106639
LBFGS:   19 19:01:20     -475.243021        0.929779
LBFGS:   20 19:01:21     -475.673385        1.057766
LBFGS:   21 19:01:21     -475.932370        0.881880
LBFGS:   22 19:01:22     -476.175535        0.882676
LBFGS:   23 19:01:22     -476.420049        1.188850
LBFGS:   24 19:01:23     -476.594292        0.765145
LBFGS:   25 19:01:23     -476.862982        0.805157
LBFGS:   26 19:01:23     -477.133243        0.879516
LBFGS:   27 19:01:24     -477.358436        1.161428
LBFGS:   28 19:01:24     -477.583134        0.853986
LBFGS:   29 19:01:25     -477.816074        0.892980
LBFGS:   30 19:01:25     -478.002069        0.802879
LBFGS:   31 19:01:26     -478.159765        0.907363
LBFGS:   32 19:01:26     -478.304739        0.732561
LBFGS:   33 19:01:27     -478.516317        0.698569
LBFGS:   34 19:01:27     -478.721229        0.788372
LBFGS:   35 19:01:28     -478.936063        0.775582
LBFGS:   36 19:01:28     -479.103873        0.650802
LBFGS:   37 19:01:29     -479.262580        0.675939
LBFGS:   38 19:01:29     -479.421737        0.860773
LBFGS:   39 19:01:30     -479.601171        0.640421
LBFGS:   40 19:01:30     -479.790530        0.622390
LBFGS:   41 19:01:31     -479.910151        0.659465
LBFGS:   42 19:01:31     -480.006815        0.481454
LBFGS:   43 19:01:31     -480.136074        0.590734
LBFGS:   44 19:01:32     -480.262922        0.953696
LBFGS:   45 19:01:32     -480.392769        0.508664
LBFGS:   46 19:01:33     -480.490737        0.586978
LBFGS:   47 19:01:33     -480.588302        0.639654
LBFGS:   48 19:01:34     -480.763744        0.638177
LBFGS:   49 19:01:34     -480.897251        0.534118
LBFGS:   50 19:01:35     -481.021311        0.485723
LBFGS:   51 19:01:35     -481.127862        0.582302
LBFGS:   52 19:01:36     -481.232738        0.612588
LBFGS:   53 19:01:36     -481.347576        0.649466
LBFGS:   54 19:01:37     -481.454183        0.629958
LBFGS:   55 19:01:37     -481.556168        0.408971
LBFGS:   56 19:01:37     -481.641221        0.448516
LBFGS:   57 19:01:38     -481.724783        0.448668
LBFGS:   58 19:01:38     -481.835808        0.413646
LBFGS:   59 19:01:39     -481.914032        0.685601
LBFGS:   60 19:01:39     -481.981834        0.460009
LBFGS:   61 19:01:40     -482.056799        0.391624
LBFGS:   62 19:01:40     -482.132678        0.308693
LBFGS:   63 19:01:41     -482.215704        0.362441
LBFGS:   64 19:01:41     -482.271780        0.359791
LBFGS:   65 19:01:42     -482.338623        0.381272
LBFGS:   66 19:01:42     -482.395852        0.422197
LBFGS:   67 19:01:43     -482.458444        0.386613
LBFGS:   68 19:01:43     -482.532481        0.394048
LBFGS:   69 19:01:44     -482.601371        0.402546
LBFGS:   70 19:01:44     -482.653404        0.353862
LBFGS:   71 19:01:45     -482.691509        0.377310
LBFGS:   72 19:01:45     -482.734611        0.330249
LBFGS:   73 19:01:45     -482.799811        0.381771
LBFGS:   74 19:01:46     -482.857080        0.447662
LBFGS:   75 19:01:46     -482.917838        0.376530
LBFGS:   76 19:01:47     -482.968576        0.315092
LBFGS:   77 19:01:47     -483.020101        0.310454
LBFGS:   78 19:01:48     -483.066142        0.347737
LBFGS:   79 19:01:48     -483.112253        0.311655
LBFGS:   80 19:01:49     -483.152855        0.330687
LBFGS:   81 19:01:49     -483.191872        0.268214
LBFGS:   82 19:01:50     -483.224914        0.444314
LBFGS:   83 19:01:50     -483.260812        0.273215
LBFGS:   84 19:01:51     -483.299696        0.464131
LBFGS:   85 19:01:51     -483.342284        0.301555
LBFGS:   86 19:01:52     -483.380349        0.306767
LBFGS:   87 19:01:52     -483.408996        0.324211
LBFGS:   88 19:01:52     -483.442423        0.342084
LBFGS:   89 19:01:53     -483.484117        0.290656
LBFGS:   90 19:01:53     -483.530734        0.297088
LBFGS:   91 19:01:54     -483.560967        0.248771
LBFGS:   92 19:01:54     -483.600029        0.496099
LBFGS:   93 19:01:55     -483.648500        0.461463
LBFGS:   94 19:01:55     -483.694032        0.991481
LBFGS:   95 19:01:56     -483.760075        0.537253
LBFGS:   96 19:01:56     -483.806151        0.382515
LBFGS:   97 19:01:57     -483.840036        0.343295
LBFGS:   98 19:01:57     -483.870776        0.350422
LBFGS:   99 19:01:58     -483.921631        0.429895
LBFGS:  100 19:01:58     -483.964606        0.493320
LBFGS:  101 19:01:58     -483.996736        0.413153
LBFGS:  102 19:01:59     -484.032976        0.290601
LBFGS:  103 19:01:59     -484.070603        0.287103
LBFGS:  104 19:02:00     -484.102650        0.266610
LBFGS:  105 19:02:00     -484.135817        0.265643
LBFGS:  106 19:02:01     -484.162171        0.250369
LBFGS:  107 19:02:01     -484.189260        0.292546
LBFGS:  108 19:02:02     -484.218740        0.307706
LBFGS:  109 19:02:02     -484.248908        0.565371
LBFGS:  110 19:02:03     -484.278317        0.251354
LBFGS:  111 19:02:03     -484.303058        0.216327
LBFGS:  112 19:02:04     -484.320560        0.222344
LBFGS:  113 19:02:04     -484.340146        0.220412
LBFGS:  114 19:02:05     -484.365009        0.237987
LBFGS:  115 19:02:05     -484.388229        0.175008
LBFGS:  116 19:02:05     -484.410060        0.206289
LBFGS:  117 19:02:06     -484.430236        0.204077
LBFGS:  118 19:02:06     -484.452477        0.252451
LBFGS:  119 19:02:07     -484.475909        0.273568
LBFGS:  120 19:02:07     -484.498683        0.301674
LBFGS:  121 19:02:08     -484.518715        0.308904
LBFGS:  122 19:02:08     -484.537707        0.230892
LBFGS:  123 19:02:09     -484.559027        0.203116
LBFGS:  124 19:02:09     -484.580842        0.256442
LBFGS:  125 19:02:10     -484.603562        0.279154
LBFGS:  126 19:02:10     -484.623792        0.214331
LBFGS:  127 19:02:11     -484.642449        0.210542
LBFGS:  128 19:02:11     -484.661975        0.295669
LBFGS:  129 19:02:11     -484.689154        0.401151
LBFGS:  130 19:02:12     -484.718332        0.308726
LBFGS:  131 19:02:12     -484.741818        0.382969
LBFGS:  132 19:02:13     -484.763953        0.216638
LBFGS:  133 19:02:13     -484.787856        0.235513
LBFGS:  134 19:02:14     -484.812531        0.264937
LBFGS:  135 19:02:14     -484.835766        0.402124
LBFGS:  136 19:02:15     -484.858430        0.217953
LBFGS:  137 19:02:15     -484.877321        0.179554
LBFGS:  138 19:02:16     -484.898387        0.261446
LBFGS:  139 19:02:16     -484.921435        0.243394
LBFGS:  140 19:02:17     -484.948703        0.319621
LBFGS:  141 19:02:17     -484.971011        0.261375
LBFGS:  142 19:02:17     -484.991352        0.230271
LBFGS:  143 19:02:18     -485.011476        0.211258
LBFGS:  144 19:02:18     -485.036650        0.291015
LBFGS:  145 19:02:19     -485.059316        0.183163
LBFGS:  146 19:02:19     -485.079177        0.199940
LBFGS:  147 19:02:20     -485.097575        0.197279
LBFGS:  148 19:02:20     -485.115220        0.225396
LBFGS:  149 19:02:21     -485.131850        0.206028
LBFGS:  150 19:02:21     -485.148505        0.180702
LBFGS:  151 19:02:22     -485.164133        0.192611
LBFGS:  152 19:02:22     -485.179739        0.192113
LBFGS:  153 19:02:23     -485.193961        0.157355
LBFGS:  154 19:02:23     -485.206883        0.150161
LBFGS:  155 19:02:24     -485.217582        0.131592
LBFGS:  156 19:02:24     -485.226837        0.132444
LBFGS:  157 19:02:24     -485.236188        0.135832
LBFGS:  158 19:02:25     -485.246934        0.128134
LBFGS:  159 19:02:25     -485.258847        0.150498
LBFGS:  160 19:02:26     -485.271095        0.170130
LBFGS:  161 19:02:26     -485.282843        0.206553
LBFGS:  162 19:02:27     -485.293838        0.155075
LBFGS:  163 19:02:27     -485.304935        0.155148
LBFGS:  164 19:02:28     -485.316105        0.131736
LBFGS:  165 19:02:28     -485.327063        0.189752
LBFGS:  166 19:02:29     -485.337150        0.153041
LBFGS:  167 19:02:29     -485.347754        0.150834
LBFGS:  168 19:02:30     -485.359310        0.153122
LBFGS:  169 19:02:30     -485.371676        0.162032
LBFGS:  170 19:02:31     -485.382159        0.141829
LBFGS:  171 19:02:31     -485.390717        0.119533
LBFGS:  172 19:02:31     -485.399287        0.143391
LBFGS:  173 19:02:32     -485.410824        0.179853
LBFGS:  174 19:02:32     -485.424947        0.205613
LBFGS:  175 19:02:33     -485.438451        0.241444
LBFGS:  176 19:02:33     -485.448004        0.214438
LBFGS:  177 19:02:34     -485.456397        0.134944
LBFGS:  178 19:02:34     -485.464157        0.134600
LBFGS:  179 19:02:35     -485.473787        0.186862
LBFGS:  180 19:02:35     -485.480682        0.173867
LBFGS:  181 19:02:36     -485.487156        0.115708
LBFGS:  182 19:02:36     -485.493831        0.128686
LBFGS:  183 19:02:37     -485.501392        0.116803
LBFGS:  184 19:02:37     -485.508188        0.154473
LBFGS:  185 19:02:38     -485.513987        0.102476
LBFGS:  186 19:02:38     -485.519603        0.105021
LBFGS:  187 19:02:39     -485.525997        0.152851
LBFGS:  188 19:02:39     -485.532837        0.173253
LBFGS:  189 19:02:39     -485.538829        0.115083
LBFGS:  190 19:02:40     -485.543717        0.090572
[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.12960782 10.12960782 10.12960782 90.         90.         90.        ]
Mass: 9.872e-22 g
Volume: 1.039e-21 cm^3
Density: 0.95 g/cm^3