ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/UseTheForce/doForces_interface.F90
Revision: 659
Committed: Wed Oct 12 20:22:34 2005 UTC (19 years, 6 months ago) by chuckv
File size: 1558 byte(s)
Log Message:
Breaky, Breaky: c-fortran interface now expects an array for pot.

File Contents

# User Rev Content
1 gezelter 264 !! Interfaces for C programs to module....
2    
3 chrisfen 610 subroutine initFortranFF(correctionMethod, thisStat)
4 gezelter 264 use doForces, ONLY: init_FF
5 chrisfen 596 use definitions, ONLY : dp
6    
7     integer, intent(in) :: correctionMethod
8 gezelter 581 integer, intent(out) :: thisStat
9 chrisfen 596 integer :: correction
10 gezelter 581
11 chrisfen 596 correction = correctionMethod
12    
13 chrisfen 610 call init_FF(correction, thisStat)
14 gezelter 507
15 gezelter 264 end subroutine initFortranFF
16    
17     subroutine doForceloop(q, q_group, A, eFrame, f, t, tau, pot, &
18     do_pot_c, do_stress_c, error)
19 gezelter 507
20 gezelter 264 use definitions, ONLY: dp
21     use simulation
22     use doForces, ONLY: do_force_loop
23 chuckv 659
24     #define __FORTRAN90
25     #include "UseTheForce/DarkSide/fInteractionMap.h"
26    
27 gezelter 264 !! Position array provided by C, dimensioned by getNlocal
28     real ( kind = dp ), dimension(3, nLocal) :: q
29     !! molecular center-of-mass position array
30     real ( kind = dp ), dimension(3, nGroups) :: q_group
31     !! Rotation Matrix for each long range particle in simulation.
32     real( kind = dp), dimension(9, nLocal) :: A
33     !! Unit vectors for dipoles (lab frame)
34     real( kind = dp ), dimension(9,nLocal) :: eFrame
35     !! Force array provided by C, dimensioned by getNlocal
36     real ( kind = dp ), dimension(3,nLocal) :: f
37     !! Torsion array provided by C, dimensioned by getNlocal
38     real( kind = dp ), dimension(3,nLocal) :: t
39 gezelter 507
40 gezelter 264 !! Stress Tensor
41     real( kind = dp), dimension(9) :: tau
42 chuckv 659 real ( kind = dp ),dimension(POT_ARRAY_SIZE) :: pot
43 gezelter 264 logical ( kind = 2) :: do_pot_c, do_stress_c
44     integer :: error
45 gezelter 507
46 gezelter 264 call do_force_loop(q, q_group, A, eFrame, f, t, tau, pot, &
47     do_pot_c, do_stress_c, error)
48 gezelter 507
49 gezelter 264 end subroutine doForceloop
50 gezelter 586