source: issm/oecreview/Archive/25834-26739/ISSM-25991-25992.diff@ 28275

Last change on this file since 28275 was 26740, checked in by Mathieu Morlighem, 3 years ago

CHG: added 25834-26739

File size: 5.1 KB
  • ../trunk-jpl/src/m/classes/materials.m

     
    350350
    351351
    352352                end % }}}
     353                function setlitho2prem(self) % {{{
     354                        %based on materials.radius and materials.issolid, replaces materials.density, materials.lame_mu, materials.lame_lambda
     355                        % with volumetric averages of a polynomial version of the PREM model
     356                        if ~strcmpi(self.nature, 'litho')
     357                        error('materials setlitho2prem error message: materials.nature must be ''litho''')
     358                        end
     359                   
     360                   
     361                   ra=self.radius(end);
     362                   r(1) = 0.0;     r(2) = 1221.5; r(3) = 3480.0; r(4) = 3630.;
     363                   r(5) = 5600.0;  r(6) = 5701.0;  r(7) = 5771.0; r(8) = 5971.;
     364                   r(9) = 6151.0; r(10) = 6291.0; r(11) = 6346.6;
     365                   r(12) = 6356.0; r(13) = 6368.0; r(14) = 6371.;
     366                 
     367                   if (r(14)*1e3 ~= ra)
     368                        error(['materials setlitho2prem error message: Earth surface radius in PREM r=' num2str(r(end)*1e3) ' does not match materials.radius(end)=' num2str(self.radius(end))]);
     369                   end
     370
     371                  d = zeros(12,4); %polynomial coef for density
     372                  d(1,1) = 13.0885;                               d(1,3) = -8.8381 ;
     373                  d(2,1) = 12.5815; d(2,2) = -1.2638; d(2,3) = -3.6426; d(2,4) = -5.5281;
     374                  d(3,1) = 7.9565 ; d(3,2) = -6.4761;   d(3,3) = 5.5283;  d(3,4) = -3.0807;
     375                  d(4,1) = 7.9565 ; d(4,2) = -6.4761;   d(4,3) = 5.5283;  d(4,4) = -3.0807;
     376                  d(5,1) = 7.9565 ; d(5,2) = -6.4761;   d(5,3) = 5.5283;  d(5,4) = -3.0807;
     377                  d(6,1) = 5.3197 ; d(6,2) = -1.4836;
     378                  d(7,1) = 11.2494; d(7,2) = -8.0298;
     379                  d(8,1) = 7.1089 ; d(8,2) = -3.8045;
     380                  d(9,1) = 2.6910 ; d(9,2) = 0.6924;
     381                  d(10,1) = 2.6910; d(10,2) = 0.6924;
     382                  d(11,1) = 2.9  ;
     383                  d(12,1) = 2.6  ;
     384
     385                % ocean
     386                  if (~self.issolid(end))
     387                        d(13,1) = 1.02 ;
     388
     389                % continental
     390                  else
     391                  d(13,1) = d(12,1);
     392                  end
     393
     394                  p = zeros(13,4); %polynomial coef for Vp, pressure wave velocity
     395                  p(1,1) = 11.2622 ; p(1,3) = -6.3640;
     396                  p(2,1) = 11.0487 ; p(2,2) = -4.0362; p(2,3)  = 4.8023; p(2,4) = -13.5732;
     397                  p(3,1) = 15.3891 ; p(3,2) = -5.3181; p(3,3)  = 5.5242; p(3,4) = -2.5514;
     398                  p(4,1) = 24.952 ; p(4,2)  = -40.4673; p(4,3) = 51.4832; p(4,4) = -26.6419;
     399                  p(5,1) = 29.2766 ; p(5,2) = -23.6027; p(5,3) = 5.5242; p(5,4) = -2.5514;
     400                  p(6,1) = 19.0957 ; p(6,2)  = -9.8672;
     401                  p(7,1) = 39.7027 ; p(7,2)  = -32.6166;
     402                  p(8,1) = 20.3926 ; p(8,2)  = -12.2569;
     403                  p(9,1) = 4.1875 ; p(9,2)  = 3.9382;
     404                  p(10,1) = 4.1875 ; p(10,2) = 3.9382;
     405                  p(11,1) = 6.8 ;
     406                  p(12,1) = 5.8;
     407                %
     408                % ocean
     409                  if (~self.issolid(end))
     410                  p(13,1) = 1.45 ;
     411                %
     412                % continental
     413                  else
     414                  p(13,1) = p(12,1);
     415                  end
     416                %----
     417                %
     418                  s = zeros(13,4); %polynomial coef for Vs, shear wave velocity
     419                %
     420                  s(1,1) = 3.6678; s(1,3) = -4.4475;
     421
     422                  s(3,1) = 6.9254; s(3,2) = 1.4672; s(3,3) = -2.0834; s(3,4) = 0.9783;
     423                  s(4,1) = 11.1671; s(4,2) = -13.7818; s(4,3) = 17.4575; s(4,4) = -9.2777;
     424                  s(5,1) = 22.3459; s(5,2) = -17.2473; s(5,3) = -2.0834; s(5,4) = 0.9783;
     425                  s(6,1) = 9.9839; s(6,2) = -4.9324;
     426                  s(7,1) = 22.3512; s(7,2) = -18.5856 ;
     427                  s(8,1) = 8.9496; s(8,2) = -4.4597;
     428                  s(9,1) = 2.1519; s(9,2) = 2.3481;
     429                  s(10,1) = 2.1519; s(10,2) = 2.3481;
     430                  s(11,1) = 3.9 ;
     431                  s(12,1) = 3.2 ;
     432                %
     433                % ocean (please don't modify)
     434                  if (~self.issolid(end))
     435                %
     436                % continental
     437                  else
     438                  s(13,1) = s(12,1);
     439                  end
     440                %
     441                %
     442                  r = r*1e3;
     443                 
     444                  %- handling the first layer : central sphere
     445                  rad = self.radius;
     446                  rad(1) = 0.;
     447                 
     448                  for j = 1:self.numlayers
     449                 
     450                        ro = 0.;
     451                        vp = 0.;
     452                        vs = 0.;
     453
     454                        for i = 1:13
     455
     456                                r1 = 0.;
     457                                r2 = 0.;
     458                                if ((rad(j) > r(i)) & (rad(j) <= r(i+1)))
     459                                        if (rad(j+1) <= r(i+1))
     460                                                r2 = rad(j+1);
     461                                                r1 = rad(j);
     462                                        else
     463                                                r2 = r(i+1);
     464                                                r1 = rad(j);
     465                                        end
     466                                elseif (rad(j) <= r(i))
     467                                        if ((rad(j+1) > r(i)) & (rad(j+1) <= r(i+1)))
     468                                                r2 = rad(j+1);
     469                                                r1 = r(i);
     470                                        elseif (rad(j+1) > r(i+1))
     471                                                r2 = r(i+1);
     472                                                r1 = r(i);
     473                                        end
     474                                end
     475
     476                                t1 = d(i,1)/3.;
     477                                t2 = d(i,2)/(ra*4.);
     478                                t3 = d(i,3)/((ra^2)*5.);
     479                                t4 = d(i,4)/((ra^3)*6.);
     480                                ro =  ro + t1*(r2^3) + t2*(r2^4) + t3*(r2^5) + t4*(r2^6) - ( t1*(r1^3) + t2*(r1^4) + t3*(r1^5) + t4*(r1^6) );
     481                                         
     482                                t1 = p(i,1)/3.;
     483                                t2 = p(i,2)/(ra*4.);
     484                                t3 = p(i,3)/((ra^2)*5.);
     485                                t4 = p(i,4)/((ra^3)*6.);
     486                                vp =  vp + t1*(r2^3) + t2*(r2^4) + t3*(r2^5) + t4*(r2^6) - ( t1*(r1^3) + t2*(r1^4) + t3*(r1^5) + t4*(r1^6) );
     487                                         
     488                                t1 = s(i,1)/3.;
     489                                t2 = s(i,2)/(ra*4.);
     490                                t3 = s(i,3)/((ra^2)*5.);
     491                                t4 = s(i,4)/((ra^3)*6.);
     492                                vs =  vs + t1*(r2^3) + t2*(r2^4) + t3*(r2^5) + t4*(r2^6) - ( t1*(r1^3) + t2*(r1^4) + t3*(r1^5) + t4*(r1^6) );
     493
     494                        end
     495                        ro = ro*3 / (rad(j+1)^3-rad(j)^3);
     496                        vp = vp*3 /(rad(j+1)^3-rad(j)^3);
     497                        vs = vs*3 / (rad(j+1)^3-rad(j)^3);
     498                        mu = ro*vs.^2;
     499                        la = ro*vp.^2 - 2.*mu;
     500                        ro = ro*1e3;
     501                        la = la*1e9;
     502                        mu = mu*1e9;
     503
     504                        self.density(j) = ro;
     505                        self.lame_lambda(j) = la;
     506                        self.lame_mu(j) = mu;
     507                  end
     508
     509                end % }}}
     510   
    353511        end
    354512end
    355513
     
    376534                end
    377535        end
    378536end % }}}
     537
     538   
Note: See TracBrowser for help on using the repository browser.