diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index 03cb56921a..893d0f23d8 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -113,11 +113,6 @@ void CommTiled::init() int bufextra_old = bufextra; init_exchange(); if (bufextra > bufextra_old) grow_send(maxsend+bufextra,2); - - // temporary restrictions - - if (triclinic) - error->all(FLERR,"Cannot yet use comm_style tiled with triclinic box"); } /* ---------------------------------------------------------------------- @@ -132,15 +127,23 @@ void CommTiled::setup() // domain properties used in setup method and methods it calls dimension = domain->dimension; - prd = domain->prd; - boxlo = domain->boxlo; - boxhi = domain->boxhi; - sublo = domain->sublo; - subhi = domain->subhi; - int *periodicity = domain->periodicity; int ntypes = atom->ntypes; + if (triclinic == 0) { + prd = domain->prd; + boxlo = domain->boxlo; + boxhi = domain->boxhi; + sublo = domain->sublo; + subhi = domain->subhi; + } else { + prd = domain->prd_lamda; + boxlo = domain->boxlo_lamda; + boxhi = domain->boxhi_lamda; + sublo = domain->sublo_lamda; + subhi = domain->subhi_lamda; + } + // set function pointers if (layout != Comm::LAYOUT_TILED) { @@ -189,6 +192,13 @@ void CommTiled::setup() cutghost[1] = cut * length1; length2 = h_inv[2]; cutghost[2] = cut * length2; + if (mode == Comm::MULTI){ + for (i = 1; i <= ntypes; i++) { + cutghostmulti[i][0] *= length0; + cutghostmulti[i][1] *= length1; + cutghostmulti[i][2] *= length2; + } + } } if ((periodicity[0] && cutghost[0] > prd[0]) || @@ -347,6 +357,10 @@ void CommTiled::setup() pbc_flag[iswap][i] = 1; if (idir == 0) pbc[iswap][i][idim] = 1; else pbc[iswap][i][idim] = -1; + if (triclinic) { + if (idim == 1) pbc[iswap][i][5] = pbc[iswap][i][idim]; + if (idim == 2) pbc[iswap][i][4] = pbc[iswap][i][3] = pbc[iswap][i][idim]; + } sbox[0] = MAX(oboxlo[0],lo2[0]); sbox[1] = MAX(oboxlo[1],lo2[1]); sbox[2] = MAX(oboxlo[2],lo2[2]); @@ -397,6 +411,10 @@ void CommTiled::setup() pbc_flag[iswap][i] = 1; if (idir == 0) pbc[iswap][i][idim] = 1; else pbc[iswap][i][idim] = -1; + if (triclinic) { + if (idim == 1) pbc[iswap][i][5] = pbc[iswap][i][idim]; + if (idim == 2) pbc[iswap][i][4] = pbc[iswap][i][3] = pbc[iswap][i][idim]; + } sbox[0] = MAX(oboxlo[0],lo2[0]); sbox[1] = MAX(oboxlo[1],lo2[1]); sbox[2] = MAX(oboxlo[2],lo2[2]); diff --git a/unittest/force-styles/tests/atomic-pair-colloid_multi_triclinic.yaml b/unittest/force-styles/tests/atomic-pair-colloid_multi_triclinic.yaml new file mode 100644 index 0000000000..8d6a237162 --- /dev/null +++ b/unittest/force-styles/tests/atomic-pair-colloid_multi_triclinic.yaml @@ -0,0 +1,86 @@ +--- +lammps_version: 21 Jul 2020 +date_generated: Mon Aug 3 16:06:24 202 +epsilon: 5e-11 +prerequisites: ! | + pair colloid +pre_commands: ! | + variable units index lj +post_commands: ! | + neighbor 1.0 multi + comm_style brick + comm_modify mode multi + change_box all triclinic +input_file: in.colloid +pair_style: colloid 12.5 +pair_coeff: ! | + 1 1 1.0 1.0 5.0 5.0 12.5 + 1 2 5.0 1.0 5.0 0.0 7.0 + 2 2 10.0 1.0 0.0 0.0 2.5 +extract: ! "" +natoms: 27 +init_vdwl: -0.250265293649414 +init_coul: 0 +init_stress: ! |2- + 1.6693554149342913e+00 1.1752557173260270e+01 1.0084916384631617e+00 -5.5164068587184527e+00 3.4448938909043431e-01 2.8524984331506258e+00 +init_forces: ! |2 + 1 7.2698902368314056e-02 7.6228314794484775e-02 1.0726717051410484e-01 + 2 -4.1487528743785314e-02 -9.8021436494101673e-03 1.5709289685835706e-01 + 3 -6.4514052467860251e-03 -1.0256365723614392e-03 -6.5497018575823654e-04 + 4 -1.5879716299045554e-02 -1.3313626328419375e-02 -1.1960220488237115e-02 + 5 -3.6475105049685402e-02 -2.2992583864092257e-02 1.6166097759476136e-02 + 6 5.4769180740248721e-04 -2.4426732691233789e-02 -3.6444902428178980e-02 + 7 1.2006858444817004e-03 8.6089326153587114e-04 4.8033026817420977e-05 + 8 6.2576206692511894e-03 1.1942031910109577e-03 8.5598267089392085e-04 + 9 1.8304752931477772e+00 -4.3380838069003760e+00 -1.2763141904695217e+00 + 10 1.0456768773213965e-01 -2.8797785965171453e-02 -1.0768387599117879e-02 + 11 7.4457152913473112e-04 5.3043528596594623e-05 1.1848179655097060e-04 + 12 1.8275344545112628e-04 4.1948901318387846e-04 9.8529270880004928e-05 + 13 -1.1259391902077470e-01 1.6396787556459839e-02 -9.0455786475091124e-04 + 14 -2.4411189619188785e-04 -5.8284002050384879e-05 1.8046434825690733e-05 + 15 -2.9421019290851403e-03 -7.4831176382853144e-04 -1.2326238660052020e-03 + 16 2.2461127490925330e+00 -1.1352527056039741e+00 2.3679980564815386e+00 + 17 -1.8842133286566962e-02 1.7091738246445273e-02 -1.4247568288438442e-02 + 18 1.0304762560041125e-01 7.8062023784307467e-03 1.9257495383127633e-02 + 19 -4.3351162132476757e-02 -2.2995928402219718e-02 -1.1392806036292676e-02 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.2501672350519284e-02 6.8582908647593938e-03 -6.8677246013076107e-02 + 22 -2.2945818607502839e+00 1.1603382884260454e+00 -2.3594708301087310e+00 + 23 2.5606115583434265e-02 -1.0270997331622232e-01 -1.1451933998746673e-01 + 24 -8.0648597970214809e-04 1.1943689027481706e-04 -9.8441554909815322e-04 + 25 6.1663239781204458e-04 -2.9236784591333030e-04 3.5387752678593654e-03 + 26 -1.7197958284241512e+00 4.3707144027711022e+00 1.2977194913045054e+00 + 27 -1.4110864281012736e-01 4.2418795982941855e-02 -6.2606997884263993e-02 +run_vdwl: 0.0367090517931737 +run_coul: 0 +run_stress: ! |2- + 3.2547164843322691e+00 1.2822272288053391e+01 2.9381904014809663e+00 -6.5755478139675931e+00 2.3052669923975411e+00 1.5140903126232879e+00 +run_forces: ! |2 + 1 5.8196197291625715e-02 7.7034242946349946e-02 1.0456829776646254e-01 + 2 -4.1552988555246327e-02 -1.1540194679885485e-02 1.5467509805429100e-01 + 3 -6.6558201800471870e-03 -9.8090417095619679e-04 -4.5870088099424396e-04 + 4 -1.6184658518487705e-02 -1.2048418808706472e-02 -1.2190156970179262e-02 + 5 -3.3316803862839438e-02 -2.1131495092834646e-02 1.4963198384123119e-02 + 6 4.7038346343352116e-04 -3.0307837184768524e-02 -4.3608938525025766e-02 + 7 1.0396652127649081e-03 7.5317021954246196e-04 4.1930480907776011e-05 + 8 6.4423457305213877e-03 1.1468835414812518e-03 6.8526191116136061e-04 + 9 1.7585178109228492e+00 -4.3823551563819700e+00 -1.2468505588145766e+00 + 10 1.3392700382201897e-01 -2.9471624976996433e-02 -9.0915578208389906e-03 + 11 7.9839096035526857e-04 6.5881060273478105e-05 1.3840230606223543e-04 + 12 1.8540711169000120e-04 3.9935505493718929e-04 1.2187452986589205e-04 + 13 -1.4075050026169886e-01 1.8204883476184704e-02 -2.0674384501958810e-03 + 14 -2.4452271394244688e-04 -5.7393635529214755e-05 1.6908863929994165e-05 + 15 -3.4577717467029726e-03 -9.3350658134032599e-04 -1.5696623820874889e-03 + 16 5.4762334392971725e+00 -3.3427628201841184e+00 5.8008787111000641e+00 + 17 -1.7123087875076635e-02 1.5861563712562771e-02 -1.3049347364948664e-02 + 18 1.1434938302418582e-01 8.6112942994291432e-03 2.0292892978926169e-02 + 19 -3.8092989065812294e-02 -1.9963855292591683e-02 -9.8568020007968223e-03 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.1446743356056415e-02 8.4986882092498717e-03 -7.1565549648589466e-02 + 22 -5.5269240273286284e+00 3.3665609275390551e+00 -5.7932229791606371e+00 + 23 1.5450935830291834e-02 -1.0557581147017484e-01 -1.1539704280712981e-01 + 24 -7.5222270706101302e-04 1.1318969997713211e-04 -9.2841932954143037e-04 + 25 1.1778375109233736e-03 -7.1254208855308434e-05 3.8035457799329383e-03 + 26 -1.6497221843622811e+00 4.4233264004281976e+00 1.2763820593322663e+00 + 27 -1.3345796635606427e-01 3.6623792481486235e-02 -5.6711027332452084e-02 +...