Code:
#include <stdio.h>
#include <math.h>
int main(){
int enterstep;
puts("Enter the total radius");
scanf("%d", &enterstep);
int aaa,bbb,a,b,c,d,e,f,g,h,i,j,dt,tmax,max=enterstep,ice=0,water=0,dry=0, Tmelt=273, count1, count2, midtemp;
float T[max+10][max*2+10], PastT[max+10][max*2+10], InitialT[max+10][max*2+10], deltat=3.15569*pow(10,7),K=pow(10,-6), dx=1000, diff=136.4, Tmeltul=Tmelt+diff, icef, waterf, dryf, radius, aa=0.26183*150.3226, kappa=K*deltat/pow(dx,2), track[max+1][max+1], number=max;
puts("Enter time:");
scanf("%d", &tmax);
for(aaa=0; aaa<=max; aaa++){
for (bbb=0; bbb<=max*2; bbb++){
T[aaa][bbb]=150;
PastT[aaa][bbb]=150;
InitialT[aaa][bbb]=150;
}
}
printf("dt\tlayer\tT(K)\n");
track[0][0]=0;
for(i=1; i<=max; i++){
for(b=1; b<=max; b++){
radius=sqrt((pow(max-i,2)+pow(b,2)));
if(radius<=(max)){
count1++;
}
}
}
midtemp=count1+1;
T[0][0]=500;
PastT[0][0]=T[0][0];
for (dt=0; dt<=tmax; dt++){
ice=0;
water=0;
dry=0;
if(dt==0){
for(a=0; a<=max; a++){
for(d=1; d<=max; d++){
if(dt==tmax){
printf("%d\t%d\t%.2f\n",dt,a,InitialT[a][d]);
}
}
}
ice=100;
}
if(dt>0){
for(j=0; j<=2*max; j++){
for(e=1; e<=max; e++){
radius=sqrt(pow((max-j),2)+pow(e,2));
if(radius<=max){
count2++;
track[j][e]=j;
if(track[j][e]>track[j][e-1]){
if(count2==midtemp){
T[j][e]=T[0][0]+(kappa*((e+1/2)*PastT[j][e+1]-2*e*PastT[j][e])/e)+kappa*(PastT[(j+1)][e]-2*PastT[j][e]+PastT[(j-1)][e]);
}
if(count2!=midtemp){
T[j][e]=PastT[j][e]+(kappa*((e+1/2)*PastT[j][e+1]-2*e*PastT[j][e])/e)+kappa*(PastT[(j+1)][e]-2*PastT[j][e]+PastT[(j-1)][e]);
}
}
if(track[j][e]==track[j][e-1]){
if(sqrt(pow((max-j),2)+pow((e+1),2))>max){
T[j][e]=150;
}
if(sqrt(pow((max-j),2)+pow((e+1),2))<=max){
T[j][e]=PastT[j][e]+(kappa*((e+1/2)*PastT[j][e+1]-2*e*PastT[j][e]+(e-1/2)*PastT[j][e-1])/e)+kappa*(PastT[(j+1)][e]-2*PastT[j][e]+PastT[(j-1)][e]);
}
PastT[j][e]=T[j][e];
}
}
}
}
}
}
}