Changeset 5871


Ignore:
Timestamp:
06/25/21 13:59:41 (3 years ago)
Author:
ymipsl
Message:

Add possibility to add white noise in LMDZ restart

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CONFIG_DEVT/IPSLCM6.5_work_ENSEMBLES/modeles/LMDZ/libf/dyn3dmem/dynetat0_loc.F90

    r5501 r5871  
    4646  REAL,             ALLOCATABLE :: ucov_glo(:,:),    q_glo(:,:), phis_glo(:) 
    4747  REAL,             ALLOCATABLE :: teta_glo(:,:) 
     48  REAL, ALLOCATABLE ::random_ucov(:,:),random_vcov(:,:),random_teta(:,:),random_ps(:) 
     49  REAL :: noise_ucov, noise_vcov, noise_ps, noise_teta 
     50  INTEGER :: seed_noise_ucov, seed_noise_vcov, seed_noise_ps, seed_noise_teta 
     51  INTEGER :: seed_size 
     52  INTEGER, ALLOCATABLE :: seed(:) 
    4853!------------------------------------------------------------------------------- 
    4954  modname="dynetat0_loc" 
     
    125130  CALL err(NF90_GET_VAR(fID,vID,time),"get",var) 
    126131 
     132  CALL RANDOM_SEED(size=seed_size) 
     133  ALLOCATE(seed(seed_size)) 
    127134  ALLOCATE(phis_glo(ip1jmp1)) 
    128135  CALL get_var1("phisinit",phis_glo) 
     
    130137 
    131138  ALLOCATE(ucov_glo(ip1jmp1,llm)) 
     139  ALLOCATE(random_ucov(ip1jmp1,llm)) 
    132140  CALL get_var2("ucov",ucov_glo) 
    133   ucov (ijb_u:ije_u,:)=ucov_glo(ijb_u:ije_u,:);  DEALLOCATE(ucov_glo) 
     141  seed_noise_ucov=314159265 
     142  CALL getin("seed_noise_ucov",seed_noise_ucov) 
     143  seed=seed_noise_ucov 
     144  CALL RANDOM_SEED(put=seed) 
     145  noise_ucov = 0 
     146  CALL getin("noise_ucov",noise_ucov) 
     147  CALL RANDOM_NUMBER(random_ucov) 
     148  ucov_glo=ucov_glo*(1+(random_ucov*2-1)*noise_ucov) 
     149  ucov (ijb_u:ije_u,:)=ucov_glo(ijb_u:ije_u,:);  DEALLOCATE(ucov_glo) ; DEALLOCATE(random_ucov) 
    134150 
    135151  ALLOCATE(vcov_glo(ip1jm,llm)) 
     152  ALLOCATE(random_vcov(ip1jm,llm)) 
    136153  CALL get_var2("vcov",vcov_glo) 
    137   vcov (ijb_v:ije_v,:)=vcov_glo(ijb_v:ije_v,:);  DEALLOCATE(vcov_glo) 
     154  seed_noise_vcov=314159265 
     155  CALL getin("seed_noise_ucov",seed_noise_vcov) 
     156  seed=seed_noise_vcov 
     157  CALL RANDOM_SEED(put=seed) 
     158  noise_vcov = 0 
     159  CALL getin("noise_ucov",noise_vcov) 
     160  CALL RANDOM_NUMBER(random_vcov) 
     161  vcov_glo=vcov_glo*(1+(random_vcov*2-1)*noise_vcov) 
     162  vcov (ijb_v:ije_v,:)=vcov_glo(ijb_v:ije_v,:);  DEALLOCATE(vcov_glo) ; DEALLOCATE(random_vcov) 
    138163 
    139164  ALLOCATE(teta_glo(ip1jmp1,llm)) 
     165  ALLOCATE(random_teta(ip1jmp1,llm)) 
     166  seed_noise_teta=314159265 
     167  CALL getin("seed_noise_teta",seed_noise_teta) 
     168  seed=seed_noise_teta 
     169  CALL RANDOM_SEED(put=seed) 
     170  noise_teta = 0 
     171  CALL getin("noise_teta",noise_teta) 
     172  CALL RANDOM_NUMBER(random_teta) 
    140173  CALL get_var2("teta",teta_glo) 
    141   teta (ijb_u:ije_u,:)=teta_glo(ijb_u:ije_u,:);  DEALLOCATE(teta_glo) 
     174  teta_glo=teta_glo*(1+(random_teta*2-1)*noise_teta) 
     175  teta (ijb_u:ije_u,:)=teta_glo(ijb_u:ije_u,:);  DEALLOCATE(teta_glo) ; DEALLOCATE(random_teta) 
    142176 
    143177  ALLOCATE(masse_glo(ip1jmp1,llm)) 
     
    146180   
    147181  ALLOCATE(ps_glo(ip1jmp1)) 
     182  ALLOCATE(random_ps(ip1jmp1)) 
     183  seed_noise_ps=314159265 
     184  CALL getin("seed_noise_ps",seed_noise_ps) 
     185  seed=seed_noise_ps 
     186  CALL RANDOM_SEED(put=seed) 
     187  noise_ps = 0 
     188  CALL getin("noise_ps",noise_ps) 
     189  CALL RANDOM_NUMBER(random_ps) 
    148190  CALL get_var1("ps",ps_glo) 
    149   ps   (ijb_u:ije_u)  =   ps_glo(ijb_u:ije_u);   DEALLOCATE(ps_glo) 
     191  ps_glo=ps_glo*(1+(random_ps*2-1)*noise_ps) 
     192  ps   (ijb_u:ije_u)  =   ps_glo(ijb_u:ije_u);   DEALLOCATE(ps_glo) ; DEALLOCATE(random_ps) 
    150193 
    151194!--- Tracers 
Note: See TracChangeset for help on using the changeset viewer.