1@Parser PleiadesModel; 2@Model SiCSwellingModelTest; 3@Author Helfer Thomas; 4@Date 05 Déc. 2007; 5 6@Output s; 7s.setGlossaryName("SolidSwelling"); 8s.setDepth(1); 9 10@Input f; 11f.setGlossaryName("Fluence"); 12f.setDepth(1); 13 14@Input T; 15T.setGlossaryName("Temperature"); 16T.setDepth(1); 17 18@LoadingVariable n; 19n.setEntryName("NeutronFlux"); 20n.setDepth(1); 21 22@Function compute 23{ 24 const real Phi0 = 0.3396e25; 25 const real theta = 0.5*(T_1+T)-273.15; 26 const real Phi = 0.5*(f_1+f); 27 real swellingSaturation; 28 real incr; 29 // the original law is given in %, 30 // so values of swellingSaturation are here divided by 100. 31 if((25<=theta)&&(theta<=800.)){ 32 swellingSaturation = -3.3283e-5*theta+3.1133e-2; 33 } else if ((800.<theta)&&(theta<=1000.)){ 34 swellingSaturation = -1.3528e-5*theta+1.5329e-2; 35 } else if ((1000.<theta)&&(theta<=1500.)){ 36 swellingSaturation = 0.18e-2; 37 } else { 38 ostringstream msg; 39 msg << "SICSolidSwellingModel::computeSolidSwellingIncrement : "; 40 msg << "temperature is out of bounds (" << theta << ")"; 41 throw(runtime_error(msg.str())); 42 } 43 incr = swellingSaturation/Phi0; 44 incr *= exp(-Phi/Phi0); 45 // terme supplémentaire à plus haute température 46 if((1000.<theta)&&(theta<=1250.)){ 47 incr+=1.297e-28*((theta-1000.)/250.); 48 } 49 if(theta>=1250.){ 50 incr+=1.297e-28; 51 } 52 incr *= 0.5*(n+n_1)*dt; 53 s = s_1 + incr; 54} // end of function compute 55