The most practical way would probably be to generate a set of conformations at some low level of theory (MM), and re-optimize the conformations by DFT. There is quite a lot of methods for the initial step, e.g. quenching, simulated anealling, metadynamics (google helps). If you have enough computer resources, the conformation search can also be done at DFT level.
You may face some technical difficulties, once you plan to study a periodic graphene model.
We've recently published a study of finite graphene-like sheets of aromatic rings (http://dx.doi.org/10.1021/jp3071162).
You might be also interested in the metadynamics study nucleobases on graphene employing classical force field (http://dx.doi.org/10.1021/jp202491j).
The most practical way would probably be to generate a set of conformations at some low level of theory (MM), and re-optimize the conformations by DFT. There is quite a lot of methods for the initial step, e.g. quenching, simulated anealling, metadynamics (google helps). If you have enough computer resources, the conformation search can also be done at DFT level.
You may face some technical difficulties, once you plan to study a periodic graphene model.
We've recently published a study of finite graphene-like sheets of aromatic rings (http://dx.doi.org/10.1021/jp3071162).
You might be also interested in the metadynamics study nucleobases on graphene employing classical force field (http://dx.doi.org/10.1021/jp202491j).
I agree with both Michal Kolář and Bryan Wong. Dispersion interactions will play very important role here, actually they will be responsible for the interaction - nothing else.
From the question I would guess that you don't know how to perform PES technically and/or theoretically. So:
1. Optimize graphene and adenine separately by DFT of your choice. This does not need to be super accurate so some cheaper method could be used.
2. Put adenine roughly parallely to graphene in any distance.
3. Move adenine closer to graphene: choose one C atom somewhere from the middle of the graphene and some not important atom from the adenine - let say H from C8. Now decrease their distance to improbably low value - let say 1.3 A (close to the length of the single bond of C-H).
4. Choose good method and basis set - it should be able to include the dispersion since it will be perhaps the only interaction which will hold your molecule together. I often use M062X or functional with dispersion correction. I often use 6311+g** if I don't expect any hydrogen bond (otherwise 6311++g**; in the transition state calculations I put even 6-311++g(2d,2p) for atom which interact). In your case it might be too expensive so you might try also 6-31+g** for the first guess.
5. Now perform a "semirigid" potential energy scan: make graphene and adenine frozen (i.e. they won't be optimized). Launch the calculation for a few second and stop it. Now go to the output file and check which variable your program created. If there are some variables which have their atoms in both molecules (e.g. the distance between C from graphene and some atom from adenine, or two atom from Adenine and one from graphene for angle and so on) you have to delete them: you should adjust the input file. When you finish launch the calculation for a few seconds again and recheck that there are not any variable having their atom in both molecules. Now define a length of "C H bond" which you will scan - C from graphene and H from adenine (these you have chosen in step 3) and put it in input file. You should set up this length to be scanned (e.g. in Gaussian: x y S a b where x is the number of one atom for example graphene C; y is the number of the other atom; S means relaxed scan; a is the number of steps you want to perform and b is the stepsize). I would choose 120 steps with the size of 0.05 A, what means that the scan will finish when the distance will be some 7.3 A. For the first guess it can be enough. If in the last step your H will be far from the graphene but the rest of the adenine will direct towards graphene, you could increase the number of step, or better change the atoms you have chosen in step 3 to some atoms which are close to each other. In this case you would continue with NEGATIVE stepsize - you will move adenine towards graphenene.
After you set up the bond for scan, you have to define also two angles: 2 x C-C-H where both C are from graphene, the middle one is C you have chosen in step 3 and first C is some C from graphene next to it. H is the one you have chosen in step 3. You should define 2 angles so the only difference between them is the first C only. Put the angles in the input file.
Now you have to define a dihedral angle C-C-H-C: first 2 C and H are the same as in one of the previous two angles (arbitrary) and the last C is from adenine (H is attached to this C). Put the angle to the input file.
By this you have frozen both molecules but adenine can move freely over the graphene.
You should see some local minima by this scan so you should reexamine them.
6. Now you could try to perform the optimization with the structures you have found in step 5 or perform a "semirelaxed" potential energy scan: make graphene frozen (i.e. it won't be optimized) and only adenine should be relaxed (i.e. it will be reoptimized in each step). Pick up the structure with local minimum and decrease the distance of the C and H you have chosen previously by let say 0.15 A and perform the scan again. But in this case you should make adenine NOT frozen - it should be fully optimized in each step. You should also make the stepsize smaller let say 0.02 A. If you are lucky some 15 steps might be sufficient. Once again check that there are only one bond (scanned one), 2 angles and one dihedral angle in the structure definition which contain atoms from both molecules. Do it for all structures you expect might be interesting, i.e. even for inflex point if there are not minima around.
7. You could reoptimize each structure from step 6.
8. Try to calculate the counterpoise correction since the basis set superposition error might be significant in this case. If you use some expensive basis set, the error would be smaller but the calculation time will be unmanageable.
Zbignew has described in a clear way what steps you should follow to compute the potential energy surface.
If you would like to compute the PES for educational reason, this is great. If, however, you consider the case as a research project, then it will be good to read the PCCP paper on the subject and look at the PES published:
the procedure mentioned above is very long. I would suggest that u read my paper adsorption of catechol on wet silica surface : density functional theory study. u will find easy way to calculate pes
You might want to think using VASP for this purpose. It has standard method called "Ellastic Band method" to calculate PEC, PES, reaction pathways/barriers, etc.
Basicaly yo have initial configuration and end configuration (previously optimized) and you set up a number of intermidiate steps (each step is allowed to be optimized in a direction normal to a reaction coordinate).
... or Quantum ESPRESSO, http://www.Quantum-ESPRESSO.org/ that is GPL ("free"), contains also the nudged elastic band (NEB) method and several treatments for the van der Waals interactions, including vdW density functionals (vdW-DF, vdW-DF2, vdW-rVV10, DFT+D2 etc).
you can try Metadynamics in QE (Plumed plugin) or CPMD code, choose a simple collective variables such as bond lengths or coordination numbers,... and give it a try. using 2 collective variables you can get a 2-D potential energy surface
It depends on how much computer time you have available. I would start with a model of the graphene surface. You can use a 2-d periodic model or a small cluster model. If you use the small cluster model it should be 2 or 3 time larger than the adenine. Next I would generate several random configurations for adenine-grahene pair. Then minimize with DFT and use a Monte-Carlo accept/reject criteria. I would also fix the graphene geometry at this point, buf you can do a complete miniziation for the best few conformations.