My PhD in computational mechanics (field is materials science) involves writing Fortran subroutines for implementing new constitutive equations. More specifically, my research involves continuum mechanics, finite-element analysis and other numerical methods. Though theoretically I have a decent understanding of the subjects, I find it impossible to implement them in code.

I have published a paper on implementing a modified model through a subroutine. But the truth is that I have not written the code from scratch. More than 80% of the code was written by someone else. Here's the original code. I just modified the hardening law to suit my purpose. I did not change the integration method or the structure of the code. I have cited their paper of course.

Truth is, I would not have been able to write the code from scratch even if I had been given five years to do that. I just can think of how to implement theory to code.

Now, I am about to defend my PhD, which is based on this code. I feel like a charlatan and that I can’t justify my PhD. My advisor doesn’t know this. I am not suited for a career in computational mechanics or materials science. How can I reconcile this?

  • 8
    There's no need to code: Doing fundamental research is your contribution, modifying someone else's code is fine – user2768 Jul 14 '20 at 8:31
  • 2
    Most research is improving upon existing knowledge, there is no need to feel bad. As someone who once tried to do something similar and gave up, I can confirm that developing subroutines is hard. It took two people a lot smarter than me a couple of years to come up with a couple of hundred lines of code I tried to build upon. – Vibex Jul 14 '20 at 8:40
  • 2
    Just make sure you follow the terms of whatever license the code is available in, if any, or ask permission from the authors otherwise. Also, it may be better to keep your advisor informed (in general). – GoodDeeds Jul 14 '20 at 9:54
  • 2
  • 2
    I agree with the answers that say this is nothing to worry about. But it sounds like you're panicking a bit with the defense coming up. I recommend you talk to your advisor about your feelings; they may be able to help you calm down. And remember, your advisor thinks you're ready to defend, or they wouldn't have scheduled the defense. Right now you're not the best judge of your own work because emotions are running high, so you may need to just trust your advisor's judgement. I told myself that many times during my PhD. – mhwombat Jul 14 '20 at 13:52

You weren’t earning a PhD in FORTRAN Coding (gasp – I shudder to think of it). You were working in continuum mechanics. That is where your contribution was, and is.

If I read it correctly, you took an existing tool and adapted it for a new purpose. I can’t find anything wrong with that, especially as you cited the creators of the original version. If you keep it up and continue to make contributions to continuum mechanics you will do fine. You didn’t screw up. You did what any sensible person should do. FORTRAN was my first computing language. I doubt that I would even recognize it anymore.

Relax, have a culturally appropriate beverage and celebrate your success.

  • 3
    Was taught Cobol way back when, hated it then and shudder now... – Solar Mike Jul 14 '20 at 11:32
  • 2
    @SolarMike You shudder? That's proper self-control, that is! So much more acceptable than gnawing on a chair-leg. :-) – SusanW Jul 14 '20 at 17:36

You are not Newton. You do not have to develop/discover laws of physics on your own. And even Newton said that he stood on the shoulders of giants.

What you need to make sure is that you appropriately cite the code and advance the existing knowledge (i.e. how things were developed in this code) to a new field. Make your studies, experiments, theories, whatever open questions in the field are, and make it transparent where you started, and you are perfectly fine.

Not everybody's PhD thesis discovers new laws, some consist of mapping further in a field made accessible by others. Have a chat with your advisor where the open questions in your field are once such a code is available!

I'll conclude with another analogy: You would also not expect to have to invent the computer to be able to work on one - just find a good field of study to develop based on its existence.


I am your opposite. I know very little physics, and my mathematics is bachelor's degree level but very rusty. On the other hand, I would be a very good person to have around if you needed a computer program designed and implemented.

You may find that, at times during your career, you need to collaborate with a computer programmer. That should not be a problem. If you are working at a university you may be able to get a graduate student researcher from the computer science department relatively cheaply. In industry, your employer would have to pay a bit more, but there are plenty of scientific programmers who can read equations and solve them in Fortran or some other language.

The world does not need everyone to be good at everything. Concentrate on the things you are good at, and work with others to cover any skill you need and do not have.


"I screwed up. What should I do?"

NO. You have not screwed up in any way.

Before I dwell deeper into addressing your specific concerns, I am compelled to throw some light on what a PhD entails, IMHO.

I recently graduated, a bad time to do so when the world is locked down ina pandemic. PhD is a project which teaches a number of skills. A significant skill is, of course, becoming an expert in the very specific and narrow area of your research. But that is NOT the only important skill. In the long run, that is not even most significant.

During your PhD, you do a number of things, like learning to write a research proposal, doing the legwork, managing resources efficiently. Learning to write effectively for conferences, journals etc. If I may take the liberty, you also understand the politics in scientific and technological community. You learn the ethics behind collaborating effectively and sharing credit. You learn the art of conversation and arguing effectively, something you will need during your defence of the thesis. Itis the combination of all these activities (and more) and your skill in doing these which will help you in your career.

Now, since you are so worried about using code from another source ( assuming it was open source), it means that some of the aforementioned skills are still lacking. You need to understand that no PhD work or for that matter any body of work is done from scratch. In fact, in this world, it is foolhardy to do so.

At a stage when you are defending your thesis, why do you put yourself down by worrying about your ability to achieve a successful and rewarding career in the said field of your choice? If you have honestly worked hard and your 20% contribution ( as you pointed out) is good enough for you to successfully defend your PhD, you can also have a career in the same field. More importantly, you have also learnt a number of other significant skills which are crucial for success in any career.

When you are defending your thesis, it is not just the work you have done, but also your ability as a researcher to convincingly present your arguments and address the questions raised by the examiner. That is a skill. You have a written a paper, and got it accepted for publication. That is a skill. So focus on improving each of those skills because all of these collectively make you a good researcher.

So be confident, you have done nothing wrong. Apparently, you are on the right track. Best of luck with your defence.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.