So, if I really wanted to stand up here and give a talk that would change your life as a developer, I would be giving a talk about task.acxtreme. But that is not the talk that I am going to give. And sadly, the talk that I signed up to give is not the talk I'm going to give either. So all good talks start with a good story. And my story starts not quite 30 years ago when I was an administrator for one of these things in my mid-20s. It was actually a little bit newer model than this one, and I hate to say it, trying to find photographs of mainframe computers from the late 80s isn't as easy as the task as you would think. It's kind of like bad scans of awful marketing material. But this machine is quite, well, I'm like 6'2", 6'3", and I could see over the top of it. It's, you know, this tall. It's 30-some-odd inches deep. That right there is about six or seven, maybe eight feet long. And actually, once you put the disk drives on it and other stuff, this is a machine that goes from here to the wall. It's on a raised floor. The rest of the room that was about this size is a giant IBM mainframe. Now, the mainframe, the IBM people were kind of a different team that I kind of worked with only sometimes, but this was my problem, and it was a university. And this was what students and faculty used to do computing. And as a 20-some-odd year old going to school, we were telling war stories last night with Dave, and for me, I actually, Dave was a little bit older than I am, and admitted that he got the keys to the computer and could go in and do whatever he wanted. I got lucky enough that I was paid as a job to come in and babysit this thing all day long. So, one day, we're sitting there, and I have a terminal, old green screen terminal. I actually have two on my desk. One of them sits over in the corner and runs a monitoring process that's very similar to kind of like top, except it's showing all the logged in people and things like that. And it wasn't uncommon for there to be 100-plus up to about 300 people logged in to this system. They were also all on terminals. PCs were just kind of starting.  So I look over and out of the corner of my eye, I notice that the screen doesn't refresh. It stops.  Now the, since this is a talk on DevOps and deployment, the profanity clause and the code of economy has been removed. So the screen does it again. It kind of gets a little ways, and then it just hangs.  About 20 minutes later, as I'm trying to figure out what's going on, my Ubeenia boss comes in and says, are we having problems with the Vax? And I looked at him and said, no, the Vax isn't having a problem, but I'm pretty sure somebody else's code does. And I said, why are you asking? Because that's probably going to tell me who's having the problem. Because at this point, there's, like I said, hundreds and some odd people in the system, and I'm trying to figure out who's done what that's causing it to hang.  Because I'm not allowed to talk to the psychology department anymore because of past history. Like trying to explain to the chairman of the psychology department why his code that does a divide by zero isn't going to run. I'm not allowed to talk to them anymore. Fortunately, my boss is really good kind of a people person, and he talks to the psychology department. And I said, well, did they say exactly, and he goes, no, they just called to see if there was something wrong with it. And I was like, well, we're having these hangs. And he goes, did they tell you who it was or anything? Not really. But that gave me at least a place to look. So we tracked it down, and it's coming from some terminals that are up in the library.  Because this is kind of escalated at this point. And other people are calling because why is it just hanging up? So we get up to the library, and after a couple of minutes of observation, we can see that they are running a survey on all 20 terminals that are in the front of the library. They've logged into all of those, and they're running the survey. And I finally figure out that in the survey code, that they have added a variable weight that caused this pause after you entered the question. And to create that pause, they had written a for loop that counted to 4 million. How many of you paid attention during Sasha's talk? This was before true preemptive multitasking on a vax. It was kind of, but realistically on an interactive scale, you could want, it really was a soft scheduler and you could lock it up. And these 20 terminals were locking it up. So we got them to kind of back it down, and we got to looking at it, and somewhere in this process, the person who actually wrote the code shows up. Now there's a line of students to come take the survey because it's for the head of the psychology department, the chairman of the psychology department that I can't talk to. It's his survey that's being administered by some graduate students. And they're wanting to see what happens with this variable pause reinforcement. Frustration was what it really was. And they couldn't figure out why it was even more variable than they thought it should be. Which to me was like, okay that should invalidate your study, but to them it was just like oh yeah, who cares. So I looked at him and I said, you can't keep doing this, you've got to take it out. And it's like, well I can't, it's what the study is for. And I said, well you need to change it to a sleep. And the guy looks at me and he goes, he logs on the terminal and you can bring up help and he searches the manual and he goes, there is no sleep in VaxBasic. And I sat there and it was like, what the hell? And I look at the other guy who's my boss and he's mainly a PC guy. And he goes, oh yeah, there's no sleep in basic. And I'm like, huh?  It changed me forever. But she looks at everybody and says, oh that's okay, Paul will write you a sleep and he'll get it to you later today. And she turns off and we're all supposed to follow her back. And I was kind of like, I'll get it to you. So we get back to the office and at this stage in the world, we have from about here to that wall and all the way up to the ceiling, a wall of manuals from DEC who makes this machine. They're orange binders, three ring binders. And you would get, like every quarterly, you'd get this giant box and you'd go through and change out chapters. And it would tell you to change this page and it was literally a wall.  We wouldn't, I don't know anybody that was really good about keeping their manuals up to date. So I start going through the manuals and it's like, okay, I need to add a sleep to basic. You'd think, shouldn't be that hard, right? Well, what I got into was, the next morning is still not going well. I still haven't figured it out. And so we have the magic 800 number for DEC and I called him and I said, hey, I've got this problem. And you know what? The guy on the other end of the phone was like, oh yeah, I know that problem. What? You know this problem? Yeah, we've been arguing over whether we put sleep in the basic for a long time. What? And I said, well, can you give me some hints? He goes, oh, I can do better than that. I can send it to you on a tape. No, they're talking about sending me a nine-track tape through the US Postal Service at this day and age, maybe UPS. And I said, okay, that's great. But can you give me any ideas about how to write this code? Well, I mean, it goes into, you're going to have to basically save all the registers in the CPU, you're going to have to call, it turned into, by the time I was done, it had taken me almost about 48 hours from the time this whole thing started to produce about 120 lines of code that created a sleep that worked with basic. Because at this point in time, basic didn't even use the same call stack order that the rest of the vax did. It was kind of a hybrid language. And literally calling system calls from basic was just a nightmare. Now, fortunately, down the road it got better. At this point, anyway, so we got it, we did get them happy. We did get the survey going again. They only called, you know, about 50 times in those two days. And then, like on Friday or Monday, I can't remember, it's been a long time now. The tape shows up from deck. I slap the tape in, I load it up, and then pull it up in an editor, and start looking at it, and it is 2,500 lines of code. And about two-thirds of it is an assembler. And there's about, oh, 15 files to go along with it. Now, I've got a hundred lines of code approximately, and I get the official one that they wound up adding to the language in the next release, and it's 2,500 lines of code. So we've gone from the student who created something that worked, at least for him. He solved the problem. To me, solving the problem a little bit more, to actually the one that, you know, the engineers at Dexon in, of, hey, there's a lot of other things that you need to think about when you do this. Now, a lot of that had to do with things like clustering and dealing with older versions, and so some of that code could have gone away, because we weren't clustered or anything like that. But one of the things that this story reminds me of is, and I saw this quote just the other day from a Google SRE blog, is that we tend to not think of a lot of the people that we work with as really as smart as we are. And when I hit that problem in the university where that student actually, and most of the time when I faced a student or even a faculty member and we were talking about that Vax, I knew more than they did. There was hardly ever a time where they knew more than I did. And when he told me, it doesn't have, it doesn't have sleep, it's like, how did I not know that? And, you know, I was kind of like, how did you not know that you can't put it in a hard loop? That's like computer science 101. So sometimes we take some of these things for granted. And occasionally in the elixir world, we get all excited from some of the things that come along with Erlang and the Beam. We get all excited about things like concurrency and distribution and hot code reloading. Those things just get us excited. I mean, our first couple talks have been on concurrency. A lot of the talks here have been on concurrency. Occasionally it feels a bit like, I've got a hammer. I've got this hammer and I can solve any problem there is. Does anybody understand that problem? I see a few hands go up. Because we have internalized this concept into our deities. It is so universal that people thousands of years ago understood that I have a hammer is a concept. In fact, that hammer is the source of his power. If he lost the hammer and he didn't have any power anymore, I get confused. So anyway, I was supposed to talk about microservices, which is another one of those, I have a hammer. When we talk about microservices, I got to thinking about the world sees microservice, because the computer world sees microservices just a hair bit differently than the elixir group and the earling people seeing microservices. So I found this great slide that explains microservices. We start with spaghetti code. We then went to pie, which is somehow, what does it say? Everything is coordinated and must fit into the overall design. That's awfully optimistic, isn't it? Then we get to cupcakes. I like cupcakes. But when I saw this slide, this is what I really thought. And I love this quote that I found.  Now you all laugh, but over the last couple of days, I've done, I've walked around and I've asked a lot of people about deployment stories. Or a deployment story that is like, heck yeah, I have a good one. I get a lot of nervous laughs. Hold that, we'll get back to it. But on the microservice front, we also get into, Jimmy's in a Slack channel. I don't actually know Jimmy, and I guess he's famous in the .NET world, but he's in a Slack channel and he had a good quote so I stole it the other day. microservice teams that I rescue, they take the lack of tooling as a risk. They took it as a challenge. I climb the hill, next let's do a K2. They're dead frozen on the mountain. So many times when we look at things like distribution and hot code reloading, we get all excited and we forget to really look at those risks. We kind of get in that mentality of we got one little thing done and it's oh yeah, instead of realizing that we had 50 more pushups to do before we got the reward. So let's talk about deployment just a little bit. That's what I really wanted to talk about. And deployment tends to get this look from most everybody. And Paul Schoenfelder who wrote Distillery, when he gave his talk at ElixirConf, I pulled this out just because it was one of the first slides I made. Deployment is hard. There is an amazing number of ways that you can deploy today. It is vastly, virtually unlimited of how you can do deploys. In fact, it creates a lot of quite honestly chaos because there is so many different ways. Now, Josh Adams who runs the daily drip did a survey that came out in December which actually motivated most of this talk. And in the survey he says most 95% of the people that responded said that they're web developers. Only 14 or 12% said embedded. I'm not sure what the other ones do. Maybe they're really earling developers and they took the survey anyway. And one of the questions is how do you deploy your Elixir app? 33% are like some ad hoc way. You know what I thought when I read that? I thought they're probably copying it out of the server and doing a mix Phoenix dot run. That's what happened in my mind when I saw that line. We have between Docker and Heroka we have 60%. E-deliver is at 14%. Now, Josh included some commentary when he did the survey. And he comes in and says we need to expose users to releases earlier. And then he says, now those are his highlight. He bolded these, not me. We need more examples that clarify the simplicity and value of Erlang's distribution and Docker and Heroku inherently cripple the value the virtual machine can provide.  It's how I read it. Now, obviously, I tweeted, I tweet in anger most of the time. So I tweeted in anger to Josh and he responded with, yeah, I've gotten a lot of feedback on that one. Not everybody agrees with me there. So let's, can I, I had to use this photo because this is really what I thought Josh was doing to me.  I'm disparaging your friend Josh. Josh Adams. Was he a sponsor? I do recommend his podcast, his cast daily drip. It's I pay him money for it and I do recommend it. So hot code reloading is one of those two things that he's inherently talking about. You can't do with Docker and Heroku. What I am here to tell you is that every deployment talk that I have seen in Elixir up to this point has done a really amazing hot code reloading demo. What I'm going to tell you is do not do that. You don't jump into hot code reloading day one. You don't try to go scale Everest the first thing you do and it's that hard. It's that complicated. It's not nearly as easy as the demos show. You can get there. And I think when Francesco and I were talking about this yesterday, he was like, you don't, you know, go this way. You take it this way. We saw some easy problems first. And in fact, the Paul who writes distillery, his comment is unless you have a strong reason for using hot upgrades, it's almost always similar to do rolling releases. Until you get to the point that a rolling release absolutely doesn't work for you, that's the point that you do hot code reloading. I can't tell you how many people I've run into that bailed out of Elixir because they couldn't figure out hot code reloading in the first 30 days they were trying to do a project. Because it's tough. And it's going to work, you're going to think, oh, I'm going to get some easy returns out of it and then it's going to break. And it really takes a lot of work to start figuring it out. You're going to dig into Erlang deep. So don't start with hot code reloading right away. The second one is distributed. So when we run under Heroku, we obviously, we can't talk. The only thing you can do is talk to the outside, the web connection. You can't talk to other machines. With Docker trying to network between multiple machines, it's almost, unless you're running under something like Kubernetes, it's almost impossible to also get out of that, to do the networking for the cluster. If you're running something like Kubernetes, actually towards the end I'll show you how to do that. But again, unless you've sat down and watched Francesco's talk about twice and you've read the last three chapters of his book about 10 times, and you can actually take your risk checklist for what are the risks of distributed computing and put down here's what we're doing to deal with those risks, you're probably not ready for it. In fact, if you look at Francesco's book on scaling Erlang, the last three chapters are purely about clustering. And what's interesting about them is they really aren't a how-to. They're really three chapters of, oh, here's all the things that you've got to think about. Because things get complicated really quick. And it tends to be one of those things that we feel like, is it not going to play the video? It feels like just as we get... Yeah, just as we get to the top, we feel like we're just falling back down. Actually, I could let that video play for a while because it just kind of makes me feel... Oh, we're back to that. So let's talk about releases just a little bit because I really have no idea how much time I have left. Am I really 35 minutes in? Okay, so releases. The thing you need to know, there are a lot of you here that are newer to Elixir, and one of the things that you need to understand right away is that this is not Node or Ruby. Those are interpreted languages that are not designed to be compiled first. Erlang doesn't really... It compiles the Beam files. We create a release that also includes the runtime. Actually, if you look at Francesco's book, the longest chapter in the book is 53 pages long, and it's all about creating releases. One of the things you need to understand first is that your environment that you are going to build the release under needs to be the same environment that you deploy to. Now, there's a few of the smarter kids in the room that are looking at me going, oh, that's not 100% true. It's only 99.998% true.  Because what you're going to do is you're going to add ComeOnIn or you're going to add Jokun Java token libraries to your code that's going to compile an F, and once you have that compiled code, it's not going to run and you're going to have problems. And I'm not talking that they need to be close in matching. They need to match. Compiling under Ubuntu and trying to run under Debian is going to cause your world to pain. I know somebody who just fought this problem for like a week, and I was like, yeah, they're doing the same.  Why am I getting these open SSL areas? Because it's different open SSL. This one comment, this one slide. If you don't go look at task.acingstream, remember this. So distillery. The next thing I'm going to tell you is that as I ask people about deployment, a lot of them experience pain with Docker. I'm going to tell you that one of the ways that you can be successful is to look at using Docker as your way of creating a release. So we build the release with a Docker container that matches our deployment environment. We then take that release and either put it in another Docker container or we deploy it out to the server. But that gives us a way of doing that. And it's not particularly the easiest thing in the world to figure out how to do, but you can. First is that we're going to add a Docker ignore file, which is just like our get ignore, so that as we copy files, it knows what not to copy. And I'm sorry, that's kind of small. You can see it on the slides afterwards. We're going to create a release directory or a releases directory, which is kind of how EXRM used to do it and distillery now uses the build directory. So we're going to create a directory that we can save our releases to. And we're going to add that to our get ignore. We're going to have to open up that directory to be writable so that Docker can write into it. And then we're going to tell distillery that we're going to put, our output is going to go into that specific directory. Otherwise it's going to use the build directory. We're then going to create a Docker file. I've done something really simple here and just used the mainstream official Elixir one. You can get as crazy as you want on what you use to start with. I don't particularly love the idea, I tend to want to use something like this or I tend to want to do one of my own that's completely mine. I don't tend to like to rely on others except for kind of as a boilerplate to start with. We do things like put an environment thing at the top so that we can force the whole thing to reload because Docker does some nice caching for us. We install hex and rebar which don't come standard in it. We tell it where we're going to put our application and then we copy our application into it and we get our dependencies. We stop there. This way our stuff is basically cached in the Docker container and then we can come and tell Docker we want to build that file and then we can come and tell Docker I want to take the releases directory that I've created. I want to mount that into the Docker container as the releases directory and then I want to do a mixed release which is just the distillery command to create a release. As we do this, we create a release. You can actually with distillery you can wind up with multiple releases that come through as a tar.gz file and this is where the fun actually starts because at this point once I have a release it's really just a matter of how do I get it to the server and there's a lot of, quite honestly, for me personally that's just a copy command. That's just an scp to get it out there. You untar it, you then issue a command to restart the process. There's fancy ways of doing it. For some of you, when I look at things like Kubernetes I'm actually taking that release and then packing it in a second Docker file. In fact if you look there's articles out there about doing a two phase Docker or doing a double Docker. You do one to compile it because we have this giant container because that build container that I showed you if you do one for Phoenix and actually have node in it too that container is like a gigabyte big. I mean it's huge. 800, 900 megabytes. For deployment that's kind of crazy. We don't want to do that. So we really create a second one to go through and actually hold the release. Clustering. I'm like totally out of time I think. Anybody? They're not in here telling me I have to quit so let's just keep going. Clustering. Now you're going to go out and think I need to cluster and you're going to do a Google search and you're going to get this document right here. And at the end of this document let's see what the next slide is. Oh, there we go. This document. Sorry, getting ahead of myself. And it's going to tell you that you add a name and a cookie onto your... onto the IEX command and boom voila you have clustering. And it does work. It works great. Until you figure out that, well, wait a minute, I don't actually know what the IP addresses are for my machines at runtime. Because we use all this automated stuff and it could be anything. Anything. So then you spend some time digging and looking and you come across a couple of other packages. Paul Schoen-Velder who writes distillery and Timex has a lib cluster. There's another one called Perige. Lib cluster has ways of doing it with the Kubernetes API. It also uses the built-in EPMD daemon that comes with Elixir. And then he's got a gossip protocol where it basically does a multicast to try to find the other ones. Perige is a DNS based. They do DNS lookups to try to find the other hosts that are there. Now when Sasha was given his talk he had the thing that did the summation. And if you notice 1 to 100, how does, if you have 100 Erlang nodes in your cluster how many connections do you actually have? 5,050. Because each node connects to every other node. Realistically right now today I have seen 50 used as about the biggest Erlang cluster.  That's going to change. There is some, I mean if you're into it, there is some absolutely fascinating research and articles going into scalable distributed Erlang. The word you're looking for scalable distributed Erlang of what they're doing. They're looking to do a 10x magnitude. They're looking to go up to 1,000 at least. It will basically be a way for you to be able to create a tree of nodes and have basically individual ones that then connect. Take the process supervision concept that we've had and expand that into nodes and you see some real similarities. So that's coming down the pipe. It's actually, they're doing a lot of things now. One of the things that gets does trip up people and I actually we had at the Oklahoma City Elixir Group the other night we were telling horror stories about deployment and somebody mentioned that their team had actually spent days trying to figure out why their Phoenix presence was different between nodes. And these were smart, these were quite honestly some smarter people that I know and it hadn't really even the thought that they weren't actually connecting those nodes in a distributed manner. You do have to actually connect those nodes to each other for Phoenix PubSub to work. Believe it or not. When we talk about clustering, we get into some things that also you have to start thinking about. We get into things like the registry. The registry is a local is local to a node. It's not a distributed registry. Again the Erlang people are actually working on a distributed registry. In the meantime, Jose and James did the local registry. Local registry is also one of those things that I think if you like, if I wanted to give a good talk I should have given a talk about the registry. Sasha's con cash is absolutely wonderful if you're not using it already you can replace redis quite literally almost within minutes with it. Again, it's a local cash that doesn't mean that you can't get to it in a distributed manner but it does not run distributed it is a local cash. Phoenix PubSub is a distributed system where those messages are going to go back and forth and it's going to replicate the data in there. All right it says that I am 46 minutes in so that means that I am only a minute over but I don't have them come in here and tell me to stop. Do I have any questions? So let me just before I finish up let me just say if you take something away from this I want you to take away that you're only losing something with Docker and Heroku if you absolutely need hotcode reloading and distribution and those aren't things to start with those are things to add as you need them. If you're in a company where Docker is your primary way of handling deployment and you've got an elixir problem you've got a problem that comes up and it's you know I can solve this problem I can solve that problem in elixir and deploy it to Heroku without a problem. Raise your hand get it out there just because you don't have those distributed capabilities day one and have hotcode reloading ready and all that on day one is in a problem it's an opportunity until you actually have to have them and you're going to kick me off the stage aren't you? Thank you all. I'm Paul I'm here. Come ask me questions I'd love to talk to you.


Okay, I would like to welcome all of you to the main workshop on computational fluid dynamics. Again at the beginning, let me take this opportunity to thank Professor Patak and his team to have given us the chance to do this workshop. At the same time, I would like to thank all the remote centers and the coordinators who have put in lot of effort and hard work to get this thing going. We hope that in the next 10 days, we will have a fruitful interaction and as I said earlier at the end of the 10 days, we hope that you will have sufficient material with which you can go back and try to develop your own CFD course in your college. So let me continue, let me just spend the initial first maybe half an hour or so on some general points that I would like to point out. We are going to be dealing with fluid dynamics and heat transfer in principle really. Of course, we are going to do it from a computational point of view, but if you look at fluid dynamics and heat transfer on their own, typically what we are interested in fluid dynamics and heat transfer analysis is the determination of various fields of interest. So the various fields of interest are the velocity field, pressure field, temperature field, density field if you are dealing with a compressible flow for example. And using these primary fields, you can always come up with the quantities that are of engineering interest and the typical quantities that we are interested are lift or drag types of forces in fluid mechanics. If you look at heat transfer applications, we are usually interested in heat transfer coefficient determination or the Nusselt number determination which can be done once the heat transfer is determined. So the point here is that once you have decided or determined I should say the velocity field, temperature field in particular, you can go ahead and find out the forces that are acting on your body of interest or the heat transfer coefficient etc. You can also note that sometime it is useful to know little bit more about the flow field and what we do then is we deal with in that case some derived flow fields. So if you want to know how a particular flow field behaves, one quantity of interest that we normally deal with is what is called as a vorticity and as the workshop progresses we will know what this vorticity is in detail. But once you know for example, the velocity field, you can always calculate the vorticity field which will give you additional information about the flow field. So this is what I will call the ultimate objective in a fluid dynamics and heat transfer analysis and we are going to try to achieve this through a computational approach. So what I have listed at the bottom of the slide are the various options available to achieve this objective. So we can we can resort to an analytical approach or an experimental approach or a computational approach which is what we are going to follow in this course. So let us just quickly go through what these different approaches are, many of you will probably know these but this is just to set the background. So if you are dealing with an analytical approach, what we normally start with is a set of governing equations which are essentially mathematical representations of conservation of mass, momentum and energy principles and depending on the problem that we are dealing with, we need to sometimes add some more equations of interest. For example, if you are dealing with a compressible flow of a gas, usually you need some sort of an equation of state to be added along with the conservation equations. If you are dealing with a turbulence flow kind of a situation, we need additional equations which we call the turbulence closure equations. Sometimes there are chemical reactions happening in the flow and in order to model those correctly, you need an appropriate chemical reaction model. So these are additional complexities that you may need to include. So formal analytical approach will actually try to obtain what we call closed form solutions and little later in this workshop in a few days from now, we are actually going to obtain some of these closed form solutions for some very simple situations for the governing equations. So as the workshop proceeds, you will get to understand what is meant by a closed form solution. So right now I do not want to spend too much time on it. You will also realize that typically when we are dealing with analytical or theoretical approach, you need to resort to advanced mathematical techniques. The closed form solutions that we will work out in this workshop will not really require extremely advanced mathematical techniques, we will resort to an intermediate level technique. And usually if you see and read research papers on analytical work in fluid mechanics or heat transfer, usually you require advanced techniques in mathematics. The biggest issue with the analytical approach is that these are usually limited to some very simple geometrical and physical situations. So as such these are fairly restricted. Usually what we do with analytical approach is that the analytical solutions are used as a benchmark solution for let us say a numerical solution that you are generating. So let us quickly talk about the experimental approach. In the inaugural session, Professor Date mentioned that the experimental approach involved what we call dimensional analysis or a model study. And as you know in experiments, what we do is we actually build these setups in the laboratory and carry out measurement of the relevant quantities which can be velocity, pressure, temperature, etc. And to do these measurements, fairly sophisticated techniques are available nowadays. We are not going to get into those details. But having measured let us say the velocity, pressure, temperature, data, etc. in a lab setting, what you are in a situation to do is analysis of that measurement data and carrying out the analysis, you are able to generate the required flow field information. Now the good thing about experiments is that they are capable of being most realistic meaning the kind of situation that you want to analyze in reality, you can actually try to replicate quite reasonably in a lab setting. However, as many of you would probably know that the biggest issue is that these are very time consuming, these can be very time consuming and some of these sophisticated experiments can be extremely expensive. So these are somewhat the limitations in addition to some equipment issues and measurement issues which I do not want to get into. The key problem that many of these experimental investigations are facing I would say is that they are very, very expensive. So then what is going on nowadays to a good extent is what we utilize as a computational or a numerical approach. So what is this then? So what we do is that we use a computer to solve the governing equations. So the first thing that you should note is that when we are going to deal with a numerical solution, you necessarily start with a set of governing equations. So this is something common between the analytical approach and the numerical approach let us say. As many of you are aware the solution that you obtain using a numerical approach will be in terms of numbers and to make sense of those numbers what you do is you go ahead and analyze the solution. So when you want to analyze the solution, you will typically generate various types of plots. They can be line plots, they can be contour plots, they can be vector plots which will give you the information about the flow field. So the good thing about computational or numerical approach is that in principle it can handle complicated geometries and complicated physics as well. This is a big, big advantage. There are obviously problems, nothing is foolproof and with the numerical approach as well there are several aspects which we need to take into account before you can say that your numerical simulation is actually providing something correct. And some of those issues I have listed here, there are truncation errors, the model limitations which is not per say really a drawback of the numerical method but the model that you deal with itself can be limited. And then there are other issues which the numerical schemes that you implement will involve and as time goes on some of these ideas will be more clear in the next two weeks. The biggest attractive feature I would say about the numerical or the computational approach is that it is really, really affordable as you can know from the cost of computers and related hardware. It is really affordable to anyone and that is why it scores really high over experiments where I am talking about experiments I am referring to lab scale experiment in terms of the cost and therefore they are extremely popular. The computational approach in particular in the recent times has become extremely popular. So this is what we are going to really focus on in this course as you know. However, again I want to point out here with the cursor that before we actually get on to a numerical solution for a fluid dynamic problem or heat transfer problem we need to understand the governing equations carefully and correctly and that is what the first part of this course will focus on namely understanding the governing equation. So let me try to come up with some sort of a description for this computational fluid dynamics and I am also going to add the heat transfer part to it activity so to say. So what we do in this CFD activity is that there are these governing equations which can be either in integral form or the differential form those equations governing equations that is they are converted into algebraic equations a process which we call discretization and these details will be covered later as we go in time and the algebraic equations then which are approximate of course are going to be solved using the computer finally obtaining the flow information on a discrete basis. So what I mean by discrete basis is that there will be a certain domain of interest that domain of interest will be divided into several sub domains and for each sub domain we will obtain let us say a velocity number, a pressure number, a temperature number and so on. So as I have summarized here the final outcome of a CFD simulation I should say more than analysis is a collection of numbers and in order to make sense of those numbers you have to do what we call a post processing which will involve creating those plots and vector plots and contour plots and so on. So at this point I just want to introduce a description of what we mean by this CFD activity or the CFDHT activity in particular and as time goes on you will realize that we are going to follow one step at a time in this description and carry out these processes. So just few words on why we are interested in doing this CFD sort of analysis you can look at it from three different angles if you want. Those who are already performing research work will probably appreciate the fact that CFD is a really good complementary tool to experiments and theory and in particular the people who are involved in experimental work will realize that many times in experiments you cannot really measure a certain flow field information. So in particular that vorticity field that I was talking about you cannot really measure it from the velocity measurements you can calculate the vorticity field but in many times the velocity measurement techniques are also not available because they are very expensive. So many times what you end up doing in an experimental work is an overall system level measurement whereas detailed flow measurement cannot be done. However the CFD analysis will permit you to find out detailed flow information and that way it can serve as a complementary tool to an experimental work. If you are in the business of designing and analysis of systems the biggest advantage that the CFD analysis can offer is a cost effective tool in terms of running several what if scenarios to arrive at what we will call some sort of an optimum design. So what I mean by this is that there will be a bunch of parameters which will govern your system. So you want to analyze the effect of say one parameter on the system and then eventually you want to design this system by optimizing this set of parameters. To do this experimentally it can take really long time whereas the CFD analysis can help in doing this very fast. And the third aspect which I have actually tried to highlight in red color is perhaps the main focus of this workshop in the sense that we are all teachers and we would like to incorporate this CFD in our curriculum. The purpose being that it should serve as a companion tool to teaching fluid dynamics and heat transfer subjects. Many times what happens is when you deal with theory of fluid dynamics and heat transfer many of the subtle aspects of these subjects are not appreciated by students. However, if a computational fluid dynamics tool is developed and some sort of an animation let us say or a vector plot or a contour plot is developed for a flow situation that you are dealing with many times the appreciation for the kind of problem that is getting solved is really increased students really like it. And in general what our experience has been is that it helps in generating interest in fluid dynamics and heat transfer phenomena in the minds of students. If they are able to quickly analyze a flow or a heat transfer situation through the use of this CFD tool. So, this third aspect which I have highlighted is in our opinion perhaps the most important aspect of this workshop. So, please keep in mind that all our efforts to design this course the workshop that is have been gone into the third aspect in some sense. So, we would like to generate material using which you can actually start teaching a CFDHT type course in your institution. So, with all that background let me now try to outline the formal objectives of the present workshop and the present course. So, what we have tried to do is we have tried to come up with a material which will introduce fundamentals of CFDHT to all of you and from that point of view the level of the material is going to be typically advanced undergraduate or at the most beginning post graduate level. So, usually we have offered these kinds of courses here in IAT to fourth year undergraduate students or first year masters students and the level of the material is essentially at that. What we will begin with in this first week first few days is a review of essential fluid dynamics as I call it or as we call it. So, what we mean by essential fluid dynamics is that we are obviously not going to be able to cover the entire fluid mechanics class. Whatever is the absolute required part from fluid dynamics for the CFD class that we are going to cover and a little bit more on the side to give a flavor of what is involved in the fluid mechanics course. The idea really is that we want to make sure that everyone who is participating in this course is essentially at the same level. So, you can treat this as a background building exercise for the CFDHT. Once we go to the CFDHT part the main focus is really to introduce the methods and the algorithms let us say that are working we call behind the screen when a CFD software is going to operate. Many of you I am sure are familiar with few different types of CFD software and when you run a CFD software to solve a problem what sort of a method and algorithm is actually carrying out the calculation behind the screen is what we are going to try to introduce in this course. And in that in that manner the focus is going to be on the introduction of the methods and not on the numerical analysis. The difference between the method and the analysis will be clear as we go on in the workshop. So, let me not spend too much time right now on trying to explain what I mean by a numerical analysis and a numerical method. But roughly speaking numerical method is something that is actually carrying out your solution and that is what we are interested to convey to you in as clear a manner. In order for these numerical methods to be tested what we have come up with is a bunch of model problems. So, these are not necessarily very high complexity problems these are somewhat simpler problems. The idea is that once you understand a method we want to actually implement that method to solve some of these model problems and then analyze their numerical solutions. And this is going to be done through a set of codes which we have developed in an open source programming environment called Sylab. I think all remote centers are now equipped with Sylab on their computers that the course coordinators have also undergone a little bit of training on this Sylab. So, Sylab is something very similar to MATLAB as many of you know. Only thing is that this is an open source software so that it is freely available you can download it from their website, install it on your machine and start using it without any problem. The idea is that the open source software should help in understanding these kinds of solutions to anyone you do not have to necessarily restrict yourself to a commercial software. And the idea is that of course that these methods that you are going to learn should be coded and tested in a open source software such as Sylab. So, that everyone is at the same level you do not necessarily need to have an access to anything sophisticated and of course Sylab is reasonably sophisticated, but something that is more proprietary. The one point that I would like to emphasize here quite clearly is that we are not going to introduce any specific CFD software this part was quite clearly explained in the coordinator workshop as well. So, I really hope that the coordinators will convey this point clearly to the participants. Our purpose is to really generate material which you can use to teach a course, a first level course as we call it on CFDHT in your institutions. And in doing that what we want you to do is to understand the methods which are going to be able to build a CFD software. So, the idea is that really this is of course a start, but from the start eventually you may be able to build your own CFD software. It may take a long time, but that is fine. I think our purpose is to enable you with the tools using which you can actually generate your own CFD software. So, please keep in mind that we will not be able to answer any questions pertaining to any specific CFD software partly because we are not using the software at all here. So, we are not used to it and the objective and the focus of the course will not be on introduction of any CFD software. So, I sincerely request all participants not to really ask any questions on the use of any specific software primarily because we are not really used to any of it and we will not be able to answer any of those questions. So, we will really request cooperation on that. So, let us look at what is the expected outcome then of the course. First and foremost we want you to understand the governing equations. So, what we mean by understand the governing equations is that the origin of these, the derivations of these and some manipulations of these governing equations are an absolute essential before you get on to the CFD part. So, that is the first and foremost objective. Having done that we would like you to understand the basic techniques in CFDHT. Again I would like to emphasize here that this is the first level course and we want to make sure that the absolute basic techniques are as clearly conveyed to you as we can. Using these basic techniques what we want you to develop is a capability to write your own computer codes to appreciate how a software works really. Clearly a software is far more advanced than the level of coding that is going to be involved in this course, but that is not really the point. The point is that you should know how to do it on your own. So, that if required at any point in time later in time you should be able to do it on your own. This is not to say that do not use a software that is not the point at all, but you should be also equipped with the tools using which you can actually generate your own software in some sense. And finally, perhaps the most important of all these expected outcomes is that we want to generate a knowledge base here for all of you. So, that you can go ahead and teach a CFDHT course in due course of time maybe not immediately, but within a semester's time or maybe even a year's time within your own institution and that is really the absolute key here for this course. Based on the material that we will cover here, we are pretty confident that you should be in a position to generate your own course in your own institution. So, before we get on with the fluid mechanics part, let me just quickly show you an example of what a CFD analysis is. Many of you are familiar with this kind of work perhaps, but just for completeness let me go through it. So, this is a situation which I have picked from a PhD thesis that was defended last year in our department. So, what we are seeing is a so called double cone situation and a very high Mach number flow which is a compressible flow is going past this double cone which will result in many of these complex features which I will show in a minute. So, this is the physical situation that we want to solve. So, we want to solve the flow field around this what we call it double cone situation. So, in a CFD analysis what we end up doing is the first thing is to set the problem. So, this is what the problem setting is essentially if you see we have what is called as a domain of interest within this domain of interest the numerical solution will be obtained. The domain will always have some boundary conditions and in this particular case the specific boundary conditions have been marked. Any CFD analysis will proceed in these steps. So, there is a physical setting corresponding to which there will be a problem setting which I am showing right now on the screen. Having gone through the problem setting what you do is then you generate what is called as a computational mesh which is basically dividing or subdividing if you want. This overall domain of interest into small individual domains and I am showing examples of what we call a structured grid. You must have heard this terminology many of you and there is something called unstructured grid even if these images are not very clearly visible do not worry about it. This is just to introduce you to what sort of steps that one follows when one does a CFD analysis.  In this particular case that I am showing it is a viscous compressible flow. So, you end up solving the viscous governing equations which are the Navier-Stokes equations. But these are not incompressible so we will solve the compressible form of the Navier-Stokes equations in this case. Having solved this eventually you generate that set of numbers as I said as the numerical solution using which you can then start analyzing the solution. And when we want to analyze that solution typically we can generate various types of plots and I will show you only one type of contour plot that has been generated in this particular solution which is shown here on the screen it is what we will call a Mach number contours. Do not worry about the details the technical details of this particular simulation. What I wanted to point out here to you right now is the kind of steps that you will typically follow in a CFD analysis starting from a problem setting, mesh generation, then the selection of appropriate governing equations and their solutions. And finally, when you generate those numbers as the numerical solution you go to a post processing module of your CFD analysis and come up with a set of plots which can be a contour plot as I am showing here on the screen or they could be vector plots or streamline plots or various other things which you will get familiar with as the workshop proceeds. So, that is more or less the sort of introduction that I wanted to give you. I hope the objective of the workshop is clear and I will really appreciate if all of us the participants, the coordinators will stick to the theme of the workshop namely a first level course in CFDHT which you can teach at perhaps the fourth year undergraduate level or a first year post graduate masters level. So, with this background what we are in a position is to begin the first part of the course which is what we are calling essentials of fluid dynamics. And I have outlined the underlined the word essentials because as I said again a little bit earlier. We are not really going to cover each and every aspect of fluid dynamics, but the minimal set of topics that we think are essential to understand the CFDHT as we are going to do later. So, these are the list of topics that we will cover in this part one which will involve a introduction part and a little bit of discussion on the mathematical background that will be required for this class or for this workshop. When you come to fluid dynamics there are a couple of approaches that you can employ for the analysis. While the integral analysis is not necessarily a requirement for a CFDHT background it is a very useful tool to know and to be able to use. And that is why today later we will actually going to begin with the integral analysis first. There are two purposes actually to introduce this integral analysis. One is as I said it is an independent analysis tool which you can use for fluid dynamics analysis. The second objective to introduce this integral analysis is that you can actually obtain the differential equations of motion, the governing equations of motion using the integral analysis through certain mathematical manipulations. Some textbooks do follow this approach and in case you are going to refer to such textbooks, you should be in a position to appreciate what they are doing and that is perhaps one of the reasons that we decided to include this integral analysis in the course material. After which we will discuss what we will call kinematics of fluid motion. Kinematics is very important part because many of your post processing activities in the CFD analysis will involve utilization of ideas and concepts from kinematics such as streamline generation or path line generation and so on. Volticity for example, field generation and that is the reason it is essential to understand what is meant by kinematics and what sort of things are involved in kinematics. So, that will be the next topic. After that we will actually formally talk about the differential analysis in fluid dynamics wherein we will derive all governing equations of fluid dynamics on a differential basis. Before getting on to the numerical solutions of these governing equations, we want to spend some time on generating some analytical solutions of these governing equations for some specific situations. Again the purpose of doing this analytical solutions is that you should be in a position to be able to manipulate these governing equations which will be part of this exercise. Also some of these analytical solutions that we are going to obtain are going to be used as the so called benchmarking solutions for the numerical solutions that we will generate later. The last part in this first half of the course is going to be an introduction to what we call a finite difference approach or a finite difference method which is one of the two main classical numerical solution methodologies using which you can solve these governing equations on a computer. The focus of the course is actually going to be on what we will call a finite volume method which will basically occupy the entire second half of the course. However, some of those finite volume techniques require some ideas from finite differencing as well. So, the idea is that we want to introduce those ideas right here at the end of the first half. It is possible that some of you are independently interested in knowing finite differencing as well. So, the material that we have generated here should be sufficient for you to get going with the finite differencing. Eventually, we will let you know if you want to focus more on finite differencing which books to refer to, but keep in mind that finite differencing is not going to be the focus of this course. We are going to focus on finite volume method which will be in the later half of the course. This is just an introduction to the numerical solution methodology as we call it. So, this is the list of topics in the first half of the course. Let me immediately show you the list of reference books for part 1 which you can go through at your leisure of course. There are three sets of books that I have listed here. The first three refer to the fluid mechanics. All three are essentially at the undergraduate level and by no means these three are the best three. There are hundreds of fluid mechanics books available as many of you are probably aware of. Some of these three are routinely used in the fluid mechanics courses that we teach here at IIT. We think that these three are forming a really good set of undergraduate fluid mechanics books and that is why I have listed these three here. Again keep in mind that there are plenty more available and many of the other ones are similar to these three. So, feel free to use your own preferred book. There is no hard and fast rule that these three have to be used. As far as the engineering mathematics that is concerned as a background use for the fluid mechanics as well as for the CFDHD. I have listed two fairly user friendly engineering mathematics books that I have come across. These are the next two here and one good thing about the first five books that are listed in here is that they are all available in Indian edition. So, you can get them at a cheaper price which is a good advantage. When it comes to the finite differencing part which is the last part of this first half let us say the two books which can be recommended as good for beginners are listed at the end of this list. These are the two books. Many of you I am sure are familiar with John Anderson's CFD book. So, I do not need to talk about it I suppose. The other one the Hoffman and Chiang book is also dedicated completely to finite differencing and although unfortunately it is not easily available in India. It is one of the nicer user friendly books that has been written in finite differencing. This is again a representative list. What we will do is toward the end of the workshop we will come up with a comprehensive list for fluid mechanics, engineering mathematics and of course the CFD part and we will upload it on the model. So, that you can download the list and go through it and figure out which ones you can obtain. But for now this list is sufficient in my opinion to at least begin with. So, with this we are in a position to now begin with the formal course. In some sense the first part of the course which is on fluid mechanics. So, as many of you know what we deal with in fluid mechanics is equilibrium and motion of fluids. So, clearly the kinds of forces that are at play when the fluid is in equilibrium or if it is moving is what we are really interested in. I do not need to get into the details of what sort of applications of fluid mechanics we are aware of. Really there are hundreds and hundreds of applications of fluid mechanics whether it is a branch of science or engineering or whether you are looking out of the window and looking at what is happening around you as a natural phenomenon such as a flight of bird or the wind flowing, rain falling, rivers flowing all sorts of things that you can relate to fluid mechanics. Clearly it is not just science and engineering and natural phenomena where you can see fluid mechanics. You can see fluid mechanics in sports. Just yesterday the French open was concluded. I do not know how many of you have watched it, but if you watched it you perhaps saw that there was something called a top spin involved heavily in this French open. And if you want to analyze the motion of the ball the tennis ball after having hit a top spin by a player you really have to resort to fluid mechanics to understand how the how the trajectory of that ball is going to be and how the ball is going to behave after having hit a top spin. So, it is very interesting that many sports which involve ball games essentially will involve principles of fluid mechanics. So, it is not just science and engineering that we are dealing with when it comes to fluid mechanics. And within engineering also since we are part of the engineering community more or less all of us are at least. Within engineering also it is mechanical, it is aerospace, it is chemical, it is metallurgy, it is civil. All these branches and even perhaps more some of the newer branches such as biomedical engineering is heavily involved in use of fluid mechanics. So, it is a very vast reaching subject as many of you know. So, then what do we what do we mean by a fluid? So, the way we are going to define a fluid is that it is a substance which cannot resist the shear force no matter how small the shear force is when the fluid is at rest. So, if this fluid if it is at rest that is and if any amount of shear force is applied to it it cannot maintain a static equilibrium it will start flowing. However, as we go ahead in this course you will realize that the fluid can actually resist shear forces when it is in motion it cannot resist a shear force when it is in equilibrium, but if it is in motion it can. So, that is the way we want to define a fluid and more or less all of you are familiar I suppose with this definition of a fluid. So, as we know we are dealing with fluids which are both liquids as well as gases there is nothing new about that and we also perhaps know that there are two approaches that we routinely employ when it comes to analysis of fluid motions and equilibrium if you want. One is what is called as the microscopic or molecular approach and the other one is the microscopic approach. If you want to look at the molecular approach or the microscopic approach what we end up doing is that we actually follow each molecule in some sense that will constitute a fluid mass and then eventually an aggregate behavior of a very large number of molecules will actually give you the overall behavior of the fluid. It is an elegant approach but it is very very difficult to implement practically and those who are implementing it practically will end up employing some sort of a statistical method per say we cannot really follow each and every molecule. So, some sort of a statistical approach is employed usually this approach is not that popular in standard engineering applications only under certain specific situations you end up following this approach. Some of you are probably familiar that if you are dealing with rarefied gas dynamics for example, you will end up following a molecular approach in many cases. On the other hand usually what we end up following is what we call a macroscopic approach which essentially gives you an overall or average behavior of the fluid medium and the cornerstone of this macroscopic approach is what we will call a continuum model. So, what we do in a continuum model is we assume that there is a continuous distribution of fluid matter and the related properties of the fluid in the domain of interest and we completely disregard the molecular structure. Clearly the fluid is composed of molecules but if this continuum model is applicable we do not have to bother about the molecular structure at all we can completely disregard it and treat the fluid medium as a continuous distribution of matter and along with it the continuous distribution of associated properties of the fluid. So, what I mean by these properties is the standard properties such as pressure, density, maybe temperature if there is a heat transfer going through the fluid and so on. So, if we are in a position to employ this continuum model the biggest advantage turns out to be that we can employ methods of differential calculus to the analysis of fluid motions. The reason is because then that we are in a position to use a point wise smooth distribution of these fluid properties resulting in the use of differential calculus. So, question is typically when is this continuum model applicable and many of you would know this. So, I do not want to spend too much time on this but the idea is that if in a sufficiently small volume of space if there are very large number of molecules available and by large we are talking about 10 to the power 25, 26 and so on. What ends up happening is that no matter how small the volume of interest that you shrink there will always be sufficient number of molecules inside that volume and then some sort of an average property based on a very large number of molecules inside this small elemental volume you can come up with on a statistical basis and you can assign that as the point value of a property such as density let us say or pressure and thereby you are in a position to come up with this point wise distribution of properties. So, the governing parameter in this case as to when we can treat a situation applicable as a continuum situation or not turns out to be this so called Knudsen number which is defined as the ratio of mean free path to the characteristic dimension of technically the problem of interest that you are dealing with. So, for example, if the problem of interest that you are dealing with is a flow inside a pipe the characteristic dimension this L here capital L is usually the diameter. So, if you form a ratio of the mean free path of the molecules within the fluid that you are dealing with to the diameter you form what is called as the Knudsen number and if the Knudsen number is smaller than approximately 0.001 then we are in a position to say that the continuum model is valid essentially what we are saying is that no matter how small a volume that we look at there will always be sufficient number of molecules inside that volume. So, that some sort of a statistically meaningful value of properties such as density pressure etcetera can be assigned for that particular volume and will be called as the point value at that point. So, really speaking there is no point from a geometrical point of view it some sort of a small elemental volume which can be perhaps of the order of microns or even less may be within which there are always very large number of molecules available if the continuum model is valid. Usually you will see that the standard engineering applications in mechanical engineering in particular at least the classical mechanical engineering I should say you will always see that this continuum model is applicable and we do not have to ever bother about doing anything else. It is just that if you are dealing with specific situations such as highly rarefied flows which are typically dealt with by aerospace people or in new field what we call a micro scale or a nano scale flow which can be very much within mechanical engineering. You may have to deal with a non continuum situation in which case you have to deal with the entire problem differently. However for all our standard problems that we will deal with we will essentially assume that continuum model is valid meaning that the distribution of fluid matter and the associated properties can be assumed to be nice and smooth and uniform and methods of differential calculus will employ. So, this is the basic assumption with which we will proceed in this course. We can always talk about the relevant important properties that we will deal with the first one is pressure. We are all aware of what is more or less meant by pressure technically you can talk about pressure from a molecular point of view. It turns out to be a compressive stress. So, pressure is considered to be compressive in nature. Then we will deal with various other quantities such as density which is by the way this symbol is rho. I think when the slides were converted into pdf this turned out to be R but please note that this is rho. So, density is something that we know as mass per unit volume associated with it is what is called as a specific weight which is weight per unit volume and the reciprocal of density which is the specific volume. And then most importantly in fluid mechanics we will deal with what is called as dynamic viscosity which is denoted by mu. I think again in your printed slide it is possible that this is printed as m but this should be mu the Greek symbol. So, what does the dynamic viscosity describe? It describes essentially or it characterizes I should say the resistance offered by a fluid in motion to the applied shear force. Remember that if the fluid is in equilibrium static equilibrium that is it cannot really resist shear forces. However, when it is in motion it can resist the shear forces and the resistance offered by the fluid when it is in motion to the applied shear force is characterized by this property called the dynamic viscosity mu which is one of the most important properties that we will deal with. So, a very simple situation that is usually described to talk about this dynamic viscosity and here what we are talking about is what we will call a simple parallel shear flow where what we have is a pair of horizontal plates if you wish. These plates are such that the area of cross section of the plate is very very large in their plane and the distance with which they are separated from each other is much much smaller than either the length of the plate or the depth of the plate into the plane of the paper and what we are looking at here is a vertical segment the two ends of which are P and Q the vertical segment is marked as a segment in the fluid. So, clearly there is a viscous fluid that is filling the gap between these two plates. What we are looking at is we call a simple shear flow which is essentially that we have only the x component of the velocity which we will normally denote by the letter u and a simple parallel shear flow implies that this x component of the velocity u is a function of only y coordinate. So, as you go from the bottom plate to the top plate the x velocity will keep changing that is what we mean by u as a function of y. However, the u velocity will not change from one axial location to the next axial location. So, this is a very special situation, but this is used to come up with what we mean by the dynamic viscosity. So, coming back to this vertical segment P Q what we have here since the x velocity is going to be varying in the y direction we have u as the value of the x velocity at point P here and something else at point Q which is separated by a distance of delta y in the vertical direction y. So, then to express the value of u velocity at point Q with respect to the x velocity at point P what we use is a first order Taylor series expansion and we are going to talk about this little later what we mean by that many of you are indeed familiar with Taylor series expansion. Since this delta y is considered to be an infinitesimally small length what we do is that we use only the first term in the Taylor series expansion to express the x velocity at Q with respect to the x velocity at P. So, since the x velocity at P is u the x velocity at Q is going to be using the first order Taylor series expansion u which is the value here plus du dy which is the derivative of u with respect to y times the distance that is separating these two vertical points which is delta y and that is it. If you are going to add more terms you would involve second derivative of u with respect to y and so on. However, again since we are talking about an infinitesimally small length it is sufficient to assume that u at Q is going to be described by a first order Taylor series expansion about the point P and that is why we are using only one term here. So, now having marked the velocity at u sorry at P and at Q we are in a position to see what happens to this vertical segment P Q. So, what is going to happen is the point P will be pushed to the right over a time interval delta t let us say because of this velocity u. So, if you want to talk about the distance P to P prime here it is going to be simply u which is the velocity in the x direction multiplied by the time interval which is delta t. So, u multiplied by delta t is going to be the distance between P and P prime. So, what we are saying is that as time progresses within an interval of delta t the point P will actually move by a distance of u multiplied by delta t to point P prime. What will happen to point Q? It will also correspondingly move by some distance. So, it will move from Q to Q prime and in general because these two velocities at P and Q are different the distance Q Q prime is going to be different from distance P P prime. So, what is Q? Q prime distance then it is simply the velocity which is u plus du dy times delta y the whole thing multiplied by delta t. And using these simple geometrical descriptions we can now calculate the shear strain experienced by the segment P Q as. So, this actually I have listed here as the rate of shear strain. So, when I am talking about the rate of shear strain I am talking about the time rate of shear strain. So, that we will divide by the time interval delta t over which all this is happening. So, that 1 over delta t that you see here is the interval which we are dividing by. And typically we will take the limit of this entire expression as delta t tends to 0. So, this is the only time that I will be writing such limiting values delta t tending to 0 and etcetera. Later on in the subsequent derivations I will not be explicitly writing that these delta t's and the delta y's and the delta x's are tending to 0. It will be understood that these are elemental values which will tend to 0 in the limit. Anyway, so going back to the calculation of shear strain you will see that whatever is multiplying this 1 over delta t is the shear strain experienced by the vertical segment P Q which is simply the difference between the distances travelled by Q and P which is on the numerator. So, L Q Q prime minus the length P P prime that will give you on the numerator the difference in the distance travelled by points Q and P divided by the original length of the segment P Q which is simply delta y. And then you divide by delta t this entire expression to obtain a rate of shear strain the time rate of shear strain. And then you simply substitute the values of these distances as we had described a few minutes earlier and simplify you will get to the expression of the rate of shear strain as the so called gradient in the velocity u with respect to y or simply the d u d y as the u sorry y differential or y derivative of the x component of the velocity. So, d u d y turns out to be the rate of shear strain in this simple parallel shear flow. Now, going ahead if tau for example, here now this is supposed to be tau I think in your slides it may have been printed as t. So, this is supposed to be tau. So, if tau is the stress set up in the fluid that opposes the applied shear stress in general this shear stress that is set up in the fluid is proportional to some power of the rate of shear strain. Just a few seconds back we had obtained the expression for the shear rate of shear strain which is d u d y. So, the stress then tau is considered to be proportional to some power n of the rate of shear strain. This is how fluids typically behave and if it turns out that this power n is equal to 1 then what we have is the shear stress which is set up inside the fluid that opposes the fluid motion is directly proportional to the rate of shear strain. So, it is tau proportional to only d u d y raise to 1 then what we call that fluid is that fluid is considered to be a Newtonian fluid and the constant of proportionality is what is called as the dynamic viscosity. So, if you have a situation which is obeyed by this last expression namely the shear stress is set up in the fluid as a result of opposition to the applied shear force are directly proportional to the rate of shear strain the constant of proportionality is what we will call the dynamic viscosity. So, in this course we are going to deal with only Newtonian fluids are typically chemical engineers are the ones who deal with non-Newtonian fluids in typical mechanical engineering applications you do not deal with non-Newtonian fluids at least for this particular course we will be dealing with only purely Newtonian fluid which will follow this relation. Now, keep in mind that this tau equal to mu times d u d y as a relation between the shear stress and the shear rate of shear strain through the dynamic viscosity has been obtained for a simple parallel shear flow the situation that we have been dealing with. Later on in the course in a few days of time we will actually go and generalize this situation this relation tau equal to mu times d u d y into what will be called as a Stokes's generalized viscosity law which will be applicable for a multi-dimensional situation. At present what we are dealing with is what we can call a one-dimensional situation where the x direction velocity is a function of only the y coordinate through our assumption. So, that is what we will deal with for now.


Good local time everyone, I'm Audrey Talantau's digital minister in charge of social innovation. Democracy to me is also a technology, a social technology that gets better when more people improve it. One of the ways we can improve democracy is increasing its bit rate. That is to say, instead of like voting every four years, every person like three bits or something, we can make democracy something that's day to day using digital means. That's why I'm optimistic because we've seen day to day democracy enhanced the resilience of the society and able us to counter the pandemic with no lockdown and counter the infodemic with no takedown. In Taiwan, the social innovation has three pillars, fast, fair and fun. The fast part pertains the use of pro-social media. We have this forum called the PTT, free of advertisers or shareholders. It's been running for more than two decades and it's on PTT where people understood for the first time that there's a new SARS variant coming at the end of 2019. We started health inspections on the first date of 2020 for all flight passengers coming in from Wuhan to Taiwan. So this collective intelligence as a digital public infrastructure really surfaced the signals, not just the noise. What we already have a pretty mainstream decentralization technology is called the internet. On the internet, when two people want to innovate on something that's never been introduced before, they do not need approval from anyone else. This is called the end to end principle. When we design new protocols on the internet, we're exercising this freedom. On the other hand, of course, when people think about the internet nowadays, they may think of specific services or within the same service like the World Wide Web, people may think of specific providers and that's the centralization of the previously decentralized technology. So these are the centralization we're talking now is probably a re decentralization turning the technology of internet back to where people who are closest to the field, closest to the pain, can invent new protocols and new ideas and the central government's role in this partnership is just to amplify these new social innovations and introduce it to people who want to use that. To me, data is interpersonal. So it is my data, but when we're having this conversation, this recording is also your data. Actually, without our participation, this conversation would not happen. And so because of this, what will go to this recording, whether we release it into the creative commas, do we want to add share alike or not share alike and so on become a common topic for us to have a discussion. So this is what people call collaborative governance. Whenever we have a interpersonal co-creation, we have a governance topic that we can talk about. So my suggestion is that whenever we're making something together, we first talk about the governing principles of our collective production. And that will not only make all the participants more aware of data stewardship and so on, but it's also a great way to reduce bias. When I was 13, I had my first puberty. When I was 25, I had my second puberty. But I don't say I identify as this or I identify as that. And the reason why is that the mutual shared experiences brings us closer as a neighborhood, but identities sometimes exclude others who do not have the experience yet. So the idea of experiences over identities is what I want to answer to kind of deconstruct this question a little bit. And let's just remain unfinished in our identities.


Jerry of the Circus! Jerry of the Circus! He's conscious now, and the doctor says you can see him for a few minutes. Right this way, please. You say his name is Decker? That's what he called himself while he was working for me. Say, Miss Ellison, do you think I'd better have the police send someone over here yet? Oh, no, I hardly think so, Mr. Randall. He can't possibly be moved for some time yet. Is there any danger of Decker not pulling through? The doctor wasn't so sure yesterday. Well, I think it's safe to say he'll recover all right. Here we are. Well, how's the patient feeling now? Better, thanks. Good. I've got a visitor for you. Visitor? Come right in, Mr. Randall. Hello there, Decker. Don't you know me? I can't say as I do. Come on now. This is no way to get out of things, Decker. What do you mean?  You know well enough that... Just a minute, Mr. Randall. The patient only regained consciousness a short time ago. He claims to be... What did you say your name was? Dubin. Daniel Dubin. Dubin? Those people wouldn't let me talk. Said I must be quiet for a while. How can I be when they say I'm out west and only last night I was in Baltimore? Baltimore? What I can't figure out is what happened. You mind if we talk, Miss Ellison? Certainly not, but I'll have to stay in the room. That's perfectly all right. Now look here, Decker.  I can't figure out what happened. I remember turning the cargo over to the zoo officials. Cargo? What cargo? That shipment I brought up from South America. What are you talking about? Oh, I got a marvelous collection of birds this trip. I never saw such parrots as we found in the interior. The only unusual animal was a black panther. And did we have the time bagging that baby? What's the last thing you remember? I remember turning the shipment over to the authorities. Then I got my check. I had to go back to the waterfront to check with the captain of the boat about... Funny, I don't believe I even got to him. You don't know what happened to you? The way I feel, I've been run over by a trolley car. You're sure you don't know me? Can't say as I do. What is your name? Randall. Randall? The name's familiar. Oh, I know. Sure. My brother used to work for a man called Randall. You're in a relationship with a fellow who owns the Randall Brothers Circus? The relationship is pretty close. I haven't owned that circus. No, you don't say. Have you heard from Tim Dugan lately? Last I heard of him, he'd gone out west. Mr. Randall? He is. I'm afraid we'll have to let the patient rest now. Oh, but... Please, nurse, just another few minutes. I'm sorry, doctor's orders. You'll come back, Randall. Please do. Something's happened. I've got to get it straightened out. I don't seem to know anyone around here. I'll be back. All right, Miss Ellison, I'm ready. Now, get a little rest, and if you want anything, ring the bell. Well, what do you think? I don't know what to think. This man is really Daniel Dugan, or... He obviously doesn't know yet what's happened to him. What does the doctor say? I thought the man is unbelievably clever. Oh, he's actually suffering from amnesia. Amnesia? Loss of memory. That would explain it. But why should he think he's someone else? Someone I know of? I thought when people lose their memory, they just forget who they are. Well, that's right. But this man's pretending to be someone else. Well, isn't it possible that he might have been suffering from amnesia before this accident? You mean, uh, as Decker? He didn't know anything about his past? That's it, and this accident has taken him back to what happened before he became Decker. Well, in that case, he wouldn't remember any of his life as Decker. That's it exactly. Oh, I think I'd better talk to the doctor. Well, I'll take you downstairs then. Here's the elevator. And for our place. The doctor is busy, but if you wait, I'll send him to you as soon as he finishes round. Thank you. You've been very kind. Oh, not at all. Main floor. Now, if you'll excuse me, I'll leave you here. I'll be in the waiting room. Thank you. Oh, but listen, young lady. We've just got to see this young Decker. Bump and Jerry. Well, what on earth are you two doing around here? Well, hello, sir. We didn't expect to run into you. Hello there, Mr. Randall. Hello, son. We thought we'd like to see Decker. Is he conscious here? He's conscious. Gee, Mr. Randall, you said that kind of funny. Has anything happened? He's going to get well, isn't he? He'll get well. What's up, Randall? He doesn't seem to know who he is. You mean it? He didn't know me, and he doesn't even seem to know who Decker is. Does he? Does he? Well, can he talk at all? Oh, yes, yes. I guess he's in pretty much pain, though. Is he? Oh, gee, Mr. Randall, tell me about him. Is he my uncle? Your uncle? What on earth makes you ask that, Jerry? Well, I... Well, we... Yesterday bumps with me. We came down here, and the doctor had just taken off his bandage, and he was unconscious, didn't know us, but when we saw him, you know, without the bandage, he looked like my uncle. Yeah, I don't know what to think. I'm most crazy, I guess. Yeah, that's true, Sam. The boy's hardly slept all night. I thought he'd never get through with his work this morning. Why, he got so upset. But what made you think? What made you be so sure it was your uncle? This picture, see? That's his father sent it to me. Dad used to have one like this of Uncle Dan. I remember it all right. It looks like Decker all right, without his beard. It's just gotta be him. Aw, gee, Mr. Randler. Well, I guess I'd better tell you too what's happened. Well, it's nothing serious, I hope. No, no, I saw him right after he regained consciousness. Yes, you did. He didn't know me, though he'd heard of me. He claimed his name is Daniel Dugan. I knew it. I knew it. Danny Dugan. But how could he have been Decker so long and not know anything about it? Well, I understand that after a person has had... What's the right word for that? Amnesia. Yeah, that's it. Amnesia. I understand that when they once get back their memory, they forget everything that's happened in between. I'm waiting to talk to the doctor now, but I think you're right, Bombs. Gee, then you couldn't hold a person responsible for anything they did that was wrong if they didn't know what they were doing, could you? Well, I... Well, no, you just stop worrying, Jerry. You know Mr. Randler to do everything he can that's fair. Yes, I know, but... Oh, I'll tell you what I will do, Jerry. I'm going to call the police station and see if they've gotten hold of Lorenz yet. We'll do everything we can to catch that man. He may know more about Danny Dugan than we think. Well, in any way, the money wasn't on Decker. I mean, Dugan. So it goes to show Lorenz was the real thief. He sure was. I just know my uncle didn't want to do such a thing. You think Lorenz could have hypnotized him or something? Well, hardly, but... may have had some way of forcing Decker, your uncle, to do what he wanted. You know, Bombs and I said we thought Decker was kind of afraid of Lorenz. Well, if you two will excuse me, I'll make that phone call. We've got to get Lorenz now. I'll be back in a minute. I just know my uncle isn't a criminal. Yeah, now don't you worry, Jerry. When they get Lorenz, we'll learn how all this happens. You will see. Are you the two gentlemen that are waiting to see... Mr. Dugan? Yes. Can we see him now? If you'll come upstairs with me. The doctor says you may go in for just about five minutes. Mr. Randler was with us. He just went to make a phone call. That's all right. I'm sending the doctor right down to him. I'll have him tell Mr. Randler where you are. Well, thank you. Thank you, nurse. Do we take the elevator? Yes. Step right in. Third floor, please.  He's had a pretty bad accident. He'll be up and around in about a month. A whole month in bed? Well, that's not so long after being almost killed. Third floor. Here we are. First door on the left. Now, try not to get the patient excited. Can I go right in? Oh, yes, of course. Hello there, Mr. Dugan. Well, you're pretty popular this morning. I've got a couple of more visitors. Hello. Hello. Well, I am Bumps with the Randall Brothers Circus. Bumps? Bumps? Of course. Sure, I saw you when you and Tim were... Sure thing. I'm glad to see an old friend. Your boy? No, no, Danny. This is Jerry. Jerry? Tim's boy. No. No, I can't believe it. I'm Jerry Dugan, all right. What is this? Tim's boy is only a baby. What are you telling me?  We're not playing a joke. Well, Danny, you think you're feeling well enough to talk? For heaven's sakes, tell me what this is all about. Well, no, no, no, just take it easy. Well, you see, you've evidently lost your memory for some time.  For heaven's sakes, man. Tell me, what has happened? Well, we don't quite know, but it's been years now. I can't believe it.  I haven't just come back from South America. Well, I'm afraid not, Dugan. But where have I been? Not in the hospital all this time. No. Golly, it must seem funny. Come here, son.  Yes, sir. Are you with the circus too? I sure am. So your dad's back in the circus business? Funny thing. I thought he'd given it up. Well, no, dad's not. Well, Jerry, never mind now. I think Dugan's had quite enough for one day. What do you mean? What is it? You'd better finish it, as long as you've gone that far. Well... I'm with this boy. What is it? Dad died just a few weeks ago. No. Died. Damn, man. Now, if not, just take it easy, old man. I mean, this is his boy, Jerry. I'd begun to think I never would find Uncle Dan. So you're working with the circus? Well, son, as soon as I get on my feet, I'm going to take care of you. I'm sorry, but you've already been here more than five minutes. Yes, of course, nurse. Well, we'll go. How long do you play in this town? Oh, another couple of days, or we'll be back tomorrow. You bet. And can I bring rags? Who's rags? My dog. Oh, of course. Your dog. No wonder. I don't know about your dog, or you, or Tim. Well, goodbye. Goodbye, Uncle Dan.