1 function task_smd_energy(rtdb) 2 implicit none 3 integer rtdb 4 5#include "inp.fh" 6#include "mafdecls.fh" 7#include "rtdb.fh" 8#include "stdio.fh" 9#include "errquit.fh" 10#include "util.fh" 11#include <mpif.h> 12#include "global.fh" 13 logical task_smd_energy 14 character*72 namespace 15 character*32 pname 16 double precision etime1,etime2,etime3,etime4,etime5,etime6 17 double precision eetime4,eetime5,eetime6 18 double precision eetime1,eetime2,eetime3 19 double precision etime31 20 double precision energy,ewald1,ewald2,evdw 21 logical operiodic 22 integer i,nr,igr 23 integer gr_list(1) 24 integer gr_size 25 character(256) rtdb_fname 26 character(256) rtdb_fname_group(2) 27 logical master 28 integer ierr 29c 30 integer world_me 31c 32 pname = "task_smd_energy" 33 if(ga_pgroup_get_default().ne.ga_pgroup_get_world()) 34 $ call errquit('Cannot run SMD in sub-groups yet',0,0) 35c 36 world_me = ga_nodeid() 37c 38 call ga_pgroup_sync(ga_pgroup_get_world()) 39c 40c start the clock 41c --------------- 42 etime1=0.0 43 etime2=0.0 44 etime3=0.0 45 etime4=0.0 46 etime5=0.0 47 etime6=0.0 48c 49 etime1 = mpi_wtime() 50 eetime1 = util_cpusec() 51 call smd_init("energy",rtdb) 52 etime2 = mpi_wtime() 53c 54c write (*,*) 'calling ga_set_all', ga_nodeid() 55c call util_flush(6) 56c 57 if(ga_nodeid().eq.0) 58 * call smd_charge_ga_set_all() 59c 60c write (*,*) 'done ga_set_all', ga_nodeid() 61c call util_flush(6) 62 call ga_sync() 63 64c write (*,*) 'calling rtdb_close', ga_nodeid() 65c call util_flush(6) 66 67 if(.not.rtdb_close(rtdb, 'keep')) 68 + call errquit('Failed to close group rtdb',0, GEOM_ERR) 69c write (*,*) 'done rtdb_close', ga_nodeid() 70c call util_flush(6) 71 call ga_sync() 72 call mpi_barrier(mpi_comm_world,ierr) 73c 74c write(*,*) "1"//pname,ga_nodeid(), world_me 75c call util_flush(6) 76c call cpu_time(etime3) 77 etime3 = mpi_wtime() 78 if(world_me.eq.0) then 79c write(*,*) "1.s"//pname,ga_nodeid(), world_me 80c call util_flush(6) 81 call sched_grp_server_code() 82 else 83c write(*,*) "1.c"//pname,ga_nodeid(), world_me 84c call util_flush(6) 85 call sched_grp_client_code() 86 endif 87c write(*,*) "2"//pname,ga_nodeid() 88c call util_flush(6) 89c 90c call cpu_time(etime31) 91 etime31 = mpi_wtime() 92 call ga_sync() 93 call mpi_barrier(MPI_COMM_WORLD,ierr) 94c call cpu_time(etime4) 95 etime4 = mpi_wtime() 96 call smd_rtdb_get_name(rtdb_fname) 97 if (.not. rtdb_open(rtdb_fname,'old',rtdb)) call errquit 98 * (' rtdb_open old failed ',0,0) 99c 100 101 etime5 = mpi_wtime() 102 eetime5 = util_cpusec() 103c 104 call smd_end(rtdb) 105c 106 etime6 = mpi_wtime() 107 eetime6 = util_cpusec() 108 if(ga_nodeid().eq.0) then 109 write(luout,'(/i4,a,2f20.3)') ga_nodeid(),'Total CPU time : ', 110 * (etime6-etime1),(eetime6-eetime1) 111 write(luout,'(/i4,a,f20.3)') ga_nodeid(),'Initialization : ', 112 * (etime2-etime1) 113 write(luout,'(/i4,a,f20.3)') ga_nodeid(),'Client-Server : ', 114 * (etime31-etime3) 115 write(luout,'(/i4,a,f20.3)') ga_nodeid(),'Client-Server+sync : ', 116 * (etime4-etime3) 117 write(luout,'(/i4,a,f20.3)') ga_nodeid(),'SMD end : ', 118 * (etime6-etime5) 119 end if 120c write(luout,'(/,a,f20.3)')'Verlet : ',(etime3-etime2) 121c write(luout,'(/,a,f20.3)')'Force : ',(etime4-etime3) 122c 123 energy = 0.0d0 124 if (.not. rtdb_put(rtdb,'smd:energy',mt_dbl,1,energy)) 125 $ call errquit(pname//'failed put energy', 0, RTDB_ERR) 126c 127 task_smd_energy = .true. 128c 129 return 130 END 131 132 133 function task_smd_energy2(rtdb) 134 implicit none 135 integer rtdb 136 137#include "inp.fh" 138#include "mafdecls.fh" 139#include "rtdb.fh" 140#include "stdio.fh" 141#include "errquit.fh" 142#include "util.fh" 143#include "global.fh" 144 logical task_smd_energy2 145 character*72 namespace 146 character*32 pname 147 double precision etime1,etime2,etime3,etime4,etime5,etime6 148 double precision energy,ewald1,ewald2,evdw 149 logical operiodic 150 integer i,nr,igr 151 integer gr_list(1) 152 integer gr_size 153 character(256) rtdb_fname 154 character(256) rtdb_fname_group(2) 155 logical master 156c 157 logical util_sgstart 158 external util_sgstart 159 integer util_sgroup_mygroup 160 external util_sgroup_mygroup 161c 162 if(.not.util_sgstart(rtdb)) 163 $ call errquit('Error in SUBGROUPS init', 0, RTDB_ERR) 164 165 call smd_rtdb_set_handle(rtdb) 166 167 pname = "task_smd_energy" 168c write(*,*) "in "//pname,util_sgroup_mygroup(),rtdb 169c 170c start the clock 171c --------------- 172 etime1=0.0 173 etime2=0.0 174 etime3=0.0 175 etime4=0.0 176 etime5=0.0 177 etime6=0.0 178 call cpu_time(etime1) 179c 180 call cpu_time(etime1) 181 call smd_init("energy",rtdb) 182 call cpu_time(etime2) 183c 184c call smd_coords_print(54) 185 call smd_vlist_update(.true.,.true.) 186 call cpu_time(etime3) 187c 188 call smd_system_nres(nr) 189c 190 write(*,*) "number of monomers",nr 191 192c call smd_charge_print(89) 193 if (util_sgroup_mygroup().eq.1) then 194 call smd_monomer(187) 195 end if 196c if (util_sgroup_mygroup().eq.2) then 197c call smd_monomer(74) 198c end if 199c call smd_charge_print(90) 200 call cpu_time(etime4) 201c 202c write(6,*) "before sync",util_sgroup_mygroup() 203c call util_flush(6) 204 call ga_pgroup_sync(ga_pgroup_get_world()) 205 call smd_end(rtdb) 206c 207 208 call cpu_time(etime6) 209 write(luout,'(/,a,f20.3)')'Total CPU time : ',(etime6-etime1) 210 write(luout,'(/,a,f20.3)')'Initialization : ',(etime2-etime1) 211 write(luout,'(/,a,f20.3)')'Verlet : ',(etime3-etime2) 212 write(luout,'(/,a,f20.3)')'Force : ',(etime4-etime3) 213 214 call util_sgend(rtdb) 215 energy = 0.0d0 216 if (.not. rtdb_put(rtdb,'smd:energy',mt_dbl,1,energy)) 217 $ call errquit(pname//'failed put energy', 0, RTDB_ERR) 218 write(*,*) "Goodbye from task_smd",util_sgroup_mygroup() 219 220 task_smd_energy2 = .true. 221 222 return 223 END 224 225 function task_smd_energy1(rtdb) 226 implicit none 227 integer rtdb 228 229#include "inp.fh" 230#include "mafdecls.fh" 231#include "rtdb.fh" 232#include "stdio.fh" 233#include "errquit.fh" 234#include "util.fh" 235#include "global.fh" 236 logical task_smd_energy1 237 character*72 namespace 238 character*32 pname 239 double precision etime1,etime2,etime3,etime4,etime5,etime6 240 double precision energy,ewald1,ewald2,evdw 241 logical operiodic 242 integer i,nr,igr 243 integer gr_list(1) 244 integer gr_size 245 character(256) rtdb_fname 246 character(256) rtdb_fname_group(2) 247 logical master 248c 249 logical util_sgstart 250 external util_sgstart 251 integer util_sgroup_mygroup 252 external util_sgroup_mygroup 253c 254 if(.not.util_sgstart(rtdb)) 255 $ call errquit('Error in SUBGROUPS init', 0, RTDB_ERR) 256 257c master = ga_nodeid().eq.0 258c call smd_rtdb_get_handle(rtdb) 259c if (.not. rtdb_getfname(rtdb, rtdb_fname)) call 260c > errquit('rtdb_fname call failed',0,0) 261c rtdb_fname_group(1)="./perm/test001.db" 262c rtdb_fname_group(2)="./perm/test002.db" 263c 264c if(ga_nodeid().eq.0) then 265c call util_file_copy(rtdb_fname,rtdb_fname_group(1)) 266c call util_file_copy(rtdb_fname,rtdb_fname_group(2)) 267c 268c end if 269c call ga_sync() 270c write(*,*) "rtdb_fname",rtdb_fname 271c 272c if (.not. rtdb_close(rtdb, 'keep')) call errquit( 273c > ' failed to close rtdb for sg ',0,0) 274c 275c gr_list(1) = ga_nodeid() 276c gr_size = 1 277c call ga_sync() 278c igr=ga_pgroup_create(gr_list, gr_size) 279c call ga_pgroup_set_default(igr) 280c 281c 282c i = ga_nodeid()+1 283c if (.not. rtdb_open(rtdb_fname_group(i),'old',rtdb)) 284c > call errquit 285c * (' rtdb_open old failed ',0,0) 286c 287c call ga_sync() 288cc if(util_sgroup_mygroup().eq.1) then 289c if(.true.) then 290 call smd_rtdb_set_handle(rtdb) 291 292 pname = "task_smd_energy" 293 write(*,*) "in "//pname,util_sgroup_mygroup(),rtdb 294c 295c start the clock 296c --------------- 297 etime1=0.0 298 etime2=0.0 299 etime3=0.0 300 etime4=0.0 301 etime5=0.0 302 etime6=0.0 303 call cpu_time(etime1) 304c 305 call cpu_time(etime1) 306 call smd_init("energy",rtdb) 307 call cpu_time(etime2) 308c 309c call smd_coords_print(54) 310 call smd_vlist_update(.true.,.true.) 311 call cpu_time(etime3) 312c 313 call smd_system_nres(nr) 314c 315 write(*,*) "number of monomers",nr 316 317c call smd_charge_print(89) 318c do i=1,1 319 if(util_sgroup_mygroup().eq.1) then 320 call smd_monomer(1) 321 end if 322c end do 323c call smd_charge_print(90) 324 call cpu_time(etime4) 325c 326 call smd_end(rtdb) 327c 328 329 call cpu_time(etime6) 330 write(luout,'(/,a,f20.3)')'Total CPU time : ',(etime6-etime1) 331 write(luout,'(/,a,f20.3)')'Initialization : ',(etime2-etime1) 332 write(luout,'(/,a,f20.3)')'Verlet : ',(etime3-etime2) 333 write(luout,'(/,a,f20.3)')'Force : ',(etime4-etime3) 334 335c end if 336c if(.not.ga_pgroup_destroy(igr)) 337c $ call errquit(pname//'failed to destroy groups', 0, 0) 338 339 call util_sgend(rtdb) 340 energy = 0.0d0 341 if (.not. rtdb_put(rtdb,'smd:energy',mt_dbl,1,energy)) 342 $ call errquit(pname//'failed put energy', 0, RTDB_ERR) 343 write(*,*) "Goodbye from task_smd",util_sgroup_mygroup() 344 345 task_smd_energy1 = .true. 346 347c call ga_sync() 348 return 349 END 350 351 function task_smd_energy0(rtdb) 352 implicit none 353 integer rtdb 354 355#include "inp.fh" 356#include "mafdecls.fh" 357#include "rtdb.fh" 358#include "stdio.fh" 359#include "errquit.fh" 360 logical task_smd_energy0 361 character*72 namespace 362 character*32 pname 363 double precision etime1,etime2,etime3,etime4,etime5,etime6 364 double precision energy,ewald1,ewald2,evdw 365 logical operiodic 366 367 pname = "task_smd_energy" 368 write(*,*) "in "//pname 369c 370c start the clock 371c --------------- 372 etime1=0.0 373 etime2=0.0 374 etime3=0.0 375 etime4=0.0 376 etime5=0.0 377 etime6=0.0 378 call cpu_time(etime1) 379c 380 call cpu_time(etime1) 381 call smd_init("energy",rtdb) 382 call cpu_time(etime2) 383c 384 call smd_vlist_update(.true.,.true.) 385 call cpu_time(etime3) 386c 387 call smd_force_compute() 388 call cpu_time(etime4) 389c 390 call smd_energy_compute() 391 call cpu_time(etime5) 392c 393 call smd_energy_print(6) 394c 395 call smd_end(rtdb) 396c 397 if (.not. rtdb_put(rtdb,'smd:energy',mt_dbl,1,energy)) 398 $ call errquit(pname//'failed put energy', 0, RTDB_ERR) 399c 400 401 call cpu_time(etime6) 402 write(luout,'(/,a,f20.3)')'Total CPU time : ',(etime6-etime1) 403 write(luout,'(/,a,f20.3)')'Initialization : ',(etime2-etime1) 404 write(luout,'(/,a,f20.3)')'Verlet : ',(etime3-etime2) 405 write(luout,'(/,a,f20.3)')'Force : ',(etime4-etime3) 406 407 408 write(*,*) "Goodbye from task_smd" 409 task_smd_energy0 = .true. 410 411 return 412 END 413c $Id$ 414