ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/fortranWrappers.cpp
Revision: 836
Committed: Tue Oct 28 22:25:46 2003 UTC (20 years, 8 months ago) by mmeineke
File size: 2672 byte(s)
Log Message:
did a complete overhaul of how c calls fortran. All function pointers and fortran calls are rigidly typecast now.

File Contents

# User Rev Content
1 mmeineke 377 #define __C
2 gezelter 747
3     #include "config.h"
4 mmeineke 377 #include "fSimulation.h"
5 mmeineke 790 #include "fortranWrappers.hpp"
6 mmeineke 377
7 mmeineke 836 // declare the actual instances of the function pointers
8 mmeineke 377
9 mmeineke 836 makeAtype_TD makeAtype;
10     initFortranFF_TD initFortranFF;
11     set_sticky_params_TD set_sticky_params;
12     set_gb_pair_params_TD set_gb_pair_params;
13     newEAMtype_TD newEAMtype;
14    
15     // declare the functions on the fortran side
16    
17 gezelter 832 extern "C" {
18 mmeineke 377
19 mmeineke 836 typedef void (*ffWrapFunction_TD)( makeAtype_TD p1,
20     initFortranFF_TD p2,
21     doForceLoop_TD p3,
22     set_sticky_params_TD p4,
23     set_gb_pair_params_TD p5,
24     newEAMtype_TD p6 );
25    
26     void F90_FUNC(wrapforcefield, WRAPFORCEFIELD)( ffWrapFunction_TD myWF );
27 mmeineke 790
28 mmeineke 836 typedef void (*smWrapFunction_TD)( setFortranSim_TD p1,
29     setFortranBox_TD p2,
30     notifyFortranCutOff_TD p3 );
31    
32     void F90_FUNC(wrapsimmod, WRAPSIMMOD) ( smWrapFunction_TD myWF );
33    
34 mmeineke 377 #ifdef IS_MPI
35 mmeineke 836
36     typedef void (*spmWrapFunction_TD)( setFortranMPI_TD p1 );
37 mmeineke 377
38 mmeineke 836 void F90_FUNC(wrapsimparallelmod, WRAPSIMPARALLELMOD)(spmWrapFunction_TD myWF);
39 gezelter 832
40 mmeineke 836 #endif // is_mpi
41 gezelter 832 }
42    
43 mmeineke 836 // declare the functions that are defined in this file
44     extern "C"{
45     void wrapFF(makeAtype_TD p1,
46     initFortranFF_TD p2,
47     doForceLoop_TD p3,
48     set_sticky_params_TD p4,
49     set_gb_pair_params_TD p5,
50     newEAMtype_TD p6 );
51 mmeineke 377
52 mmeineke 836 void wrapSimInfo(setFortranSim_TD p1,
53     setFortranBox_TD p2,
54     notifyFortranCutOff_TD p3 );
55    
56 mmeineke 377 #ifdef IS_MPI
57 mmeineke 836 void wrapSimParallel( setFortranMPI_TD p1 );
58     #endif
59 gezelter 832 }
60 mmeineke 377
61     // take care of the ForceField functions
62    
63     ForceFields* currentFF;
64     void wrapMeFF( ForceFields* thisFF ){
65    
66     currentFF = thisFF;
67 gezelter 747 F90_FUNC(wrapforcefield, WRAPFORCEFIELD)( wrapFF );
68 mmeineke 377 }
69    
70 mmeineke 836 extern "C" void wrapFF( makeAtype_TD p1,
71     initFortranFF_TD p2,
72     doForceLoop_TD p3,
73     set_sticky_params_TD p4,
74     set_gb_pair_params_TD p5,
75     newEAMtype_TD p6 ){
76 mmeineke 377
77     makeAtype = p1;
78     initFortranFF = p2;
79     currentFF->setFortranForceLoop( p3 );
80 mmeineke 626 set_sticky_params = p4;
81     set_gb_pair_params = p5;
82 chuckv 631 newEAMtype = p6;
83 mmeineke 377 }
84    
85    
86     // wrap the SimInfo functions
87    
88     SimInfo* currentPlug;
89     void wrapMeSimInfo( SimInfo* thePlug ){
90    
91     currentPlug = thePlug;
92 gezelter 747 F90_FUNC(wrapsimmod, WRAPSIMMOD) ( wrapSimInfo );
93 mmeineke 377 }
94    
95 gezelter 832
96    
97 mmeineke 836 extern "C" void wrapSimInfo( setFortranSim_TD p1,
98     setFortranBox_TD p2,
99     notifyFortranCutOff_TD p3 ){
100    
101 mmeineke 626 currentPlug->setInternal( p1, p2, p3 );
102 mmeineke 377 }
103    
104 gezelter 747
105 mmeineke 836
106 mmeineke 377 #ifdef IS_MPI
107    
108     // wrap the mpiSim functions
109    
110     mpiSimulation* currentMPIsim;
111     void wrapMeSimParallel( mpiSimulation* thisMPIsim ){
112    
113     currentMPIsim = thisMPIsim;
114 gezelter 747 F90_FUNC(wrapsimparallelmod, WRAPSIMPARALLELMOD) ( wrapSimParallel );
115 mmeineke 377 }
116    
117 mmeineke 836 extern "C" void wrapSimParallel( setFortranMPI_TD p1 ){
118 mmeineke 377
119     currentMPIsim->setInternal( p1 );
120     }
121    
122    
123     #endif // is_mpi
124 mmeineke 790