| 1 | gezelter | 264 | !! Interfaces for C programs to module.... | 
| 2 |  |  |  | 
| 3 | gezelter | 762 | subroutine initFortranFF(thisStat) | 
| 4 | gezelter | 264 | use doForces, ONLY: init_FF | 
| 5 | chrisfen | 596 | use definitions, ONLY : dp | 
| 6 |  |  |  | 
| 7 | gezelter | 581 | integer, intent(out) :: thisStat | 
| 8 |  |  |  | 
| 9 | gezelter | 762 | call init_FF(thisStat) | 
| 10 | gezelter | 507 |  | 
| 11 | gezelter | 264 | end subroutine initFortranFF | 
| 12 |  |  |  | 
| 13 |  |  | subroutine doForceloop(q, q_group, A, eFrame, f, t, tau, pot, & | 
| 14 |  |  | do_pot_c, do_stress_c, error) | 
| 15 | gezelter | 507 |  | 
| 16 | gezelter | 264 | use definitions, ONLY: dp | 
| 17 |  |  | use simulation | 
| 18 |  |  | use doForces, ONLY: do_force_loop | 
| 19 | chuckv | 659 |  | 
| 20 |  |  | #define __FORTRAN90 | 
| 21 |  |  | #include "UseTheForce/DarkSide/fInteractionMap.h" | 
| 22 |  |  |  | 
| 23 | gezelter | 264 | !! Position array provided by C, dimensioned by getNlocal | 
| 24 |  |  | real ( kind = dp ), dimension(3, nLocal) :: q | 
| 25 |  |  | !! molecular center-of-mass position array | 
| 26 |  |  | real ( kind = dp ), dimension(3, nGroups) :: q_group | 
| 27 |  |  | !! Rotation Matrix for each long range particle in simulation. | 
| 28 |  |  | real( kind = dp), dimension(9, nLocal) :: A | 
| 29 |  |  | !! Unit vectors for dipoles (lab frame) | 
| 30 |  |  | real( kind = dp ), dimension(9,nLocal) :: eFrame | 
| 31 |  |  | !! Force array provided by C, dimensioned by getNlocal | 
| 32 |  |  | real ( kind = dp ), dimension(3,nLocal) :: f | 
| 33 |  |  | !! Torsion array provided by C, dimensioned by getNlocal | 
| 34 |  |  | real( kind = dp ), dimension(3,nLocal) :: t | 
| 35 | gezelter | 507 |  | 
| 36 | gezelter | 264 | !! Stress Tensor | 
| 37 |  |  | real( kind = dp), dimension(9) :: tau | 
| 38 | gezelter | 662 | real ( kind = dp ),dimension(LR_POT_TYPES) :: pot | 
| 39 | gezelter | 264 | logical ( kind = 2) :: do_pot_c, do_stress_c | 
| 40 |  |  | integer :: error | 
| 41 | gezelter | 507 |  | 
| 42 | gezelter | 264 | call do_force_loop(q, q_group, A, eFrame, f, t, tau, pot, & | 
| 43 |  |  | do_pot_c, do_stress_c, error) | 
| 44 | gezelter | 507 |  | 
| 45 | gezelter | 264 | end subroutine doForceloop | 
| 46 | gezelter | 586 |  | 
| 47 | gezelter | 762 | subroutine notifyFortranElectrostaticMethod(electrostaticMethod) | 
| 48 |  |  | use doForces, ONLY : setElectrostaticMethod | 
| 49 |  |  |  | 
| 50 |  |  | integer, intent(in) :: electrostaticMethod | 
| 51 |  |  |  | 
| 52 |  |  | call setElectrostaticMethod(electrostaticMethod) | 
| 53 |  |  |  | 
| 54 |  |  | end subroutine notifyFortranElectrostaticMethod | 
| 55 |  |  |  | 
| 56 |  |  | subroutine notifyFortranCutoffPolicy(cutPolicy) | 
| 57 |  |  | use doForces, ONLY : setCutoffPolicy | 
| 58 |  |  |  | 
| 59 |  |  | integer, intent(in) :: cutPolicy | 
| 60 |  |  |  | 
| 61 |  |  | call setCutoffPolicy( cutPolicy ) | 
| 62 |  |  |  | 
| 63 |  |  | end subroutine notifyFortranCutoffPolicy | 
| 64 |  |  |  | 
| 65 |  |  | subroutine notifyFortranSkinThickness(this_skin) | 
| 66 |  |  | use doForces, ONLY : setSkinThickness | 
| 67 |  |  | use definitions, ONLY : dp | 
| 68 |  |  |  | 
| 69 |  |  | real(kind=dp), intent(in) :: this_skin | 
| 70 |  |  |  | 
| 71 |  |  | call setSkinThickness( this_skin ) | 
| 72 |  |  |  | 
| 73 |  |  | end subroutine notifyFortranSkinThickness | 
| 74 |  |  |  | 
| 75 |  |  | subroutine notifyFortranCutoffs(this_rcut, this_rsw) | 
| 76 |  |  | use doForces, ONLY : setCutoffs | 
| 77 |  |  | use definitions, ONLY : dp | 
| 78 |  |  |  | 
| 79 |  |  | real(kind=dp), intent(in) :: this_rcut, this_rsw | 
| 80 |  |  |  | 
| 81 |  |  | call setCutoffs(this_rcut, this_rsw) | 
| 82 |  |  |  | 
| 83 |  |  | end subroutine notifyFortranCutoffs | 
| 84 |  |  |  | 
| 85 |  |  | subroutine notifyFortranYouAreOnYourOwn() | 
| 86 |  |  | use doForces, ONLY : cWasLame | 
| 87 |  |  |  | 
| 88 |  |  | call cWasLame() | 
| 89 |  |  | end subroutine notifyFortranYouAreOnYourOwn |