A Note From Philippe on Viscosities in SOPALE I would like to provide here a few words of explanation on SOPALE's viscosities, in response to some comments heard recently. in Sopale, viscosities are computed in the routine 'viscosities1' The basic method used for computing viscosities in sopale is a 'parallel assemblage' of mechanisms, which means that we add stresses (or forces) due to the individual component mechanisms. So the primary quantity is STRESS. when the total stress has benn assembled we can compute a DERIVED quantity: the viscosity. This viscosity is the effective or equivalent viscosity of our parallel 'rheological circuit'. We have to keep in mind though that the parametrization of the individual rheological component may be different . This is what occurs in Sopale where a cocktail of 4 processes is used (frictional-cohesive plasticity, nonlinear dislocation creep, grain size sensitive creep, and Peierls creep). I explain here HOW these are parametrized and why all the supposed problems of consistency are imaginary if you do understand inputs and formula. I have coded 3 models of creep, which in my mind were different: (i will omit peierls creep and Mohr-Coulomb here) -nonlinear creep model : uses a nonlinear relation between to 'mechanical/kinematical' quantities : stress (say s) and strain-rate say e . The basic form of the equation is: e=a*(s^n) the formula i read in one of sopale's versions (zopale) for the computation of nonlinear creep STRESSES are : if(nlcreep_updown_T.eq.-1)then sigma2=nlcreep_sc*((edot/nlcreep_eps)**(1.d0/nlcreep_n))* 1dexp((nlcreep_T+tshift)/(nlcreep_n*(tshift+tlg(l)))) endif if(nlcreep_updown_T.eq.1)then sigma2=nlcreep_sc*((edot/nlcreep_eps)**(1.d0/nlcreep_n))* 1dexp((tshift+tlg(l))/(nlcreep_n*(tshift+nlcreep_T))) endif if(nlcreep_updown_T.eq.0)then sigma2=nlcreep_sc*((edot/nlcreep_eps)**(1.d0/nlcreep_n)) endif from which you will all agree that nlcreep_sc must be homogeneous to sigma2 ( a STRESS !) if nlcreep_n is dimensionless (the nonlinear creep exponent) and nlcreep_eps is homegeneous to a strain rate (as edot is) THERE SHOULD THEREFORE BE NO FACTOR OF 2 HERE. We are just computing a stress, and there is no VISCOSITY used in this formula ! -the grain size sensitive creep model is different. It is NOT(not purely : the grain size is a non-kinematical quantity ) a relation between mechanical and kinematical quantities . The nlcreep model was implemented to mimic the physics of dislocation creep while the gscreep model was intended to mimic the physics of diffusion creep ,where diffusive mass transport is couples to the deformation. I have considered this category of processes as viscous with a dependence of viscosity on a 'texture or micro-structural parameter: the grain size (which itself evolves see Jean's work e.g.). For these reasons, SOPALE PROVIDES A VISCOSITY and NOT a STRESS MODEL, indeed formula for gscreep are : (zopale) : if(gscreep_updown_T.eq.-1)then sigma1=gscreep_mu*((gscreep_a/gscreep_a0)**(gscreep_m))* 1dexp((gscreep_T+tshift)/(tlg(l)+tshift))*2.d0*edot endif if(gscreep_updown_T.eq.1)then sigma1=gscreep_mu*((gscreep_a/gscreep_a0)**(gscreep_m))* 1dexp((tlg(l)+tshift)/(tshift+gscreep_T))*2.d0*edot endif if(gscreep_updown_T.eq.0)then sigma1=gscreep_mu*((gscreep_a/gscreep_a0)**(gscreep_m))* 1edot*2.d0 endif Reading these formula you will all agree that we were computing stresses ( sigma1) but that what we have parametrized is the VISCOSITY: i.e. e.g. gscreep_mu*((gscreep_a/gscreep_a0)**(gscreep_m)) mu is the greek letter used ubiquitously to note viscosities. gscreep_mu refers quite logically to the viscosity (scale) associated to Grain Size sensitive creep (gscreep). Just compare this to the name that was used for nonlinear creep : nlcreep_sc which stands for the STRESS (scale) associated with nonlinear creep. You will recognize that if gscreep_a/gscreep_a0 is adimensional (does this not look so?) (this by the way is a dimensionless grain size) and if gscreep_m stands for an exponent indeed ALL PREVIOUS FORMULA have the right expression : stress= viscosity*2*edot and there neither an extra or a missing factor of 2 ! if now you want to relate this to the inputs it is easy: read(8,*)gscreep_mu(i),gscreep_m(i),gscreep_T(i) 1,gscreep_strain1(i),gscreep_strain2(i),gscreep_a0(i), 1gscreep_a1(i),gscreep_a2(i),gscreep_updown_T(i) read(8,*)nlcreep_eps(i),nlcreep_sc1(i),nlcreep_sc2(i), 1nlcreep_n(i), 1nlcreep_T(i),nlcreep_strain1(i),nlcreep_strain2(i), 1nlcreep_updown_T(i) so i read this for you : -gscreep models viscosities and you enter a viscosity scale gscreep_mu(i) -nlcreep models stresses and you enter stress scales : nlcreep_sc1(i),nlcreep_sc2(i) when the total stress has been computed the VISCOSITY (effective) is computed as : (zopale) : viscos(l,n)=sleast/(2.d0*edot) where sleast is the min( sigma1(gscreep)+sigma2(nlcreep)+sigma3(peierls),sigma_mohr_coulomb) again this is correct. cheers pf