diff --git a/examples/SPIN/bfo/log.11May18.spin.bfo.g++.1 b/examples/SPIN/bfo/log.11May18.spin.bfo.g++.1 new file mode 100644 index 0000000000..8e9eb82d1f --- /dev/null +++ b/examples/SPIN/bfo/log.11May18.spin.bfo.g++.1 @@ -0,0 +1,212 @@ +LAMMPS (11 May 2018) +# layer sc iron atoms (in the [001] plane) in bismuth oxide + +clear +units metal +atom_style spin + +dimension 3 +boundary p p f + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice sc 3.96 +Lattice spacing in x,y,z = 3.96 3.96 3.96 +region box block 0.0 34.0 0.0 34.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 5780 atoms + Time spent = 0.0013566 secs + +# setting mass, mag. moments, and interactions for bfo + +mass 1 1.0 + +set group all spin/random 11 2.50 + 5780 settings made for spin/random + +pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 +pair_coeff * * spin/exchange exchange 6.0 -0.01575 0.0 1.965 +pair_coeff * * spin/magelec magelec 4.5 0.000109 1.0 1.0 1.0 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin anisotropy 0.0000033 0.0 0.0 1.0 +fix 2 all langevin/spin 0.0 0.1 21 +fix 3 all nve/spin lattice no + +timestep 0.0002 + +compute out_mag all compute/spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm v_emag temp etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 100 all custom 1 dump_bfo.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 5000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.1 + ghost atom cutoff = 6.1 + binsize = 3.05, bins = 45 45 7 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair spin/magelec, perpetual, copy from (1) + attributes: full, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 7.272 | 7.272 | 7.272 Mbytes +Step Time v_magnorm v_emag Temp TotEng + 0 0 0.010071723 -0.13298298 0 -0.12034311 + 50 0.01 0.0098643821 -1.3898985 0 -1.3772103 + 100 0.02 0.0096526211 -2.6381677 0 -2.6254222 + 150 0.03 0.0094342235 -3.8784006 0 -3.8656019 + 200 0.04 0.0092074832 -5.111441 0 -5.0986001 + 250 0.05 0.0089713115 -6.3380611 0 -6.3251904 + 300 0.06 0.0087256081 -7.5587787 0 -7.5458894 + 350 0.07 0.0084715548 -8.7738491 0 -8.7609521 + 400 0.08 0.008211486 -9.9833855 0 -9.9704932 + 450 0.09 0.0079483243 -11.18751 0 -11.174637 + 500 0.1 0.0076849713 -12.386462 0 -12.37362 + 550 0.11 0.007424064 -13.580633 0 -13.567832 + 600 0.12 0.0071680699 -14.770519 0 -14.757759 + 650 0.13 0.0069192726 -15.956579 0 -15.943853 + 700 0.14 0.0066793495 -17.139049 0 -17.126343 + 750 0.15 0.0064488038 -18.317803 0 -18.305099 + 800 0.16 0.0062267571 -19.492336 0 -19.479616 + 850 0.17 0.0060112235 -20.661925 0 -20.649176 + 900 0.18 0.0057995251 -21.825931 0 -21.813141 + 950 0.19 0.0055886511 -22.98413 0 -22.971297 + 1000 0.2 0.0053757923 -24.136967 0 -24.124095 + 1050 0.21 0.0051592263 -25.285621 0 -25.272717 + 1100 0.22 0.0049391661 -26.431928 0 -26.419004 + 1150 0.23 0.0047179149 -27.578212 0 -27.565281 + 1200 0.24 0.0044991004 -28.727051 0 -28.714128 + 1250 0.25 0.0042864034 -29.880967 0 -29.868062 + 1300 0.26 0.0040824475 -31.042054 0 -31.029173 + 1350 0.27 0.0038883007 -32.21165 0 -32.198795 + 1400 0.28 0.0037036595 -33.390159 0 -33.377326 + 1450 0.29 0.0035274815 -34.577121 0 -34.564302 + 1500 0.3 0.0033587207 -35.771483 0 -35.758672 + 1550 0.31 0.0031969501 -36.971996 0 -36.95919 + 1600 0.32 0.0030429081 -38.177601 0 -38.164801 + 1650 0.33 0.0028989804 -39.387757 0 -39.374962 + 1700 0.34 0.0027692024 -40.602665 0 -40.589873 + 1750 0.35 0.0026581403 -41.823341 0 -41.81054 + 1800 0.36 0.0025686991 -43.05145 0 -43.038628 + 1850 0.37 0.002500124 -44.288966 0 -44.276111 + 1900 0.38 0.0024477804 -45.537752 0 -45.52486 + 1950 0.39 0.0024050049 -46.799255 0 -46.786336 + 2000 0.4 0.0023657031 -48.074388 0 -48.061466 + 2050 0.41 0.0023260844 -49.363587 0 -49.350695 + 2100 0.42 0.0022848329 -50.666866 0 -50.654039 + 2150 0.43 0.0022419759 -51.983781 0 -51.971055 + 2200 0.44 0.0021972506 -53.31336 0 -53.300764 + 2250 0.45 0.0021488322 -54.654121 0 -54.641676 + 2300 0.46 0.0020929483 -56.004207 0 -55.991918 + 2350 0.47 0.0020244601 -57.361586 0 -57.349442 + 2400 0.48 0.001938225 -58.72428 0 -58.712247 + 2450 0.49 0.0018309419 -60.09064 0 -60.078671 + 2500 0.5 0.0017030436 -61.459658 0 -61.447705 + 2550 0.51 0.0015599449 -62.831213 0 -62.819237 + 2600 0.52 0.0014117554 -64.206088 0 -64.194074 + 2650 0.53 0.0012709942 -65.585701 0 -65.573657 + 2700 0.54 0.0011490452 -66.971565 0 -66.959515 + 2750 0.55 0.001053009 -68.364663 0 -68.352635 + 2800 0.56 0.00098415327 -69.765002 0 -69.753017 + 2850 0.57 0.00093809306 -71.171532 0 -71.159598 + 2900 0.58 0.00090656933 -72.58234 0 -72.570459 + 2950 0.59 0.00088069677 -73.994931 0 -73.983099 + 3000 0.6 0.00085472643 -75.406507 0 -75.39472 + 3050 0.61 0.00082842902 -76.814319 0 -76.802575 + 3100 0.62 0.00080642618 -78.216074 0 -78.204373 + 3150 0.63 0.00079463972 -79.610246 0 -79.598589 + 3200 0.64 0.0007962304 -80.996103 0 -80.984494 + 3250 0.65 0.00080980411 -82.37346 0 -82.361903 + 3300 0.66 0.00083070982 -83.742356 0 -83.730855 + 3350 0.67 0.00085389185 -85.102808 0 -85.091374 + 3400 0.68 0.00087624091 -86.454619 0 -86.443259 + 3450 0.69 0.00089741986 -87.797089 0 -87.785814 + 3500 0.7 0.00091910796 -89.12875 0 -89.117567 + 3550 0.71 0.00094318459 -90.447312 0 -90.436232 + 3600 0.72 0.00096989367 -91.750008 0 -91.739046 + 3650 0.73 0.00099713096 -93.034224 0 -93.023402 + 3700 0.74 0.0010212995 -94.298186 0 -94.287529 + 3750 0.75 0.0010391164 -95.5414 0 -95.530926 + 3800 0.76 0.0010491462 -96.764626 0 -96.754338 + 3850 0.77 0.0010521238 -97.969346 0 -97.95923 + 3900 0.78 0.0010500324 -99.156875 0 -99.146899 + 3950 0.79 0.0010447043 -100.32743 0 -100.31756 + 4000 0.8 0.0010368986 -101.4796 0 -101.46978 + 4050 0.81 0.0010263632 -102.61044 0 -102.60064 + 4100 0.82 0.0010126933 -103.71619 0 -103.70639 + 4150 0.83 0.00099631895 -104.79338 0 -104.78358 + 4200 0.84 0.0009789075 -105.8398 0 -105.82998 + 4250 0.85 0.00096287608 -106.85496 0 -106.84515 + 4300 0.86 0.00095034023 -107.84011 0 -107.83029 + 4350 0.87 0.00094219078 -108.7976 0 -108.78778 + 4400 0.88 0.00093779428 -109.73016 0 -109.72031 + 4450 0.89 0.0009354459 -110.63996 0 -110.63008 + 4500 0.9 0.00093342614 -111.52805 0 -111.51812 + 4550 0.91 0.0009311077 -112.39417 0 -112.38416 + 4600 0.92 0.00092926689 -113.23706 0 -113.22697 + 4650 0.93 0.00092921566 -114.05512 0 -114.04495 + 4700 0.94 0.00093142598 -114.84701 0 -114.83675 + 4750 0.95 0.00093479851 -115.61197 0 -115.60164 + 4800 0.96 0.0009369799 -116.3499 0 -116.33951 + 4850 0.97 0.00093516768 -117.06128 0 -117.05084 + 4900 0.98 0.00092684411 -117.74695 0 -117.73645 + 4950 0.99 0.00091046222 -118.40798 0 -118.39742 + 5000 1 0.00088619957 -119.04554 0 -119.03492 +Loop time of 128.304 on 1 procs for 5000 steps with 5780 atoms + +Performance: 0.673 ns/day, 35.640 hours/ns, 38.970 timesteps/s +99.6% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 24.227 | 24.227 | 24.227 | 0.0 | 18.88 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.081048 | 0.081048 | 0.081048 | 0.0 | 0.06 +Output | 39.796 | 39.796 | 39.796 | 0.0 | 31.02 +Modify | 64.112 | 64.112 | 64.112 | 0.0 | 49.97 +Other | | 0.08788 | | | 0.07 + +Nlocal: 5780 ave 5780 max 5780 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1065 ave 1065 max 1065 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 92480 ave 92480 max 92480 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 92480 +Ave neighs/atom = 16 +Neighbor list builds = 0 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:02:08 diff --git a/examples/SPIN/bfo/log.11May18.spin.bfo.g++.4 b/examples/SPIN/bfo/log.11May18.spin.bfo.g++.4 new file mode 100644 index 0000000000..c0f96b8195 --- /dev/null +++ b/examples/SPIN/bfo/log.11May18.spin.bfo.g++.4 @@ -0,0 +1,212 @@ +LAMMPS (11 May 2018) +# layer sc iron atoms (in the [001] plane) in bismuth oxide + +clear +units metal +atom_style spin + +dimension 3 +boundary p p f + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice sc 3.96 +Lattice spacing in x,y,z = 3.96 3.96 3.96 +region box block 0.0 34.0 0.0 34.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) + 2 by 2 by 1 MPI processor grid +create_atoms 1 box +Created 5780 atoms + Time spent = 0.000355959 secs + +# setting mass, mag. moments, and interactions for bfo + +mass 1 1.0 + +set group all spin/random 11 2.50 + 5780 settings made for spin/random + +pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 +pair_coeff * * spin/exchange exchange 6.0 -0.01575 0.0 1.965 +pair_coeff * * spin/magelec magelec 4.5 0.000109 1.0 1.0 1.0 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin anisotropy 0.0000033 0.0 0.0 1.0 +fix 2 all langevin/spin 0.0 0.1 21 +fix 3 all nve/spin lattice no + +timestep 0.0002 + +compute out_mag all compute/spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm v_emag temp etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 100 all custom 1 dump_bfo.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 5000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.1 + ghost atom cutoff = 6.1 + binsize = 3.05, bins = 45 45 7 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair spin/magelec, perpetual, copy from (1) + attributes: full, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 6.862 | 6.862 | 6.862 Mbytes +Step Time v_magnorm v_emag Temp TotEng + 0 0 0.010071723 -0.13298298 0 -0.12034311 + 50 0.01 0.0098643821 -1.3898985 0 -1.3772103 + 100 0.02 0.009652621 -2.6381677 0 -2.6254222 + 150 0.03 0.0094342234 -3.8784007 0 -3.8656019 + 200 0.04 0.009207483 -5.1114411 0 -5.0986001 + 250 0.05 0.0089713114 -6.3380611 0 -6.3251904 + 300 0.06 0.0087256079 -7.5587787 0 -7.5458894 + 350 0.07 0.0084715546 -8.7738491 0 -8.7609521 + 400 0.08 0.0082114858 -9.9833855 0 -9.9704932 + 450 0.09 0.0079483242 -11.18751 0 -11.174637 + 500 0.1 0.0076849711 -12.386462 0 -12.37362 + 550 0.11 0.0074240638 -13.580633 0 -13.567832 + 600 0.12 0.0071680697 -14.770519 0 -14.757759 + 650 0.13 0.0069192724 -15.956579 0 -15.943853 + 700 0.14 0.0066793493 -17.139049 0 -17.126343 + 750 0.15 0.0064488035 -18.317803 0 -18.305099 + 800 0.16 0.0062267569 -19.492336 0 -19.479616 + 850 0.17 0.0060112233 -20.661925 0 -20.649176 + 900 0.18 0.005799525 -21.825931 0 -21.813141 + 950 0.19 0.0055886511 -22.98413 0 -22.971297 + 1000 0.2 0.0053757923 -24.136967 0 -24.124095 + 1050 0.21 0.0051592265 -25.285621 0 -25.272717 + 1100 0.22 0.0049391664 -26.431928 0 -26.419004 + 1150 0.23 0.0047179153 -27.578212 0 -27.565281 + 1200 0.24 0.0044991009 -28.727051 0 -28.714128 + 1250 0.25 0.0042864039 -29.880967 0 -29.868062 + 1300 0.26 0.004082448 -31.042054 0 -31.029174 + 1350 0.27 0.0038883012 -32.21165 0 -32.198795 + 1400 0.28 0.0037036599 -33.390159 0 -33.377326 + 1450 0.29 0.0035274817 -34.577121 0 -34.564302 + 1500 0.3 0.0033587208 -35.771483 0 -35.758672 + 1550 0.31 0.0031969501 -36.971996 0 -36.95919 + 1600 0.32 0.0030429079 -38.177601 0 -38.164801 + 1650 0.33 0.0028989801 -39.387757 0 -39.374962 + 1700 0.34 0.0027692022 -40.602666 0 -40.589873 + 1750 0.35 0.0026581401 -41.823341 0 -41.81054 + 1800 0.36 0.002568699 -43.05145 0 -43.038628 + 1850 0.37 0.0025001242 -44.288966 0 -44.276111 + 1900 0.38 0.0024477808 -45.537752 0 -45.52486 + 1950 0.39 0.0024050056 -46.799255 0 -46.786336 + 2000 0.4 0.002365704 -48.074388 0 -48.061466 + 2050 0.41 0.0023260854 -49.363587 0 -49.350695 + 2100 0.42 0.002284834 -50.666866 0 -50.654039 + 2150 0.43 0.0022419771 -51.983781 0 -51.971055 + 2200 0.44 0.0021972518 -53.31336 0 -53.300764 + 2250 0.45 0.0021488333 -54.654121 0 -54.641676 + 2300 0.46 0.0020929494 -56.004207 0 -55.991918 + 2350 0.47 0.0020244612 -57.361586 0 -57.349441 + 2400 0.48 0.0019382262 -58.72428 0 -58.712247 + 2450 0.49 0.001830943 -60.090639 0 -60.078671 + 2500 0.5 0.0017030446 -61.459658 0 -61.447704 + 2550 0.51 0.0015599459 -62.831213 0 -62.819237 + 2600 0.52 0.0014117562 -64.206088 0 -64.194074 + 2650 0.53 0.001270995 -65.5857 0 -65.573657 + 2700 0.54 0.001149046 -66.971565 0 -66.959515 + 2750 0.55 0.0010530098 -68.364663 0 -68.352635 + 2800 0.56 0.00098415418 -69.765002 0 -69.753017 + 2850 0.57 0.00093809402 -71.171532 0 -71.159598 + 2900 0.58 0.00090657031 -72.58234 0 -72.570459 + 2950 0.59 0.00088069773 -73.994931 0 -73.983099 + 3000 0.6 0.00085472731 -75.406507 0 -75.39472 + 3050 0.61 0.00082842975 -76.814319 0 -76.802575 + 3100 0.62 0.00080642669 -78.216074 0 -78.204373 + 3150 0.63 0.00079464 -79.610246 0 -79.59859 + 3200 0.64 0.00079623049 -80.996103 0 -80.984494 + 3250 0.65 0.00080980416 -82.373461 0 -82.361903 + 3300 0.66 0.00083070997 -83.742356 0 -83.730856 + 3350 0.67 0.00085389223 -85.102809 0 -85.091374 + 3400 0.68 0.00087624159 -86.454619 0 -86.44326 + 3450 0.69 0.00089742086 -87.79709 0 -87.785815 + 3500 0.7 0.00091910931 -89.12875 0 -89.117568 + 3550 0.71 0.00094318635 -90.447312 0 -90.436233 + 3600 0.72 0.00096989594 -91.750008 0 -91.739047 + 3650 0.73 0.00099713386 -93.034224 0 -93.023403 + 3700 0.74 0.0010213031 -94.298186 0 -94.287529 + 3750 0.75 0.0010391209 -95.541401 0 -95.530926 + 3800 0.76 0.0010491514 -96.764626 0 -96.754339 + 3850 0.77 0.0010521296 -97.969347 0 -97.959231 + 3900 0.78 0.0010500386 -99.156876 0 -99.146899 + 3950 0.79 0.0010447106 -100.32743 0 -100.31756 + 4000 0.8 0.0010369046 -101.4796 0 -101.46978 + 4050 0.81 0.0010263688 -102.61044 0 -102.60064 + 4100 0.82 0.0010126985 -103.71619 0 -103.70639 + 4150 0.83 0.00099632366 -104.79338 0 -104.78358 + 4200 0.84 0.00097891183 -105.8398 0 -105.82998 + 4250 0.85 0.00096288003 -106.85496 0 -106.84515 + 4300 0.86 0.00095034371 -107.84011 0 -107.83029 + 4350 0.87 0.00094219371 -108.7976 0 -108.78778 + 4400 0.88 0.00093779663 -109.73016 0 -109.72031 + 4450 0.89 0.00093544766 -110.63996 0 -110.63008 + 4500 0.9 0.00093342739 -111.52805 0 -111.51812 + 4550 0.91 0.00093110855 -112.39417 0 -112.38416 + 4600 0.92 0.00092926746 -113.23706 0 -113.22697 + 4650 0.93 0.00092921608 -114.05512 0 -114.04495 + 4700 0.94 0.0009314263 -114.84701 0 -114.83675 + 4750 0.95 0.0009347987 -115.61197 0 -115.60164 + 4800 0.96 0.00093697985 -116.3499 0 -116.33951 + 4850 0.97 0.00093516726 -117.06128 0 -117.05084 + 4900 0.98 0.00092684316 -117.74695 0 -117.73645 + 4950 0.99 0.00091046061 -118.40798 0 -118.39742 + 5000 1 0.00088619727 -119.04554 0 -119.03492 +Loop time of 37.142 on 4 procs for 5000 steps with 5780 atoms + +Performance: 2.326 ns/day, 10.317 hours/ns, 134.619 timesteps/s +98.7% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 6.2804 | 6.3487 | 6.4569 | 2.7 | 17.09 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.15385 | 0.27957 | 0.36215 | 14.6 | 0.75 +Output | 10.573 | 10.784 | 10.994 | 4.8 | 29.03 +Modify | 19.48 | 19.707 | 19.925 | 3.7 | 53.06 +Other | | 0.02255 | | | 0.06 + +Nlocal: 1445 ave 1445 max 1445 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 555 ave 555 max 555 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 23120 ave 23120 max 23120 min +Histogram: 4 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 92480 +Ave neighs/atom = 16 +Neighbor list builds = 0 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:37 diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp index 9b33fac551..3543c4087d 100644 --- a/src/SPIN/fix_precession_spin.cpp +++ b/src/SPIN/fix_precession_spin.cpp @@ -193,22 +193,21 @@ void FixPrecessionSpin::post_force(int vflag) spi[2] = sp[i][2]; fmi[0] = fmi[1] = fmi[2] = 0.0; - if (zeeman_flag) { // compute Zeeman interaction + if (zeeman_flag) { // compute Zeeman interaction compute_zeeman(i,fmi); emag -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - emag *= hbar; } - if (aniso_flag) { // compute magnetic anisotropy + if (aniso_flag) { // compute magnetic anisotropy compute_anisotropy(spi,fmi); emag -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - emag *= hbar; } fm[i][0] += fmi[0]; fm[i][1] += fmi[1]; fm[i][2] += fmi[2]; } + emag *= hbar; } /* ---------------------------------------------------------------------- */