Документ взят из кэша поисковой машины. Адрес оригинального документа : http://cryst.geol.msu.ru/odss/binar.pdf
Дата изменения: Mon Jan 14 11:28:44 2008
Дата индексирования: Mon Oct 1 19:34:32 2012
Кодировка:







ODSS (Ordered-Disordered-Solid-Solution) Ver.1. -binar


..,..,.. urusov@geol.msu.ru

© © .., .., .. , 2006-2007.






1. 2. 3. 4. 5.

3 6 8 13 16

2


1.
, , , . 10 , , .

. , , . , , . . - ab-initio , Cluster Variation Approach. , () , . , , . , ( - ). [ .., .., .. / MgO-CaO c ./ , 2 (387) . 1-5, 2002] [ .., .., .., .. /C 3


. /4- , . , c. 238, 2006]. , , , , , () , . , - , , , ( .

q



A- ) , . , . ( ). (2 ). . . : 1) ; 2) «» , . 3) GULP [The General Utility Lattice Program, J.D. Gale and A.L. Rohl, Mol. Simul., 29, 291 (2003)]; 4) .

4


,

















2 =0 (- ). , , , , , (. . 1). , 2-17-22-27 5-7-10-26 . ( ) () .

. 1. 4 3*3*3 27 . ( ) 48 , , , , . , 32 64
64! = 1,83262·1018, 32!(64 - 32!)

3,81797·1016. , , . , 2%, , 1%. 2% 1% , 5


2 = 2% . FORTRAN GULP.

2.
· · 2 : input, ; ( input). input. Al2O3 - ( , ) ---------------------------------------------------------------Al - / 12 - - ---------------------------------------------------------------O - / 18 - - ---------------------------------------------------------------4 4 1 ­ ( . X,Y,Z) 32 - - 3.7 - ( ) Cr - ---------------------------------------------------------------1 - . . * 0 - -: 1- , 0 - 0 - ..: 0 - , 1- ** 5.0 - -, . GULP *** ---------------------------------------------------------------1 - (0 - , 1 - ) 1 - (0 - , 1 - ) 1 - (0 - , 1 - ) 1 - - (0 - , 1 - ) 1 - (0 - , 1 - ) 1 - (0 - , 1 - ) 1 - (0 - , 1 - ) 1 - GULP (0 - , 1 - ) * - 30-60 . ** - ; ***- -=1, GULP - -; -=0, GULP -

6


Al2O3. conp opti prop cell 4.7602 4.7602 12.9933 90.000000 90.000000 120.0 fractional Al 0.0000000000 0. 0.3522 +1.89 Al 0. 0. 0.6478 +1.89 Al 0. 0. 0.1478 +1.89 Al 0. 0. 0.8522 +1.89 Al 0.3333333333 0.6666666666 0.018900 +1.89 Al 0.3333333333 0.6666666666 0.314500 +1.89 Al 0.3333333333 0.6666666666 0.814500 +1.89 Al 0.3333333333 0.6666666666 0.518900 +1.89 Al 0.6666666666 0.3333333333 0.685500 +1.89 Al 0.6666666666 0.3333333333 0.981100 +1.89 Al 0.6666666666 0.3333333333 0.481100 +1.89 Al 0.6666666666 0.3333333333 0.185500 +1.89 O 0.3061 0. 0.25 -1.26 O 0. 0.3061 0.25 -1.26 O 0.6939 0.6939 0.25 -1.26 O 0.6939 0.0000 0.75 -1.26 O 0.0000 0.6939 0.75 -1.26 O 0.3061 0.3061 0.75 -1.26 O 0.6394 0.6666666666 0.9166666 -1.26 O 0.333333 0.972800 0.9166666 -1.26 O 0.027200 0.360600 0.9166666 -1.26 O 0.027200 0.6666666666 0.4167 -1.26 O 0.3333333333 0.300600 0.4167 -1.26 O 0.639400 0.972800 0.4167 -1.26 O 0.972800 0.3333333333 0.5833 -1.26 O 0.6666666666 0.6394 0.5833 -1.26 O 0.360600 0.0272 0.5833 -1.26 O 0.360600 0.3333 0.0833 -1.26 O 0.6666666666 0.0272 0.0833 -1.26 O 0.972800 0.6394 0.0833 -1.26 space 1 buck Al core O core 3494.019818 0.228 0.0 0.0 12.0 buck O core O core 1437.028831 0.313123 0.048640 0.0 12 buck Al core Al core 0.047457 0.064357 0.0 0.0 12.0 0 0 0 morse Al core O core 6.138115 2.119270 0.684410 0.0 12.0 cutd 2.3 : 10 , . a,b,c,

7


3.
2 : · output, ; · data_for_gulp c GULP. output . (, 140 ) Start time = 16 h. 32 min. Total time limited = 1 min. End time = 16 h. 33 min. ( a,b,c) : 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Al Al Al Al Al Al Al Al Al Al Al Al O O O O O O O O O O O O O O O O O O 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.3333333333 0.3333333333 0.3333333333 0.3333333333 0.6666666666 0.6666666666 0.6666666666 0.6666666666 0.3061000000 0.0000000000 0.6939000000 0.6939000000 0.0000000000 0.3061000000 0.6394000000 0.3333330000 0.0272000000 0.0272000000 0.3333333333 0.6394000000 0.9728000000 0.6666666666 0.3606000000 0.3606000000 0.6666666666 0.9728000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.6666666666 0.6666666666 0.6666666666 0.6666666666 0.3333333333 0.3333333333 0.3333333333 0.3333333333 0.0000000000 0.3061000000 0.6939000000 0.0000000000 0.6939000000 0.3061000000 0.6666666666 0.9728000000 0.3606000000 0.6666666666 0.3006000000 0.9728000000 0.3333333333 0.6394000000 0.0272000000 0.3333000000 0.0272000000 0.6394000000 0.3522000000 0.6478000000 0.1478000000 0.8522000000 0.0189000000 0.3145000000 0.8145000000 0.5189000000 0.6855000000 0.9811000000 0.4811000000 0.1855000000 0.2500000000 0.2500000000 0.2500000000 0.7500000000 0.7500000000 0.7500000000 0.9166666000 0.9166666000 0.9166666000 0.4167000000 0.4167000000 0.4167000000 0.5833000000 0.5833000000 0.5833000000 0.0833000000 0.0833000000 0.0833000000 1.89 1.89 1.89 1.89 1.89 1.89 1.89 1.89 1.89 1.89 1.89 1.89 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26 -1.26

( a,b,c) : 1 Al1 0.000 0.000 0.352 ********************************** 192 Al192 3.667 3.333 0.185 8


1 O1 0.306 0.000 0.250 *********************************** 288 O288 3.973 3.639 0.083 no. X Y Z 1 1 0.0000 0.0000 0.3522 ****************************************** 1296 156 4.6667 -0.6667 -0.8145 ____________________________________________________________________ : = 1 : 0.000 0.000 0.352 no. 1 3 0.000 0.000 0.148 2.66 2 6 0.333 0.667 0.315 2.79 3 8 0.333 0.667 0.519 3.50 4 11 0.667 0.333 0.481 3.22 5 12 0.667 0.333 0.185 3.50 6 47 -0.333 0.333 0.481 3.22 7 48 -0.333 0.333 0.185 3.50 8 150 0.333 -0.333 0.315 2.79 9 152 0.333 -0.333 0.519 3.50 10 186 -0.667 -0.333 0.315 2.79 11 188 -0.667 -0.333 0.519 3.50 12 191 -0.333 -0.667 0.481 3.22 13 192 -0.333 -0.667 0.185 3.50 ____________________________________________________________________ **************************************************************** : = 192 : 3.667 3.333 0.185 no. 1 2 3 4 5 6 7 8 9 10 11 12 13 137 138 181 183 185 186 190 145 147 149 150 1 3 3.333 3.333 3.000 3.000 3.333 3.333 3.667 4.000 4.000 4.333 4.333 4.000 4.000 2.667 2.667 3.000 3.000 3.667 3.667 3.333 3.000 3.000 3.667 3.667 4.000 4.000 0.019 3.50 0.315 3.22 0.352 3.50 0.148 2.79 0.019 3.50 0.315 3.22 -0.019 2.66 0.352 3.50 0.148 2.79 0.019 3.50 0.315 3.22 0.352 3.50 0.148 2.79

___________________________________________________________

9


Total time limited = no.iter Rf

1 min. Q Current spent time (min.)

1 15.978 0.269 0.0013 2 9.677 0.279 0.0013 8 8.283 0.274 0.0013 51 5.862 0.280 0.0016 94 5.287 0.279 0.0016 The estimate of max. iter. = 0.35 mln. 1052 5.215 0.282 0.0044 2585 4.607 0.279 0.0096 8067 4.514 0.284 0.0255 24179 3.657 0.276 0.0740 28146 3.651 0.276 0.0857 28366 3.151 0.276 0.0865 108935 3.121 0.277 0.3245 269504 3.018 0.277 0.7987 ____________________________________________________________________________ 337900 . ( . = 1.0 .) ____________________________________________________________________________ 337899 : = 269504 : 47.84 . Q = 0.277 R-factor = 3.018 % (m - - ) : P (.) P (.) 1000*delta P(m= 0)= 0.072917 0.077887 -4.970 P(m= 1)= 0.203125 0.202505 0.620 P(m= 2)= 0.244792 0.243006 1.786 P(m= 3)= 0.182292 0.178205 4.087 P(m= 4)= 0.093750 0.089108 4.642 P(m= 5)= 0.031250 0.032128 -0.878 P(m= 6)= 0.005208 0.008896 -3.688 P(m= 7)= 0.000000 0.003422 -3.422 P(m= 8)= 0.010417 0.006672 3.745 P(m= 9)= 0.020833 0.017849 2.984 P(m=10)= 0.031250 0.035643 -4.393 P(m=11)= 0.046875 0.048601 -1.726 P(m=12)= 0.041667 0.040501 1.166 P(m=13)= 0.015625 0.015577 0.048 : 1 Cr119 1.67 2.33 0.48 2 Cr131 2.67 2.33 0.48 3 Cr22 1.67 0.33 0.98 4 Cr189 3.67 3.33 0.69 10


5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

Cr97 Cr158 Cr56 Cr166 Cr125 Cr101 Cr9 Cr40 Cr53 Cr44 Cr31 Cr58 Cr1 Cr164 Cr106 Cr163 Cr124 Cr168 Cr55 Cr150 Cr63 Cr171 Cr96 Cr35 Cr57 Cr110 Cr111 Cr33

0.00 1.00 0.33 1.67 2.33 0.33 0.67 3.00 0.33 3.33 2.33 0.67 0.00 1.33 0.67 1.33 2.00 1.67 0.33 0.33 1.00 2.00 3.67 2.67 0.67 1.00 1.00 2.67

2.00 3.00 1.67 3.33 2.67 2.67 0.33 0.00 1.67 0.67 0.67 1.33 0.00 3.67 2.33 3.67 2.00 3.33 1.67 3.67 1.00 3.00 1.33 0.33 1.33 2.00 2.00 0.33

0.35 0.65 0.52 0.98 0.02 0.02 0.69 0.85 0.02 0.52 0.81 0.98 0.35 0.52 0.98 0.81 0.85 0.19 0.81 0.31 0.15 0.15 0.19 0.48 0.69 0.65 0.15 0.69

. no. A/B 1 Cr1 12 Al3 Al6 Al8 Al11 Al12 Al47 Al48 Cr150 Al152 Al186 Al188 Al191 Al192 **************************************************************************** 192 Al192 2 Al137 Al138 Al181 Al183 Al185 Al186 Al190 Al145 Al147 Al149 Cr150 Cr1 Al3 **************************************************************************** . _____________________________________________________________________________ (.) ____________________________________________________________________________ 0.06 59.92 59.98 _____________________________________________________________________________ (): 59.98 . **************************************************************************** : 0 . 0 . 59.98 .

11


data_for_gulp. (, 66 c) conp opti prop phon nofreq cell 19.041 19.041 12.993 90.00 90.00 120.00 fractional _________________________________________________________ Rfact = 4.607 % Q = 0.279 ********************************************************* Rfact = 3.018 % Q = 0.277 Cr1 0.0000000000 0.0000000000 0.3522000000 1.89 ********************************************************* O288 0.9932000000 0.9098500000 0.0833000000 space 1 buck Al core O core 3494.019818 0.228 0.0 0.0 12.0 buck O core O core 1437.028831 0.313123 0.048640 0.0 12 buck Al core Al core 0.047457 0.064357 0.0 0.0 12.0 0 0 0 morse Al core O core 6.138115 2.119270 0.684410 0.0 12.0 -1.26

12


4.
1
Al2O3-Cr2O3 13 4-4-1 1:5 ( 32 192 ) - (P4-3000, Windows XP), ­ 60 . 2 q , 1 0,41 2 0,42 8 0,46 51 0,49 94 0,52 1052 0,70 2585 0,98 8067 2,35 24179 5,41 28146 6,17 28366 6,25 108935 20,09 269504 46,11 763920 125,67 1315735 214,36 1694145 275,90 6416244 1038,77 10068926 1627,47 15771529 2555,15

1 15,978 0,269 2 9,677 0,279 3 8,283 0,274 4 5,862 0,28 5 5,287 0,279 6 5,215 0,282 7 4,607 0,279 8 4,514 0,284 9 3,657 0,276 10 3,651 0,276 11 3,151 0,276 12 3,121 0,277 13 3,018 0,277 14 2,826 0,279 15 2,722 0,276 16 2,504 0,277 17 2,425 0,28 18 2,419 0,277 19 2,232 0,279
0,3 0,25


2,23%

0,2 0,15 0,1 0,05 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13


13


2
aO-MgO 12 4-4-4 1:1 ( 128 256 ) - (P4-3000, Windows XP), ­ 20 . 2 q , 1 0,44 3 0,47 6 0,50 8 0,52 37 0,55 111 0,59 167 0,64 365 0,72 582 0,80 810 0,88 827 0,91 888 0,95 1091 1,03 8640 3,05 562037 149,28 625343 165,94

1 18,525 0,49 2 11,429 0,507 3 10,21 0,512 4 7,223 0,495 5 6,304 0,508 6 6,286 0,507 7 6,075 0,491 8 5,957 0,496 9 5,887 0,5 10 5,054 0,51 11 4,802 0,491 12 4,74 0,499 13 3,719 0,504 14 1,816 0,499 15 1,645 0,497 16 1,572 0,497

0,25 0,2


1,57%

0,15 0,1 0,05 0 0 1 2 3 4 5 6 7 8 9 10 11 12


14


3
TiO2-SnO2 10 4-4-8 1:3 ( 64 256 ) - (P4-3000, Windows XP), ­ 10 . 2 q , 1 0,41 2 0,44 3 0,49 9 0,52 47 0,56 352 0,65 1308 0,86 1401 0,92 2462 1,16 2993 1,30 4222 1,56 4759 1,69 55343 11,66 121878 24,55 149743 29,89 339685 65,31 809076 154,33 863270 164,41 1103966 208,94

1 20,816 0,377 2 18,414 0,373 3 11,306 0,378 4 9,169 0,377 5 5,778 0,378 6 5,24 0,373 7 5,207 0,37 8 5,064 0,37 9 4,671 0,378 10 4,648 0,372 11 4,25 0,38 12 3,15 0,38 13 2,987 0,373 14 2,935 0,378 15 2,878 0,378 16 2,661 0,38 17 2,342 0,375 18 2,232 0,381 19 1,386 0,375

0,25 0,2 0,15 0,1 0,05 0 0 1 2 3 4 5 6 7 8 9 10
1,39%

15


5.
program main use commonmod ! ******************************************************** call open_read ! N_rndm_all = m_X * m_Y * m_Z * Num_atomov_in_group(1) - - . 1 ! ******************************************************** ! : call XYZ0_in_XYZ Name_atom0 = Name_atom ! ! ! ! ! ! ! ! ! ! ! ! : N_all - - XYZ(N_all,*) - 1- : k_work_rndm_all work_XYZ_rndm(k_work_rndm_all,3) - 1- index_XYZ_rndm(k_work_rndm_all) - Number_atom(k_work_rndm_all,40) - J- , . J- ******************************************************** Name_atom0 = Name_atom

! ******************************************************** ! if(output_1==1)call output1 ! ******************************************************** ! ! N_rad - .. ( XYZ0_in_XYZ) call calculation_P_theor call cpu_time(time_coord) ! ******************************************************** write(2,'(///5x,"___________________________________________________________ "//)') write(2,'(//7x,"Total time limited = ",5x,i6," min.")')int(end_time_in_min) write(*,'(/4x,"no.iter",15x,"Rf",17x,"Q ",6x,"Current spent time (min.)"/)') write(2,'(//4x,"no.iter",15x,"Rf",17x,"Q ",6x,"Current spent time (min.)"/)') ! 1000 do k_iter=1,1000

16


! write(2,'(5x,"_____________________________________________________________ _________________________________________________________________")') ! write(2,'(//5x," . N_rndm 1- :")') call rndm_from_N_rndm_all ! Name_atom - Ca,Mg; Mg - N_rndm ! work_name_XYZ_rndm - Ca,Mg ! call Rfactor write(*,*)k_iter Name_atom = Name_atom0 ! ! write(2,'(/5x," = ",i6,4x,"Q() = ",F6.3)')k,S_Q write(2,'(5x,"R-factor for P(theor),P(exp) = ",F7.3," %")')R_f end do ! k_iter=1000 call cpu_time(finish_time) iter_estimate = int(1000*end_time_in_min*60/(finish_time-time_coord)) if(iter_estimate < 99999)then write(*,'(/5x,"The estimate of max. iter. = ",i6/)')iter_estimate write(2,'(/5x,"The estimate of max. iter. = ",i6/)')iter_estimate else write(*,'(/5x,"The estimate of max. iter. =",f10.2," mln."/)')iter_estimate/1000000. write(2,'(/5x,"The estimate of max. iter. =",f10.2," mln."/)')iter_estimate/1000000. end if if(iter_estimate < 1000000)then write(*,'(/5x,"The estimate of max. iter. =",i6," mln."/)')int(iter_estimate/1000000) write(2,'(/5x,"The estimate of max. iter. =",i6," mln."/)')int(iter_estimate/1000000) end if k_iter= 1000 do while (.true.) k_iter=k_iter+1 ! write(2,'(5x,"_____________________________________________________________ _________________________________________________________________")') ! write(2,'(//5x," . P% 1- :")') call rndm_from_N_rndm_all call Rfactor 17

! ! ! !


Name_atom = Name_atom0 ! ! write(2,'(/5x," = ",i6,4x,"Q() = ",F6.3)')k,S_Q write(2,'(5x,"R-factor for P(theor),P(exp) = ",F7.3," %")')R_f

call cpu_time(finish_time) if((finish_time-start_time)/60. >= end_time_in_min)then write(2,'(//5x,"____________________________________________________________ __________________________________________________________________")') write(2,'(/5x,"",i10,3x," ."/)')k_iter write(2,'(5x,"( . = ",f8.1," .)")')end_time_in_min write(2,'(/5x,"____________________________________________________________ __________________________________________________________________")') ! write(*,'(//5x,"____________________________________________________________ __________________")') ! write(*,'(/5x,"",i10,3x," ."/)')k_iter ! write(*,'(5x,"( . = ",f8.1," .)")')end_time_in_min ! write(*,'(//5x,"____________________________________________________________ __________________")') exit end if end do ! do while (.true.) ! ************** ****************************************** write(2,'(///5x," ",i10,3x," :"/)')k_iter-1 write(2,'(//5x," = ",i10/)')k_iter_good ! ________________________________________________________ time = time_good-time_coord hours = int(time/3600.) minutes =int((time-hours*3600)/60.) seconds = time - hours*3600 - minutes*60 if(hours > 0)then write(2,'(5x," :",1x,i2," .",2x,i2," .",2x,f6.2," .")') & int(hours),int(minutes),seconds else if(minutes > 0)then write(2,'(5x," :",1x,i2," .",2x,f6.2," .")') & int(minutes),seconds else write(2,'(5x," :",1x,f6.2," .")')seconds end if ! ________________________________________________________ write(2,'(//5x,"Q = ",f6.3)')S_Q_min 18


! write(2,'(//5x," . . =",f10.6/)')gistogr_min write(2,'(/5x,"R-factor = ",F7.3," %")')R_f_min_sqrt ! R_f = sqrt(R_f)*coeff_Rf

write(2,'(//5x," (m - - ) :"/)') write(2,'(13x,"P (.) P (.) 1000*delta")') do i=1,N_rad+1 write(2,'(5x,"P(m=",i2,")= ",2(f9.6,2x),2x,f12.3)')i1,P_real0(i),P_theor(i),1000*(P_real0(i)-P_theor(i)) end do write(2,'(//5x," :")') do k=1,N_rndm write(2,'(/5x,i6,3x,A7,2x,3(f6.2,1x))')k,Name_atom_rndm_Q_min(k),(XYZ_rndm_Q_mi n(k,j),j=1,3) end do call cpu_time(time_iter) ! 0. : 1,2,3,4,....,N_rad ! 1. P_real0(i) P_theor(i) ! 2. (i-1) (A-B,B-A) ! . (A/B) c (B/A) - (i-1) ! 2.1. Q R-factor . R-factor ! , . ( ) ! , R-factor ! 3. ! write(*,*)Bad_Links_min(9) ! stop write(2,'(///5x," ."//)') write(2,'(///8x,"no. ! ! ! ! ! ! ! ! ! new: A/B "//)')

do k=1,N_rndm_all if(Bad_Links_min(k)==0)then write(2,'(/5x,i6,3x,i4))')k,Bad_Links_min(k) else write(2,'(/5x,i6,6x,A7,2x,i2,4x,20(2x,A7))')k,Name_atom_min(k),Bad_Links_min(k),& (Name_atom_min(Number_atom(k,l)),l=1,N_rad) end if end do do k=1,N_rndm_all write(2,'(/5x,i6,6x,A7,2x,i2,4x,20(2x,A7))')k,Name_atom_min(k),Bad_Links_min(k),& (Name_atom_min(Number_atom(k,l)),l=1,N_rad) end do

! GULP

19


do i=1,10 read(3,'(A60)')text60 write(4,'(A60)')text60 end do ! ******************************************************** !_____________________________________________________________________________ ___________________________________________ write(2,'(//5x,"************************************************************ *********************"/)') write(2,'(///5x," ."/)') write(2,'(/5x,"____________________________________________________________ _________________")') write(2,'(//5x," (.) "/)') write(2,'(/5x,"____________________________________________________________ _________________")') write(2,'(//5x," ",f12.2/)')time_coord start_time1 write(2,'(/5x," ",f12.2/)')time_iter - time_coord write(2,'(//5x," ",f12.2/)')time_iter - start_time1 write(2,'(5x,"_____________________________________________________________ ________________")') time = time_iter - start_time1 hours = int(time/3600.) minutes =int(time/60 -hours*60 + 0.00001) seconds = time - hours*3600 - minutes*60 if(hours > 0)then write(2,'(///5x," (//):",1x,i2," .",2x,i2," .",2x,f6.2," .")') & int(hours),int(minutes),seconds else if(minutes > 0)then write(2,'(///5x," (/):",1x,i2," .",2x,f6.2," .")') & int(minutes),seconds else write(2,'(///5x," ():",1x,f6.2," .")')seconds end if

write(2,'(//5x,"************************************************************ ****************************************************"/)') call cpu_time(finish_time) 20


time = finish_time-start_time1 hours = int(time/3600.) minutes =int((time-hours*3600)/60.) seconds = time - hours*3600 - minutes*60 write(2,'(//5x," :",1x,i2," .",2x,i2," .",2x,f6.2," .")') & int(hours),int(minutes),seconds call close_stop end ! subroutine open_read use commonmod S_Q_min = 100. ! write(2,*)P_theor open(1,file='input.txt') open(2,file='output.txt') open(4,file='data_for_gulp.txt') write(2,*)P_theor stop read(1,*)name_file,text read(1,*)N_group,text N_group - /

! !

!

do i=1,N_group read(1,*)Name_group(i),text read(1,*)Num_atomov_in_group(i),text end do ! Name_group() - read(1,*)m_X,m_Y,m_Z,text m_X,m_Y - read(1,*)N_rndm,text ! N_rndm - ! ! write(*,*)m_X,m_Y,m_Z,N_rndm

if(N_rndm > Num_atomov_in_group(1)*m_X*m_Y*m_Z)then write(*,'(//2x,"ERROR: N_rndm = ",i4," > Num_atomov_in_group(1)*m_X*m_Y*m_Z = ",i4///)')& N_rndm,Num_atomov_in_group(1)*m_X*m_Y*m_Z write(2,'(//2x,"ERROR: N_rndm = ",i4," > Num_atomov_in_group(1)*m_X*m_Y*m_Z = ",i4)')& N_rndm,Num_atomov_in_group(1)*m_X*m_Y*m_Z stop end if if(N_rndm < 1)then 21


write(*,'(//2x,"ERROR: N_rndm = ",i4," < 1"///)')N_rndm write(2,'(//2x,"ERROR: N_rndm = ",i4," < 1"///)')N_rndm stop end if ! N_rndm_all = - ( ) . N_rndm_all = m_X * m_Y * m_Z * Num_atomov_in_group(1) ! write(*,*)N_rndm_all read(1,*)Radius,text read(1,*)name_remont,text read(1,*)iter,text read(1,*) output_1,text read(1,*) output_2,text read(1,*) end_time_in_min,text read(1,*) criteriy_for_Rf,text read(1,*) criteriy_for_rndm,text

!

! : call cpu_time(start_time1) call gettim(ihours,iminutes,iseconds,iseconds100) write(*,'(//7x,"Start time = ",i2," h. ",i2," min.")')ihours,iminutes write(*,'(//7x,"Total time limited = ",5x,i6," min.")')int(end_time_in_min) write(2,'(//7x,"Start time = ",i2," h. ",i2," min.")')ihours,iminutes write(2,'(//7x,"Total time limited = ",5x,i6," min.")')int(end_time_in_min) k = int((iminutes+int(end_time_in_min))/60.) ihours = mod(ihours + k,24) iminutes = iminutes+int(end_time_in_min) - 60*k write(*,'(//7x,"End time = ",i2," h. ",i2," min."//)')ihours,iminutes write(2,'(//7x,"End time = ",i2," h. ",i2," min."////)')ihours,iminutes ! ******************************************************** if(criteriy_for_Rf==0)R_f_min = 1.e+10 if(criteriy_for_Rf==1)R_f_min = 0. open(3,file=trim(name_file)//'.txt') read(3,'(A60)')text60 write(4,'(A60)')text60 read(3,'(A60)')text60 write(4,'(A60)')text60 read(3,*)a,b,c,alpha,beta,gamma write(4,'(2x,3(f6.3,2x),3(f6.2,2x)/)') & a*m_X,b*m_Y,c*m_Z,alpha,beta,gamma read(3,'(A60)')text60 write(4,'(A60)')text60

22


! ******************************************************** a2=a*a b2=b*b c2=c*c ab=2*a*b*cos(gamma*PI180) ac=2*a*c*cos(beta*PI180) bc=2*b*c*cos(alpha*PI180) Radius2 = Radius*Radius ! ******************************************************** ! write(2,'(/2x," :"/)')

write(2,'(///2x," ( a,b,c) :"/)') k=0 N_all_atomov = 0 do i=1,N_group no = 0 N_all_atomov = N_all_atomov + Num_atomov_in_group(i) Name_group_i = Name_group(i) do j=1,Num_atomov_in_group(i) no = no + 1 k=k+1 read(3,*)text2,(XYZ_0(k,L),L=1,3),dummy if(i==1)dummy1=dummy if(i==2)dummy2=dummy write(2,'(2x,i2,2x,a2,6x,3(f12.10,2x),2x,f6.2)')no,text2,(XYZ_0(k,L),L=1,3),dummy XYZ_0(k,1)=m_X*XYZ_0(k,1) XYZ_0(k,2)=m_Y*XYZ_0(k,2) XYZ_0(k,3)=m_Z*XYZ_0(k,3) end do ! j write(2,'(/)') end do ! i

!

! ! !

! write(2,'(///2x," ( a,b,c) :"/)') ! ! ! ! ! ! ! ! ! ! ! k=0 do i=1,N_group no = 0 Name_group_i = Name_group(i) do j=1,Num_atomov_in_group(i) no = no + 1 k=k+1 write(2,'(2x,i2,2x,a2,6x,3(f8.6,2x))')no,Name_group_i,(XYZ_0(k,L),L=1,3) end do ! j write(2,'(/)') end do ! i

23


write(2,'(//2x,3(3x,i2),A25/)')m_X,m_Y,m_Z," X,Y,Z" write(2,'(/2x,3(f6.3,2x),3(f6.2,2x),A40)') & a,b,c,alpha,beta,gamma," a,b,c,alpha,beta,gamma" write(2,'(/2x,3(f6.3,2x),3(f6.2,2x),A40//)') & a*m_X,b*m_Y,c*m_Z,alpha,beta,gamma," a*m_X,b*m_Y,c*m_Z,alpha,beta,gamma" return end subroutine XYZ0_in_XYZ use commonmod ! ( XYZ ) ! m_group - XYZ_0 m_group = 0

N_all = 0 write(2,'(//2x," ( a,b,c) :"/)') do m=1,N_group no = 0 k_name = 0 ( ) Name_group_m = Name_group(m) ( )

! ! ! !

do k=1,m_Z do j=1,m_Y do i=1,m_X do j_group=1,Num_atomov_in_group(m) ! N_all = N_all + 1 no = no + 1 XYZ(N_all,1) = XYZ_0(m_group + j_group,1) + dble(i - 1) XYZ(N_all,2) = XYZ_0(m_group + j_group,2) + dble(j - 1) XYZ(N_all,3) = XYZ_0(m_group + j_group,3) + dble(k - 1) ! write(2,'(5x,i6,3x,3(f5.3,2x))')L,(XYZ_0(L,j),j=1,3) ! 1- ! if(m==1)then k_name = k_name + 1 write(ch_k_name,'(i5)')k_name Name_atom(N_all)=trim(Name_group_m)//trim(adjustl(ch_k_name)) ! : ! write(2,'(5x,i6,3x,A7,2x,3(f5.3,2x))')N_all,Name_atom(N_all), & ! XYZ(N_all,1),XYZ(N_all,2),XYZ(N_all,3) 24


!

end if write(2,'(5x,i6,3x,A7,2x,3(f6.3,2x))')no,Name_atom(N_all), & XYZ(N_all,1),XYZ(N_all,2),XYZ(N_all,3) end do ! j_group end do ! i end do ! j end do ! k m_group = m_group + Num_atomov_in_group(m) end do ! m

!

stop

! : ! N_all - - ! XYZ(N_all,*) - ! Name_atom(N_all) - ! N_rndm_all = m_X * m_Y * m_Z * Num_atomov_in_group(1) - - . 1 ! ! write(2,*)N_all,N_rndm_all," - N_all,N_rndm_all" stop

! ***************************************************************************** *** ! work_XYZ_rndm(max_numb_work_points,3) - 1- ! num_sorta = 1 Name_group_m = Name_group(num_sorta ) m = Num_atomov_in_group(num_sorta) ! : do k=1,N_rndm_all work_XYZ_rndm(k,1) work_XYZ_rndm(k,2) work_XYZ_rndm(k,3) index_XYZ_rndm(k) = end do ! k N = N_rndm_all ! k,j,i : ! k: ! m*m_X*m_Y ! - , J- , I- .: ! m*m_X*m_Y*(-1) + m*m_X*(j-1) + m*(i - 1) 25

= XYZ(k,1) = XYZ(k,2) = XYZ(k,3) k


! ___________________________________________________________ ! : k=m_Z, j = 1,m_Y,i=1,m_X 5-6-7-8 ! 1-2-3-4 m_m_X_m_Y = m*m_X*m_Y k2 = m_Z j2 = m_Y i2 = m_X do k = k2,k2 do j = 1,j2 do i = 1,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(i - 1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(j - 1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) - dble(1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k ___________________________________________________________ : k=m_Z j = 1,m_Y i=1 5 - 8 2-3 k2 = m_Z j2 = m_Y i2 = 1 do k = k2,k2 do j = 1,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(m_X) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(j - 1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) - dble(1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j 26

! !

! ! ! !

! !


end do ! k ! ___________________________________________________________ ! : K=1,m_Z J = 1,m_Y, I=1 ! ! 1-4-8-5 2-3-7-6 k2 = m_Z j2 = m_Y i2 = 1 do k = 1,k2 do j = 1,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(m_X) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(j - 1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(k - 1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k ___________________________________________________________ : k=1 j = 1,m_Y i=1 1 - 4 6-7 k2 = 1 j2 = m_Y i2 = 1 do k = k2,k2 do j = 1,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(m_X) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(j - 1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(m_Z) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i 27

! !

! ! ! !

! !


end do ! j end do ! k ! ___________________________________________________________

! : K=1 J = 1,m_Y, I=1,m_X ! ! 1-2-3-4 5-6-7-8 k2 = 1 j2 = m_Y i2 = m_X do k = k2,k2 do j = 1,j2 do i = 1,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(i - 1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(j - 1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(m_Z) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k ___________________________________________________________ : k=1 j = 1,m_Y i=m_X 2 - 3 5-8 k2 = 1 j2 = m_Y i2 = m_X do k = k2,k2 do j = 1,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) - dble(1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(j - 1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(m_Z) 28

! !

! ! ! !


! !

write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! ___________________________________________________________ ! c : K=1,m_Z J = 1,m_Y, I=m_X ! ! 2-3-7-6 1-4-8-5 k2 = m_Z j2 = m_Y i2 = m_X do k = 1,k2 do j = 1,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) - dble(1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(j - 1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(k - 1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! !

! ___________________________________________________________ ! ! ! ! ___________________________________________________________ : k=m_Z j = 1,m_Y i=m_X 6 - 7 1-4 k2 = m_Z j2 = m_Y i2 = m_X do k = k2,k2 do j = 1,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m 29


! !

N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) - dble(1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(j - 1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) - dble(1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! ___________________________________________________________ ! c : K=1,m_Z J = m_Y I=1,m_X ! ! 4-3-7-8 1-2-6-5 k2 = m_Z j2 = m_Y i2 = m_X do k = 1,k2 do j = j2,j2 do i = 1,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(i - 1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) - dble(1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(k - 1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! !

! ___________________________________________________________ ! c : K=1,m_Z J = 1 I=1,m_X ! ! 1-2-6-5 4-3-7-8 k2 = m_Z j2 = 1 i2 = m_X do k = 1,k2 30


! !

do j = j2,j2 do i = 1,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(i - 1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(m_Y) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(k - 1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! ___________________________________________________________ ! : k=1 j=1 i=1,m_X ! ! 1 - 2 8-7 k2 = 1 j2 = 1 i2 = m_X do k = k2,k2 do j = j2,j2 do i = 1,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(i - 1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(m_Y) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(m_Z) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k ___________________________________________________________ : k=1 j=m_Y i=1,m_X 4 - 3 5-6 k2 = 1 j2 = m_Y i2 = m_X do k = k2,k2 31

! !

! ! ! !


! !

do j = j2,j2 do i = 1,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(i - 1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) - dble(1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(m_Z) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! ___________________________________________________________ ! : k=m_Z j=m_Y i=1,m_X ! ! 8 - 7 1-2 k2 = m_Z j2 = m_Y i2 = m_X do k = k2,k2 do j = j2,j2 do i = 1,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(i - 1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) - dble(1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) - dble(1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! !

! ___________________________________________________________ ! : k=m_Z j=1 i=1,m_X ! ! 5 - 6 4-3 k2 = m_Z j2 = 1 i2 = m_X 32


! !

do k = k2,k2 do j = j2,j2 do i = 1,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(i - 1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(m_Y) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) - dble(1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! ___________________________________________________________ ! : k=1,m_Z j=1 i=m_X ! ! 2 - 6 4-8 k2 = m_Z j2 = 1 i2 = m_X do k = 1,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) - dble(1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(m_Y) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(k - 1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! !

! ___________________________________________________________ ! : k=1,m_Z j=m_Y i=m_X ! ! 3 - 7 1-5 33


k2 = m_Z j2 = m_Y i2 = m_X do k = 1,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) - dble(1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) - dble(1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(k - 1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! !

! ___________________________________________________________ ! : k=1,m_Z j=m_Y i=1 ! ! 4 - 8 2-6 k2 = m_Z j2 = m_Y i2 = 1 do k = 1,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(m_X) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) - dble(1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(k - 1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! !

! ___________________________________________________________

34


! : k=1,m_Z j=1 i=1 ! ! 1 - 5 3-7 k2 = m_Z j2 = 1 i2 = 1 do k = 1,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(m_X) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(m_Y) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(k - 1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! !

! ___________________________________________________________ ! - ( 8-, ): ! 1- ! : k=1 j=1 i=1 ! k2 = 1 j2 = 1 i2 = 1 do k = k2,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(m_X) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(m_Y) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(m_Z) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j 35

! !


end do ! k ! ___________________________________________________________ ! 2- ! : k=1 j=1 i=m_X ! k2 = 1 j2 = 1 i2 = m_X do k = k2,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) - dble(1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(m_Y) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(m_Z) ! write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & ! XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k ! ___________________________________________________________ ! 3- ! : k=1 j=m_Y i=m_X ! k2 = 1 j2 = m_Y i2 = m_X do k = k2,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) - dble(1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) - dble(1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(m_Z) ! write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & ! XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k ! ___________________________________________________________ 36


! 4- ! : k=1 j=m_Y i=1 ! k2 = 1 j2 = m_Y i2 = 1 do k = k2,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(m_X) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) - dble(1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) + dble(m_Z) ! write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & ! XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k ! ___________________________________________________________ ! 5- ! : k=m_Z j=1 i=1 ! k2 = m_Z j2 = 1 i2 = 1 do k = k2,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(m_X) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(m_Y) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) - dble(1) ! write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & ! XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k ! ___________________________________________________________ ! 6- 37


! : k=m_Z j=1 i=m_X ! k2 = m_Z j2 = 1 i2 = m_X do k = k2,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) - dble(1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) + dble(m_Y) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) - dble(1) write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k

! !

! 7- ! : k=m_Z j=m_Y i=m_X ! k2 = m_Z j2 = m_Y i2 = m_X do k = k2,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) - dble(1) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) - dble(1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) - dble(1) ! write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & ! XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k ! ___________________________________________________________ ! 8- ! : k=m_Z j=m_Y i=1 38


! k2 = m_Z j2 = m_Y i2 = 1 do k = k2,k2 do j = j2,j2 do i = i2,i2 L = m_m_X_m_Y*(k-1) + m*m_X*(j-1) + m*(i - 1) do j_group=1,m N=N+1 index_XYZ_rndm(N) = L + j_group work_XYZ_rndm(N,1) = XYZ_0(j_group,1) + dble(m_X) work_XYZ_rndm(N,2) = XYZ_0(j_group,2) - dble(1) work_XYZ_rndm(N,3) = XYZ_0(j_group,3) - dble(1) ! write(2,'(5x,i6,3x,A7,2x,2(f5.2,2x))')N_gran_points,Name_atom_gran(N_gran_points), & ! XYZ_gran(N_gran_points,1),XYZ_gran(N_gran_points,2) end do ! j_group end do ! i end do ! j end do ! k ! ___________________________________________________________ ! 1- k_work_rndm_all = N write(2,'(///2x," 1- :"/)') write(2,'(/2x,"no. X

Y

Z"/)')

! : do j=1,k_work_rndm_all write(2,'(2x,i5,16x,i5,5x,3(f7.4,2x))')j,index_XYZ_rndm(j),& work_XYZ_rndm(j,1),work_XYZ_rndm(j,2),work_XYZ_rndm(j,3) end do ! ! ! ! ! ! : work_XYZ_rndm(max_numb_work_points,3) - 1- work_name_XYZ_rndm(max_numb_work_points) - index_XYZ_rndm(max_numb_work_points) - index_XYZ_rndm - XYZ_rndm

! XYZ_rndm(max_XYZ_rndm,2) - . 1- ! work_XYZ_rndm(max_numb_work_points,3) - 1- ! ! work_name_XYZ_rndm(max_numb_work_points) - ! index_XYZ_rndm(max_numb_work_points) - ! ! . 1- ( N_rndm_all) ! ( N_rndm_all ) Radius 39


! 12- - 3-x ! 8 - 2-x ! 8- : ! : ! 2. L 1- 1 N_rndm_all ( L0 ) ! write(2,'(///1x," "//)') -

! L0 1- 1 N_rndm_all ( ) do L0=1,N_rndm_all ! 1. . p0=XYZ(L0,1) q0=XYZ(L0,2) r0=XYZ(L0,3) p0=XYZ(L0,1) q0=XYZ(L0,2) r0=XYZ(L0,3) write(2,'(//2x,"____________________________________________________________ ________")') write(2,'(//2x," :"/)') write(2,'(2x," = ",i4,4x,": ",3(f6.3,2x)/)')L0,p0,q0,r0 ! N_rad - - N_rad = 0 ! N_rad .. - ( 12 ( 8 2- ) ! L 1- 1 k_work_rndm_all ( ) write(2,'(2x,"no. "/)')

!

do L=1,k_work_rndm_all if(L==L0)cycle k=index_XYZ_rndm(L) p=work_XYZ_rndm(L,1) q=work_XYZ_rndm(L,2) r=work_XYZ_rndm(L,3)

pp0=p-p0 qq0=q-q0 rr0=r-r0 ! : if((abs(pp0) > Radius .or. abs(qq0) > Radius ) .or. abs(rr0) > Radius )cycle pp02=pp0*pp0 qq02=qq0*qq0 rr02=rr0*rr0

40


R0i2=pp02*a2+qq02*b2+rr02*c2+pp0*qq0*ab+pp0*rr0*ac+qq0*rr0*bc if(R0i2 > Radius2)cycle N_rad = N_rad + 1 Number_atom(L0,N_rad) = index_XYZ_rndm(L) write(2,'(5x,i3,":",i4,4x,3(f6.3,2x),2x,f5.2)')N_rad,index_XYZ_rndm(L),p,q,r,sqrt(R0i2) write(2,'(2x,i3,12x,i4,12x,3(f6.3,2x),2x,f5.2)')N_rad,index_XYZ_rndm(L),p,q,r,sqrt(R0i2

! )

end do ! L ! : ! write(2,'(1x,i6,5x,i2," :",2x,20(i4,2x)//)')L0,N_rad,(Number_atom(L0,k),k=1,N_rad) end do ! L0 ! stop return end ! ********* ( N_rndm_all ) Radius ! ********* 12- - 3-x ! 8- : ! : ! L0 1- 1 N_rndm_all ! 1. . p0=XYZ(L0,1) q0=XYZ(L0,2) ! 2. L 1- 1 N_rndm_all ( L0 ) ! 2.1. ! : ! subroutine Rfactor use commonmod S_Q = 0. P_real = 0. do L0=1,N_rndm_all Name_atom_L0 = Name_atom(L0)(1:2) ! Name_atom(L0)(1:2) - Ca/Mg ! if(output_2==1)then ! write(2,'(///5x,"*********************************************************** ***********************")') ! ! ! ! write(2,'(//5x," No. Name X Y Z - ( ) "/)')

write(2,'(/5x,i6,3x,A7,2x,3(f5.3,2x))')L0,Name_atom(L0),(XYZ(L0,j),j=1,3) write(2,'(10x,"__________________________________")') end if RO - ( )

! write(2,'(///5x," No. Name X Y Z ; "/)') n_bad = 0

41


! n_bad .. - A/B, B/A ! N_rad0 = 0 ! N_rad .. - ( 12 ( 8 2- ) do k=1,N_rad L = Number_atom(L0,k) ! write(*,*)'k,L=',k,L if(Name_atom_L0/=Name_atom(L)(1:2))n_bad = n_bad + 1 ! name_sphera(L0,N_rad) - ! name_sphera(L0,k) = Name_atom(L) ! if(output_2==1)write(2,'(//5x,i3,2x,A7,2(f6.2,2x),2x,f8.3)')N_rad0,Name_atom(L),p,q,sqr t(R0i2) ! write(2,'(//5x,i3,2x,A7,3(f6.2,2x),2x,f8.3)')N_rad,Name_atom(L),p,q,s,sqrt(R0i2) end do ! k ! write(*,*)N_rndm_all,N_rad,L0,n_bad Bad_Links(L0) = n_bad Q = real(n_bad)/N_rad S_Q = S_Q + Q i=n_bad+1 ! write(*,*)i P_real(i) = P_real(i) + 1 if(output_2==1)&

!

! : ! write(2,'(//5x,i5,2x,A7,"("i1,"-",i1,")",2x,"Q=",F6.3,3x,20(A7,2x),2x,f8.3)')& ! L0,Name_atom(L0),N_rad-n_bad,n_bad,Q,(name_sphera(L0,i),i=1,N_rad) end do ! L0 ! ************************************************************** ! ! ! ! S_Q = S_Q/N_rndm_all . P_real = P_real/N_rndm_all p=0. R_f = 0. do i=1,N_rad + 1 write(2,'(5x,"P(m=",i1,")= ",2(f7.4,2x))')i-1,P_real(i),P_theor(i) p=p+P_real(i) R_f = R_f + (P_real(i) - P_theor(i))**2 end do ! i

! : 42


! !

write(2,'(5x,": . P=",f6.3)')p write(*,'(5x,": . P=",f6.3)')p

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! R_f = sqrt(R_f)*coeff_Rf ! sqrt *coeff_Rf ! ififififififififififififififififififififififififififififififi if((R_f_min > R_f .and. criteriy_for_Rf == 0) .or. & (R_f_min < R_f .and. criteriy_for_Rf == 1) )then k_iter_good = k_iter call cpu_time(time_good) R_f_min = R_f S_Q_min = S_Q ! : XYZ_rndm_Q_min = XYZ_rndm ! ???????????????????????????????????????????????????????????????????? ! do i=1,N_rndm ! do j=1,2 XYZ_rndm_Q_min = XYZ_rndm ! end do Name_atom_rndm_Q_min = Name_atom_rndm Name_atom_min = Name_atom ! end do ! ???????????????????????????????????????????????????????????????????? Bad_Links_min = Bad_Links ! P_real0 = P_real call cpu_time(finish_time) time = (finish_time-start_time)/60. R_f_min_sqrt = sqrt(R_f_min)*coeff_Rf write(*,'(/1x,i10,15x,f7.3,9x,f7.3,10x,f10.4)')k_iter,R_f_min_sqrt,S_Q_min,time write(2,'(1x,i10,15x,f7.3,9x,f7.3,10x,f10.4)')k_iter,R_f_min_sqrt,S_Q_min,time call output_for_gulp

end if ! end if return end

! . 1- . - N_rndm ! ! 43


subroutine rndm_from_N_rndm_all use commonmod ! write(2,'(///5x,"*********************************************************** *******")') ! ! ! ! write(2,'(//5x,"No. Name(old) Name(new) ISEED = 2147483646/2 call GSU1R(ISEED,N_rndm,R_rndm) write(2,*)(R_rndm(i),i=1,N_rndm) if(criteriy_for_rndm == 1)call random_seed() i=1 do while (i <= N_rndm) call random_number(rndm) k = int(rndm*N_rndm_all + 0.5) if(k==0)k=1 if(k > N_rndm_all)k=N_rndm_all repeat = .false. if(i > 1)then do j=1,i-1 if(k==k_repeat(j))then repeat = .true. exit end if end do ! j end if if(repeat)cycle ! (Mg): ! k - . Name_atom(k) = name_remont//Name_atom(k)(3:len_trim(Name_atom(k))) ! write(2,'(5x,i6,2x,A7,2x,A7,3x,2(f5.3,2x))')i,Name_atom0(k),Name_atom_rndm(i),(XYZ _rndm(i,j),j=1,2) k_repeat(i)=k i=i+1 end do ! i ! : ! write(2,'(2x,i3,3x,A7)')(k,Name_atom(k),k=1,N_rndm_all) ! work_name_XYZ_rndm do k=1,k_work_rndm_all work_name_XYZ_rndm(k) = Name_atom(index_XYZ_rndm(k)) 44 X Y - ( )"//)')


! : ! write(2,'(2x,i3,3x,A7,3(2x,f6.1))')k,work_name_XYZ_rndm(k),work_XYZ_rndm(k,1),w ork_XYZ_rndm(k,2),work_XYZ_rndm(k,3) end do ! stop return end subroutine output_for_gulp use commonmod write(4,'("_________________________________________________________")') write(4,'(1/x,"Rfact = ",2x,f7.3," %",5x,"Q = ",2x,f7.3/)')R_f_min_sqrt,S_Q_min ! : do k=1,N_rndm_all x_coord = dble(work_XYZ_rndm(k,1)/m_X) y_coord = dble(work_XYZ_rndm(k,2)/m_Y) z_coord = dble(work_XYZ_rndm(k,3)/m_Z) write(4,'(1x,A7,3(2x,f13.10),4x,f6.2)')Name_atom_min(k),x_coord,y_coord,z_coord,dum my1 end do ! : m=2 Name_group_m = Name_group(m) do k=N_rndm_all+1,N_all write(ch_k_name,'(i5)')k-N_rndm_all x_coord = dble(XYZ(k,1)/m_X) y_coord = dble(XYZ(k,2)/m_Y) z_coord = dble(XYZ(k,3)/m_Z) write(4,'(1x,A7,3(2x,f13.10),4x,f6.2)')trim(Name_group_m)//adjustl(ch_k_name),& x_coord,y_coord,z_coord,dummy2 end do return end

subroutine close_stop close(1) close(2) close(3) close(4) stop return end

45


SUBROUTINE GSU1R(ISEED,N,R) DIMENSION R(1) INTEGER ISEED,N,I,D2P32M REAL R DOUBLE PRECISION Z,D2P31M,D2PN31,DMOD,DFLOAT DATA D2P31M/2147483647.D0/,D2PN31/4.656612873077393D-10/,D2P32M/16807/ Z=DFLOAT(ISEED) DO I=1,N Z=DMOD(D2P32M*Z,D2P31M) R(I)=Z*D2PN31 end do ISEED=Z RETURN END ! ******************************************************** ! subroutine calculation_C_m_l subroutine calculation_P_theor integer C_m_l(100),C(100) integer N_all,N_rndm_all,N_rad integer N_group,m_X,m_Y,m_Z,N_rndm,iter real gistogr_min,P_real,P_real0,P_theor common / R_factor / R_f,R_f_min,R_f_min_sqrt,coeff_Rf,P_real(100),P_real0(100),P_theor(100) common / N_all / N_all,N_rndm_all,N_rad common / input / N_group,m_X,m_Y,m_Z,N_rndm,Radius,iter,end_time_in_min,finish_time,start_time ! N_rad - - !!!! N_rad 3- ! P_theor(1) = P(k=0) ! real :: gistogr_theor(9) = (/1.,8.,28.,56.,70.,56.,28.,8.,1./)

! : p - , q - p = real(N_rndm)/real(N_rndm_all) q = 1. - p ! write(*,*)p,q ! stop ! ________________________________________________________________________ ! ! . l m : m = N_rad C(1) = 1 C(2) = 2 C(3) = 1 C_m_l = C 46


do j=3,N_rad do i=2,j C_m_l(i) = C(i-1) + C(i) end do ! i C_m_l(j+1) = 1 C = C_m_l ! write(*,*)j,(C_m_l(i),i=1,j+1) end do ! j ! stop !________________________________________________________________________ ppA = 1. ppB = 1. do j=1,N_rad+2 ppA = p*ppA ppB = q*ppB end do ! j ppA = ppA/q ppB = ppB/p qp = q/p pq = p/q ! sP = 0. do j=1,N_rad+1 ppA = ppA*qp ppB = ppB*pq P_theor(j) = C_m_l(j)*(ppA + ppB) sP = sP + P_theor(j) write(2,*)j,C_m_l(j),P_theor(j) end do ! j write(2,*)sP stop coeff_Rf = 0. do j=1,N_rad+1 coeff_Rf = coeff_Rf + P_theor(j)*P_theor(j) end do coeff_Rf = 100.*sqrt(1./coeff_Rf) return end

! ! ! !

subroutine output1 use commonmod write(2,'(///)') 47


write(2,'(/5x,"- = ", i8)')N_all write(2,'(/5x," : - = ", i8)')N_rndm_all write(2,'(/5x,"- X,Y,Z = ", 3(2x,i3))')m_X,m_Y,m_Z write(2,'(//5x,"************************************************")') write(2,'(///5x," No. Name "//)') X Y Z- ( )

do i=1,N_all write(2,'(5x,i6,3x,A7,2x,2(f5.3,2x))')i,Name_atom(i),XYZ(i,1),XYZ(i,2),XYZ(i,3) end do ! i write(2,'(//5x,"************************************************")') return end

48