static krb5_error_code init_context_from_config_file(krb5_context context) { krb5_error_code ret; const char * tmp; char **s; krb5_enctype *tmptypes; INIT_FIELD(context, time, max_skew, 5 * 60, "clockskew"); INIT_FIELD(context, time, kdc_timeout, 30, "kdc_timeout"); INIT_FIELD(context, time, host_timeout, 3, "host_timeout"); INIT_FIELD(context, int, max_retries, 3, "max_retries"); INIT_FIELD(context, string, http_proxy, NULL, "http_proxy"); ret = krb5_config_get_bool_default(context, NULL, FALSE, "libdefaults", "allow_weak_crypto", NULL); if (ret) { krb5_enctype_enable(context, ETYPE_DES_CBC_CRC); krb5_enctype_enable(context, ETYPE_DES_CBC_MD4); krb5_enctype_enable(context, ETYPE_DES_CBC_MD5); krb5_enctype_enable(context, ETYPE_DES_CBC_NONE); krb5_enctype_enable(context, ETYPE_DES_CFB64_NONE); krb5_enctype_enable(context, ETYPE_DES_PCBC_NONE); } ret = set_etypes (context, "default_etypes", &tmptypes); if(ret) return ret; free(context->etypes); context->etypes = tmptypes; ret = set_etypes (context, "default_etypes_des", &tmptypes); if(ret) return ret; free(context->etypes_des); context->etypes_des = tmptypes; ret = set_etypes (context, "default_as_etypes", &tmptypes); if(ret) return ret; free(context->as_etypes); context->as_etypes = tmptypes; ret = set_etypes (context, "default_tgs_etypes", &tmptypes); if(ret) return ret; free(context->tgs_etypes); context->tgs_etypes = tmptypes; ret = set_etypes (context, "permitted_enctypes", &tmptypes); if(ret) return ret; free(context->permitted_enctypes); context->permitted_enctypes = tmptypes; /* default keytab name */ tmp = NULL; if(!issuid()) tmp = getenv("KRB5_KTNAME"); if(tmp != NULL) context->default_keytab = tmp; else INIT_FIELD(context, string, default_keytab, KEYTAB_DEFAULT, "default_keytab_name"); INIT_FIELD(context, string, default_keytab_modify, NULL, "default_keytab_modify_name"); INIT_FIELD(context, string, time_fmt, "%Y-%m-%dT%H:%M:%S", "time_format"); INIT_FIELD(context, string, date_fmt, "%Y-%m-%d", "date_format"); INIT_FIELD(context, bool, log_utc, FALSE, "log_utc"); /* init dns-proxy slime */ tmp = krb5_config_get_string(context, NULL, "libdefaults", "dns_proxy", NULL); if(tmp) roken_gethostby_setup(context->http_proxy, tmp); krb5_free_host_realm (context, context->default_realms); context->default_realms = NULL; { krb5_addresses addresses; char **adr, **a; krb5_set_extra_addresses(context, NULL); adr = krb5_config_get_strings(context, NULL, "libdefaults", "extra_addresses", NULL); memset(&addresses, 0, sizeof(addresses)); for(a = adr; a && *a; a++) { ret = krb5_parse_address(context, *a, &addresses); if (ret == 0) { krb5_add_extra_addresses(context, &addresses); krb5_free_addresses(context, &addresses); } } krb5_config_free_strings(adr); krb5_set_ignore_addresses(context, NULL); adr = krb5_config_get_strings(context, NULL, "libdefaults", "ignore_addresses", NULL); memset(&addresses, 0, sizeof(addresses)); for(a = adr; a && *a; a++) { ret = krb5_parse_address(context, *a, &addresses); if (ret == 0) { krb5_add_ignore_addresses(context, &addresses); krb5_free_addresses(context, &addresses); } } krb5_config_free_strings(adr); } INIT_FIELD(context, bool, scan_interfaces, TRUE, "scan_interfaces"); INIT_FIELD(context, int, fcache_vno, 0, "fcache_version"); /* prefer dns_lookup_kdc over srv_lookup. */ INIT_FIELD(context, bool, srv_lookup, TRUE, "srv_lookup"); INIT_FIELD(context, bool, srv_lookup, context->srv_lookup, "dns_lookup_kdc"); INIT_FIELD(context, int, large_msg_size, 1400, "large_message_size"); INIT_FIELD(context, int, max_msg_size, 1000 * 1024, "maximum_message_size"); INIT_FLAG(context, flags, KRB5_CTX_F_DNS_CANONICALIZE_HOSTNAME, TRUE, "dns_canonicalize_hostname"); INIT_FLAG(context, flags, KRB5_CTX_F_CHECK_PAC, TRUE, "check_pac"); if (context->default_cc_name) free(context->default_cc_name); context->default_cc_name = NULL; context->default_cc_name_set = 0; s = krb5_config_get_strings(context, NULL, "logging", "krb5", NULL); if(s) { char **p; if (context->debug_dest) krb5_closelog(context, context->debug_dest); krb5_initlog(context, "libkrb5", &context->debug_dest); for(p = s; *p; p++) krb5_addlog_dest(context, context->debug_dest, *p); krb5_config_free_strings(s); } tmp = krb5_config_get_string(context, NULL, "libdefaults", "check-rd-req-server", NULL); if (tmp == NULL && !issuid()) tmp = getenv("KRB5_CHECK_RD_REQ_SERVER"); if(tmp) { if (strcasecmp(tmp, "ignore") == 0) context->flags |= KRB5_CTX_F_RD_REQ_IGNORE; } ret = krb5_config_get_bool_default(context, NULL, TRUE, "libdefaults", "fcache_strict_checking", NULL); if (ret) context->flags |= KRB5_CTX_F_FCACHE_STRICT_CHECKING; return 0; }
/*------------------------------------------------------------------*/ int main(int argc, char *Inputfile[]) { REAL xlength,ylength,delx,dely,t_end,delt,tau,t; REAL del_trace,del_inj,del_streak,del_vec; REAL pos1x,pos2x,pos1y,pos2y; int imax,jmax,wW,wE,wN,wS,itermax,itersor=0,write,N; REAL Re,Pr,GX,GY,UI,VI,TI,beta; REAL eps,omg,gamma,res; int p_bound; REAL **U,**V,**P,**PSI,**ZETA,**RHS,**F,**G, **TEMP, **HEAT; int **FLAG; int ppc,ifull=0,isurf=0,ibound=0; char problem[30]; char vecfile[30],tracefile[30],streakfile[30]; char infile[30],outfile[30]; struct particleline *Particlelines; int init_case, cycle; int a,j,i,pass,imeas,jmeas; REAL area,oldarea; time_t start = time(NULL); REAL xmeas,ymeas; xmeas = 3; //Here you can enter a point to ymeas = 12; //measure the P and V of over time. /* READ the parameters of the problem. */ /* Stop if problem type or inputfile are not defined */ /*----------------------------------------------------*/ if( READ_PARAMETER(Inputfile[1],problem, &xlength,&ylength,&imax,&jmax,&delx,&dely, &t_end,&delt,&tau, &del_trace,&del_inj,&del_streak,&del_vec, vecfile,tracefile,streakfile, infile,outfile, &N,&pos1x,&pos1y,&pos2x,&pos2y, &itermax,&eps,&omg,&gamma,&p_bound, &Re,&Pr,&beta,&GX,&GY,&UI,&VI,&TI, &wW,&wE,&wN,&wS) != 0 ) return(1); imeas = xmeas/delx; jmeas = ymeas/dely; /* Allocate memory for the arrays */ /*--------------------------------*/ U = RMATRIX(0,imax+1,0,jmax+1); V = RMATRIX(0,imax+1,0,jmax+1); F = RMATRIX(0,imax+1,0,jmax+1); G = RMATRIX(0,imax+1,0,jmax+1); P = RMATRIX(0,imax+1,0,jmax+1); TEMP = RMATRIX(0,imax+1,0,jmax+1); PSI = RMATRIX(0,imax,0,jmax); ZETA = RMATRIX(1,imax-1,1,jmax-1); HEAT = RMATRIX(0,imax,0,jmax); RHS = RMATRIX(0,imax+1,0,jmax+1); FLAG = IMATRIX(0,imax+1,0,jmax+1); ppc = 1; /* Read initial values from file "infile" */ /*----------------------------------------*/ init_case = READ_bin(U,V,P,TEMP,FLAG,imax,jmax,infile); if( init_case > 0 ) return(1); /* Error while reading "infile" */ if( init_case < 0 ){ /* Set initial values if */ /* "infile" is not specified */ INIT_UVP(problem,U,V,P,TEMP,imax,jmax,UI,VI,TI); INIT_FLAG(problem,FLAG,imax,jmax,delx,dely,&ibound); } /* Initialize particles for streaklines or particle tracing */ /*----------------------------------------------------------*/ if (strcmp(streakfile,"none") || strcmp(tracefile,"none")) Particlelines = SET_PARTICLES(N,pos1x,pos1y,pos2x,pos2y); /* Initialize particles for free boundary problems */ /*-------------------------------------------------*/ if (!strcmp(problem,"drop") || !strcmp(problem,"dam")/* || !strcmp(problem,"icecube")*/) Particlelines = INIT_PARTICLES(&N,imax,jmax,delx,dely,ppc,problem,U,V,P); SETBCOND(U,V,P,TEMP,FLAG,imax,jmax,wW,wE,wN,wS); SETSPECBCOND(problem,U,V,P,TEMP,imax,jmax,UI,VI); /* t i m e l o o p */ /*--------------------*/ t = 0.0; cycle = 0; for(pass = 1; pass <=2; pass++) { for(t,cycle; t < t_end; t+=delt,cycle++) { COMP_delt(&delt, t, imax, jmax, delx, dely, U, V, Re, Pr, tau, &write, del_trace, del_inj, del_streak, del_vec); /* Determine fluid cells for free boundary problems */ /* and set boundary values at free surface */ /*--------------------------------------------------*/ if (!strcmp(problem,"drop") || !strcmp(problem,"dam") || !strcmp(problem,"molding") || !strcmp(problem,"wave") || (pass==2 && !strcmp(problem,"icecube"))) { MARK_CELLS(FLAG,imax,jmax,delx,dely,&ifull,&isurf, N,Particlelines); SET_UVP_SURFACE(U,V,P,FLAG,GX,GY,imax,jmax,Re,delx,dely,delt); } else ifull = imax*jmax-ibound; /* Compute new temperature */ /*-------------------------*/ COMP_TEMP(U,V,TEMP,FLAG,imax,jmax,delt,delx,dely,gamma,Re,Pr); /* Compute tentative velocity field (F,G) */ /*----------------------------------------*/ COMP_FG(U,V,TEMP,F,G,FLAG,imax,jmax,delt,delx,dely,GX,GY,gamma,Re,beta); /* Compute right hand side for pressure equation */ /*-----------------------------------------------*/ COMP_RHS(F,G,RHS,FLAG,imax,jmax,delt,delx,dely); /* Debug Code */ /* printf ("\nGeometry of the fluid domain:\n\n"); for(j=jmax+1;j>=0;j--) { for(i=0;i<=imax+1;i++) printf("%d ", (int) P[i][j]); printf("\n"); } printf("\n\n"); scanf("%d", &a); */ /* End Debug */ /* Solve the pressure equation by successive over relaxation */ /*-----------------------------------------------------------*/ if (ifull > 0) itersor = POISSON(P,RHS,FLAG,imax,jmax,delx,dely, eps,itermax,omg,&res,ifull,p_bound); printf("t_end= %1.5g, t= %1.3e, delt= %1.1e, iterations %3d, res: %e, F-cells: %d, S-cells: %d, B-cells: %d\n", t_end, t+delt, delt, itersor,res,ifull,isurf,ibound); /* Compute the new velocity field */ /*--------------------------------*/ ADAP_UV(U,V,F,G,P,FLAG,imax,jmax,delt,delx,dely); /* Set boundary conditions */ /*-------------------------*/ SETBCOND(U,V,P,TEMP,FLAG,imax,jmax,wW,wE,wN,wS); /* Set special boundary conditions */ /* Overwrite preset default values */ /*---------------------------------*/ SETSPECBCOND(problem,U,V,P,TEMP,imax,jmax,UI,VI); if (!strcmp(problem,"drop") || !strcmp(problem,"dam") || !strcmp(problem,"molding") || !strcmp(problem,"wave") || (!strcmp(problem,"icecube") && pass==2)) SET_UVP_SURFACE(U,V,P,FLAG,GX,GY,imax,jmax,Re,delx,dely,delt); /* Write data for visualization */ /*------------------------------*/ area=0; for(i=0; i<=imax+1; i++) for(j=0; j<=jmax+1; j++) { if(j==jmeas && i==imeas){ WRITEPARAMS(P[i][j], t, "presdata.txt"); WRITEPARAMS(U[i][j], t, "veldata.txt", V[i][j]); } if((FLAG[i][j] & C_E) && j<(ylength/delx*.25)) area+=delx*dely; } if(t==0){ WRITEPARAMS(area, t, "voldata.txt"); } if(area!=oldarea) { WRITEPARAMS(area, t, "voldata.txt"); oldarea=area; } if ((write & 8) && strcmp(vecfile,"none")) { COMPPSIZETA(U,V,PSI,ZETA,FLAG,imax,jmax,delx,dely); COMP_HEAT(U,V,TEMP,HEAT,FLAG,Re,Pr,imax,jmax,delx,dely); OUTPUTVEC_bin(U,V,P,TEMP,PSI,ZETA,HEAT,FLAG,xlength,ylength, imax,jmax,vecfile); } if ((write & 8) && strcmp(outfile,"none")) WRITE_bin(U,V,P,TEMP,FLAG,imax,jmax,outfile); if ((strcmp(tracefile,"none")!=0) && pass==2) PARTICLE_TRACING(tracefile,t,imax,jmax,delx,dely,delt,U,V,FLAG, N,Particlelines,write); if (strcmp(streakfile,"none")) STREAKLINES(streakfile,write,imax,jmax,delx,dely,delt,t, U,V,FLAG,N,Particlelines); } t_end = 20; if(pass==1){ for(i=1;i<=imax;i++) for(j=1;j<=jmax;j++) FLAG[i][j] = C_F; Particlelines = INIT_PARTICLES(&N,imax,jmax,delx,dely,ppc,problem,U,V,P); } /* e n d o f t i m e l o o p */ } if (strcmp(vecfile,"none")) { COMPPSIZETA(U,V,PSI,ZETA,FLAG,imax,jmax,delx,dely); COMP_HEAT(U,V,TEMP,HEAT,FLAG,Re,Pr,imax,jmax,delx,dely); OUTPUTVEC_bin(U,V,P,TEMP,PSI,ZETA,HEAT,FLAG,xlength,ylength, imax,jmax,vecfile); } if (strcmp(outfile,"none")) WRITE_bin(U,V,P,TEMP,FLAG,imax,jmax,outfile); /* printf ("\nGeometry of the fluid domain:\n\n"); for(j=jmax+1;j>=0;j--) { for(i=0;i<=imax+1;i++) printf("%d ", (int) P[i][j]); printf("\n"); } printf("\n\n"); scanf("%d", &a); */ /* free memory */ /*-------------*/ FREE_RMATRIX(U,0,imax+1,0,jmax+1); FREE_RMATRIX(V,0,imax+1,0,jmax+1); FREE_RMATRIX(F,0,imax+1,0,jmax+1); FREE_RMATRIX(G,0,imax+1,0,jmax+1); FREE_RMATRIX(P,0,imax+1,0,jmax+1); FREE_RMATRIX(TEMP,0,imax+1,0,jmax+1); FREE_RMATRIX(PSI,0,imax,0,jmax); FREE_RMATRIX(ZETA,1,imax-1,1,jmax-1); FREE_RMATRIX(HEAT,0,imax,0,jmax); FREE_RMATRIX(RHS,0,imax+1,0,jmax+1); FREE_IMATRIX(FLAG,0,imax+1,0,jmax+1); printf("Program completed in "); printf("%f", difftime(time(NULL), start)); printf(" seconds\n"); printf("End of program\n"); return(0); }