Changeset 4482 for LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem
- Timestamp:
- Mar 29, 2023, 3:14:27 PM (21 months ago)
- Location:
- LMDZ6/branches/LMDZ_ECRad
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/LMDZ_ECRad
- Property svn:mergeinfo changed
-
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/advtrac_loc.F90
r4143 r4482 161 161 !-------------------------------------------------------------------- 162 162 ! WRITE(*,*) 'advtrac 248: iq,q(1721,19,:)=',iq,q(1721,19,:) 163 STOP 'advtrac : appel a vlspltqs :schema non parallelise'163 CALL abort_gcm("advtrac","appel a vlspltqs :schema non parallelise",1) 164 164 !LF CALL vlspltqs_p(q(1,1,1),2.,massem,wg,pbarug,pbarvg,dtvr,p,pk,teta ) 165 165 … … 167 167 CASE(12) !--- Schema de Frederic Hourdin 168 168 !-------------------------------------------------------------------- 169 STOP 'advtrac : appel a vlspltqs :schema non parallelise'169 CALL abort_gcm("advtrac","appel a vlspltqs :schema non parallelise",1) 170 170 CALL adaptdt(iadv,dtbon,n,pbarug,massem) ! pas de temps adaptatif 171 171 IF(n > 1) WRITE(*,*) 'WARNING horizontal dt=',dtbon,'dtvr=',dtvr,'n=',n … … 177 177 CASE(13) !--- Pas de temps adaptatif 178 178 !-------------------------------------------------------------------- 179 STOP 'advtrac : schema non parallelise'179 CALL abort_gcm("advtrac","schema non parallelise",1) 180 180 CALL adaptdt(iadv,dtbon,n,pbarug,massem) 181 181 IF(n > 1) WRITE(*,*) 'WARNING horizontal dt=',dtbon,'dtvr=',dtvr,'n=',n … … 187 187 CASE(20) !--- Schema de pente SLOPES 188 188 !-------------------------------------------------------------------- 189 STOP 'advtrac : schema non parallelise'189 CALL abort_gcm("advtrac","schema SLOPES non parallelise",1) 190 190 CALL pentes_ini (q(1,1,iq),wg,massem,pbarug,pbarvg,0) 191 191 … … 193 193 CASE(30) !--- Schema de Prather 194 194 !-------------------------------------------------------------------- 195 STOP 'advtrac : schema non parallelise'195 CALL abort_gcm("advtrac","schema prather non parallelise",1) 196 196 ! Pas de temps adaptatif 197 197 CALL adaptdt(iadv,dtbon,n,pbarug,massem) … … 202 202 CASE(11,16,17,18) !--- Schemas PPM Lin et Rood 203 203 !-------------------------------------------------------------------- 204 STOP 'advtrac : schema non parallelise'204 CALL abort_gcm("advtrac","schema PPM non parallelise",1) 205 205 ! Test sur le flux horizontal 206 206 CALL adaptdt(iadv,dtbon,n,pbarug,massem) ! pas de temps adaptatif -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/bilan_dyn_loc.F
r2601 r4482 231 231 WRITE(lunout,*)'dt_app=',dt_app 232 232 WRITE(lunout,*)'dt_cum=',dt_cum 233 stop233 CALL abort_gcm("conf_gcmbilan_dyn_loc","stopped",1) 234 234 endif 235 235 -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/check_isotopes_loc.F90
r4143 r4482 3 3 USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, int2str, real2str 4 4 USE infotrac, ONLY: nqtot, niso, nphas, isotope, isoCheck, iqIsoPha, isoSelect, & 5 ntiso, iH2O, nzone, tracers, isoName, itZonIso, tnat5 ntiso, iH2O, nzone, tracers, isoName, itZonIso, getKey 6 6 IMPLICIT NONE 7 7 include "dimensions.h" … … 11 11 CHARACTER(LEN=maxlen) :: modname, msg1, nm(2) 12 12 INTEGER :: ixt, ipha, k, i, iq, iiso, izon, ieau, iqeau, iqpar 13 INTEGER, ALLOCATABLE :: ix(:) 13 INTEGER, ALLOCATABLE :: ix(:) 14 REAL, ALLOCATABLE, SAVE :: tnat(:) !--- OpenMP shared variable 14 15 REAL :: xtractot, xiiso, deltaD, q1, q2 15 16 REAL, PARAMETER :: borne = 1e19, & … … 31 32 IF(first) THEN 32 33 !$OMP MASTER 33 iso_eau = strIdx(isoName,'H2[16]O') 34 iso_HDO = strIdx(isoName,'H[2]HO') 35 iso_O18 = strIdx(isoName,'H2[18]O') 36 iso_O17 = strIdx(isoName,'H2[17]O') 37 iso_HTO = strIdx(isoName,'H[3]HO') 34 iso_eau = strIdx(isoName,'H216O') 35 iso_HDO = strIdx(isoName,'HDO') 36 iso_O18 = strIdx(isoName,'H218O') 37 iso_O17 = strIdx(isoName,'H217O') 38 iso_HTO = strIdx(isoName,'HTO') 39 IF(getKey('tnat', tnat)) CALL abort_gcm(modname, 'missing isotopic parameter', 1) 38 40 !$OMP END MASTER 39 41 !$OMP BARRIER -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/conf_gcm.F90
r4146 r4482 453 453 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', & 454 454 ' est differente de celle lue sur le fichier start ' 455 STOP455 CALL abort_gcm("conf_gcm","stopped",1) 456 456 ENDIF 457 457 … … 467 467 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', & 468 468 'run.def est differente de celle lue sur le fichier start ' 469 STOP470 ENDIF469 CALL abort_gcm("conf_gcm","stopped",1) 470 ENDIF 471 471 472 472 !Config Key = grossismy … … 481 481 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', & 482 482 'run.def est differente de celle lue sur le fichier start ' 483 STOP483 CALL abort_gcm("conf_gcm","stopped",1) 484 484 ENDIF 485 485 … … 487 487 write(lunout,*) & 488 488 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 489 STOP489 CALL abort_gcm("conf_gcm","stopped",1) 490 490 ELSE 491 491 alphax = 1. - 1./ grossismx … … 495 495 write(lunout,*) & 496 496 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 497 STOP497 CALL abort_gcm("conf_gcm","stopped",1) 498 498 ELSE 499 499 alphay = 1. - 1./ grossismy … … 517 517 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 518 518 'F alors qu il est T sur run.def ***' 519 STOP519 CALL abort_gcm("conf_gcm","stopped",1) 520 520 ENDIF 521 521 ELSE … … 524 524 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 525 525 'T alors qu il est F sur run.def **** ' 526 STOP526 CALL abort_gcm("conf_gcm","stopped",1) 527 527 ENDIF 528 528 ENDIF … … 540 540 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', & 541 541 'run.def est differente de celle lue sur le fichier start ' 542 STOP542 CALL abort_gcm("conf_gcm","stopped",1) 543 543 ENDIF 544 544 ENDIF … … 556 556 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', & 557 557 'run.def est differente de celle lue sur le fichier start ' 558 STOP558 CALL abort_gcm("conf_gcm","stopped",1) 559 559 ENDIF 560 560 ENDIF … … 571 571 write(lunout,*)'conf_gcm: La valeur de taux passee par ', & 572 572 'run.def est differente de celle lue sur le fichier start ' 573 STOP573 CALL abort_gcm("conf_gcm","stopped",1) 574 574 ENDIF 575 575 ENDIF … … 586 586 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', & 587 587 'run.def est differente de celle lue sur le fichier start ' 588 STOP588 CALL abort_gcm("conf_gcm","stopped",1) 589 589 ENDIF 590 590 ENDIF … … 607 607 write(lunout,*)' *** ysinus lu sur le fichier start est F', & 608 608 ' alors qu il est T sur run.def ***' 609 STOP609 CALL abort_gcm("conf_gcm","stopped",1) 610 610 ENDIF 611 611 ELSE … … 614 614 write(lunout,*)' *** ysinus lu sur le fichier start est T', & 615 615 ' alors qu il est F sur run.def **** ' 616 STOP616 CALL abort_gcm("conf_gcm","stopped",1) 617 617 ENDIF 618 618 ENDIF … … 644 644 type_trac = 'lmdz' 645 645 CALL getin('type_trac',type_trac) 646 647 !Config Key = config_inca648 !Config Desc = Choix de configuration de INCA649 !Config Def = none650 !Config Help = Choix de configuration de INCA :651 !Config 'none' = sans INCA652 !Config 'chem' = INCA avec calcul de chemie653 !Config 'aero' = INCA avec calcul des aerosols654 config_inca = 'none'655 CALL getin('config_inca',config_inca)656 646 657 647 !Config Key = ok_dynzon … … 725 715 write(lunout,*)' offline = ', offline 726 716 write(lunout,*)' type_trac = ', type_trac 727 write(lunout,*)' config_inca = ', config_inca728 717 write(lunout,*)' ok_dynzon = ', ok_dynzon 729 718 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins … … 765 754 IF( grossismx.LT.1. ) THEN 766 755 write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismx < 1 . *** ' 767 STOP756 CALL abort_gcm("conf_gcm","stopped",1) 768 757 ELSE 769 758 alphax = 1. - 1./ grossismx … … 772 761 IF( grossismy.LT.1. ) THEN 773 762 write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** ' 774 STOP763 CALL abort_gcm("conf_gcm","stopped",1) 775 764 ELSE 776 765 alphay = 1. - 1./ grossismy … … 855 844 type_trac = 'lmdz' 856 845 CALL getin('type_trac',type_trac) 857 858 !Config Key = config_inca859 !Config Desc = Choix de configuration de INCA860 !Config Def = none861 !Config Help = Choix de configuration de INCA :862 !Config 'none' = sans INCA863 !Config 'chem' = INCA avec calcul de chemie864 !Config 'aero' = INCA avec calcul des aerosols865 config_inca = 'none'866 CALL getin('config_inca',config_inca)867 846 868 847 !Config Key = ok_dynzon … … 1006 985 write(lunout,*)' offline = ', offline 1007 986 write(lunout,*)' type_trac = ', type_trac 1008 write(lunout,*)' config_inca = ', config_inca1009 987 write(lunout,*)' ok_dynzon = ', ok_dynzon 1010 988 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/dynetat0_loc.F90
r4143 r4482 7 7 !------------------------------------------------------------------------------- 8 8 USE parallel_lmdz 9 USE infotrac, ONLY: nqtot, tracers, niso, iqIsoPha, tnat, alpha_ideal, iH2O10 USE strings_mod, ONLY: maxlen, msg, strStack, real2str 9 USE infotrac, ONLY: nqtot, tracers, niso, iqIsoPha, iH2O, isoName 10 USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str, strIdx 11 11 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_INQUIRE_DIMENSION, NF90_INQ_VARID, & 12 12 NF90_CLOSE, NF90_GET_VAR, NF90_INQUIRE_VARIABLE, NF90_NoErr 13 USE readTracFiles_mod, ONLY: new2old Name13 USE readTracFiles_mod, ONLY: new2oldH2O, newHNO3, oldHNO3, getKey 14 14 USE control_mod, ONLY: planet_type 15 15 USE assert_eq_m, ONLY: assert_eq … … 41 41 CHARACTER(LEN=maxlen) :: mesg, var, modname, oldVar 42 42 INTEGER, PARAMETER :: length=100 43 INTEGER :: iq, fID, vID, idecal, ierr, iqParent, iName, iZone, iPhase 44 REAL :: time, t ab_cntrl(length)!--- RUN PARAMS TABLE43 INTEGER :: iq, fID, vID, idecal, ierr, iqParent, iName, iZone, iPhase, ix 44 REAL :: time, tnat, alpha_ideal, tab_cntrl(length) !--- RUN PARAMS TABLE 45 45 REAL, ALLOCATABLE :: vcov_glo(:,:),masse_glo(:,:), ps_glo(:) 46 46 REAL, ALLOCATABLE :: ucov_glo(:,:), q_glo(:,:), phis_glo(:) 47 47 REAL, ALLOCATABLE :: teta_glo(:,:) 48 LOGICAL :: lSkip, ll 48 49 !------------------------------------------------------------------------------- 49 50 modname="dynetat0_loc" … … 151 152 !--- Tracers 152 153 ALLOCATE(q_glo(ip1jmp1,llm)) 154 ll = .FALSE. 155 #ifdef REPROBUS 156 ll = NF90_INQ_VARID(fID, 'HNO3tot', vID) /= NF90_NoErr !--- DETECT OLD REPRO start.nc FILE 157 #endif 153 158 DO iq=1,nqtot 154 159 var = tracers(iq)%name 155 oldVar = new2oldName(var) 156 !-------------------------------------------------------------------------------------------------------------------------- 157 IF(NF90_INQ_VARID(fID, var, vID) == NF90_NoErr) THEN !=== REGULAR CASE 160 oldVar = new2oldH2O(var) 161 lSkip = ll .AND. var == 'HNO3' !--- FORCE "HNO3_g" READING FOR "HNO3" 162 #ifdef REPROBUS 163 ix = strIdx(newHNO3, var); IF(ix /= 0) oldVar = oldHNO3(ix) !--- REPROBUS HNO3 exceptions 164 #endif 165 #ifdef INCA 166 IF(var == 'O3') oldVar = 'OX' !--- DEAL WITH INCA OZONE EXCEPTION 167 #endif 168 !-------------------------------------------------------------------------------------------------------------------------- 169 IF(NF90_INQ_VARID(fID, var, vID) == NF90_NoErr .AND. .NOT.lSkip) THEN !=== REGULAR CASE: AVAILABLE VARIABLE 158 170 CALL get_var2(var,q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:) 159 171 !-------------------------------------------------------------------------------------------------------------------------- 160 ELSE IF(NF90_INQ_VARID(fID, oldVar, vID) == NF90_NoErr) THEN !=== OLDNAME172 ELSE IF(NF90_INQ_VARID(fID, oldVar, vID) == NF90_NoErr) THEN !=== TRY WITH ALTERNATE NAME 161 173 CALL msg('Tracer <'//TRIM(var)//'> is missing => initialized to <'//TRIM(oldVar)//'>', modname) 162 174 CALL get_var2(oldVar, q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:) 163 175 !-------------------------------------------------------------------------------------------------------------------------- 164 #ifdef INCA165 ELSE IF(NF90_INQ_VARID(fID, 'OX', vID) == NF90_NoErr .AND. var == 'O3') THEN !=== INCA: OX INSTEAD OF O3166 CALL msg('Tracer <O3> is missing => initialized to <OX>', modname)167 CALL get_var2( 'OX' , q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:)168 !--------------------------------------------------------------------------------------------------------------------------169 #endif170 176 ELSE IF(tracers(iq)%iso_iGroup == iH2O .AND. niso > 0) THEN !=== WATER ISOTOPES 171 177 iName = tracers(iq)%iso_iName … … 173 179 iqParent = tracers(iq)%iqParent 174 180 IF(tracers(iq)%iso_iZone == 0) THEN 181 IF(getKey('tnat', tnat, isoName(iName)) .OR. getKey('alpha', alpha_ideal, isoName(iName))) & 182 CALL abort_gcm(TRIM(modname), 'missing isotopic parameters', 1) 175 183 CALL msg('Tracer <'//TRIM(var)//'> is missing => initialized with a simplified Rayleigh distillation law.', modname) 176 q(ijb_u:ije_u,:,iq) = q(ijb_u:ije_u,:,iqParent)*tnat(iName)*(q(ijb_u:ije_u,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1.)184 q(ijb_u:ije_u,:,iq) = q(ijb_u:ije_u,:,iqParent)*tnat*(q(ijb_u:ije_u,:,iqParent)/30.e-3)**(alpha_ideal-1.) 177 185 ELSE 178 186 CALL msg('Tracer <'//TRIM(var)//'> is missing => initialized to its parent isotope concentration.', modname) … … 199 207 CHARACTER(LEN=*), INTENT(IN) :: str1, str2 200 208 CHARACTER(LEN=maxlen) :: s1, s2 201 IF(n1/=n2) THEN 202 s1='value of '//TRIM(str1)//' =' 203 s2=' read in starting file differs from parametrized '//TRIM(str2)//' =' 204 WRITE(mesg,'(10x,a,i4,2x,a,i4)')TRIM(ADJUSTL(s1)),n1,TRIM(ADJUSTL(s2)),n2 205 CALL ABORT_gcm(TRIM(modname),TRIM(mesg),1) 206 END IF 209 IF(n1/=n2) CALL abort_gcm(TRIM(modname), 'value of "'//TRIM(str1)//'" = '//TRIM(int2str(n1))// & 210 ' read in starting file differs from gcm value of "'//TRIM(str2)//'" = '//TRIM(int2str(n2)), 1) 207 211 END SUBROUTINE check_dim 208 212 -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/dynredem_loc.F90
r4172 r4482 176 176 USE mod_hallo 177 177 USE strings_mod, ONLY: maxlen 178 USE infotrac, ONLY: nqtot, tracers, type s_trac178 USE infotrac, ONLY: nqtot, tracers, type_trac 179 179 USE control_mod 180 180 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_GET_VAR, NF90_INQ_VARID, & … … 243 243 !$OMP MASTER 244 244 fil="start_trac.nc" 245 IF(ANY(type s_trac=='inca') .OR. ANY(types_trac=='inco')) INQUIRE(FILE=fil,EXIST=lread_inca)245 IF(ANY(type_trac == ['inca','inco'])) INQUIRE(FILE=fil,EXIST=lread_inca) 246 246 IF(lread_inca) CALL err(NF90_OPEN(fil,NF90_NOWRITE,nid_trac),"open") 247 247 !$OMP END MASTER -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/filtreg_p.F
r1907 r4482 99 99 c-------------------------------------------------------c 100 100 101 IF(ifiltre.EQ.1.or.ifiltre.EQ.-1) 102 & STOP'Pas de transformee simple dans cette version' 101 IF(ifiltre.EQ.1.or.ifiltre.EQ.-1) 102 & CALL abort_gcm("fitreg_p","Pas de transformee simple 103 &dans cette version",1) 103 104 104 105 IF( iter.EQ. 2 ) THEN 105 106 PRINT *,' Pas d iteration du filtre dans cette version !' 106 107 & , ' Utiliser old_filtreg et repasser !' 107 STOP108 CALL abort_gcm("fitreg_p","stopped",1) 108 109 ENDIF 109 110 … … 111 112 PRINT *,' Cette routine ne calcule le filtre inverse que ' 112 113 & , ' sur la grille des scalaires !' 113 STOP114 CALL abort_gcm("fitreg_p","stopped",1) 114 115 ENDIF 115 116 … … 117 118 PRINT *,' Probleme dans filtreg car ifiltre NE 2 et NE -2' 118 119 & , ' corriger et repasser !' 119 STOP120 ENDIF120 CALL abort_gcm("fitreg_p","stopped",1) 121 ENDIF 121 122 c 122 123 … … 127 128 IF( griscal ) THEN 128 129 IF( nlat. NE. jjp1 ) THEN 129 PRINT 1111 130 STOP 130 CALL abort_gcm("fitreg_p","nlat. NE. jjp1",1) 131 131 ELSE 132 132 c … … 146 146 ELSE 147 147 IF( nlat.NE.jjm ) THEN 148 PRINT 2222 149 STOP 148 CALL abort_gcm("fitreg_p","nlat. NE. jjm",1) 150 149 ELSE 151 150 c -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/gcm.F90
r4146 r4482 11 11 USE mod_const_mpi, ONLY: init_const_mpi 12 12 USE parallel_lmdz 13 USE infotrac, ONLY: nqtot, in fotrac_init13 USE infotrac, ONLY: nqtot, init_infotrac 14 14 !#ifdef CPP_PHYS 15 15 ! USE mod_interface_dyn_phys, ONLY: init_interface_dyn_phys … … 182 182 #ifdef CPP_IOIPSL 183 183 if (calend == 'earth_360d') then 184 call ioconf_calendar('360 d')184 call ioconf_calendar('360_day') 185 185 write(lunout,*)'CALENDRIER CHOISI: Terrestre a 360 jours/an' 186 186 xios_cal_type='d360' … … 205 205 ! Choix du nombre de traceurs et du schema pour l'advection 206 206 ! dans fichier traceur.def, par default ou via INCA 207 call in fotrac_init207 call init_infotrac 208 208 209 209 ! Allocation de la tableau q : champs advectes -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/guide_loc_mod.F90
r4054 r4482 40 40 REAL, PRIVATE, SAVE :: lon_min_g,lon_max_g 41 41 REAL, PRIVATE, SAVE :: tau_lon,tau_lat 42 43 REAL, PRIVATE, SAVE :: plim_guide_BL 42 44 43 45 REAL, ALLOCATABLE, DIMENSION(:), PRIVATE, SAVE :: alpha_u,alpha_v … … 118 120 CALL getpar('gamma4',.false.,gamma4,'Zone sans rappel elargie') 119 121 CALL getpar('guide_BL',.true.,guide_BL,'guidage dans C.Lim') 120 122 CALL getpar('plim_guide_BL',85000.,plim_guide_BL,'BL top presnivs value') 123 121 124 ! Sauvegarde du for�age 122 125 CALL getpar('guide_sav',.false.,guide_sav,'sauvegarde guidage') … … 453 456 else 454 457 do l=1,llm 455 alpha_pcor(l)=(1.+tanh(( 0.85-presnivs(l)/preff)/0.05))/2.458 alpha_pcor(l)=(1.+tanh(((plim_guide_BL-presnivs(l))/preff)/0.05))/2. 456 459 enddo 457 460 endif … … 499 502 write(*,*)trim(modname)//' second pass in advreel at itau=',& 500 503 itau 501 stop504 CALL abort_gcm("guide_loc_lod","stopped",1) 502 505 ELSE 503 506 !$OMP MASTER … … 1526 1529 if (gamma.lt.1.e-5) then 1527 1530 write(*,*)trim(modname)//' gamma =',gamma,'<1e-5' 1528 stop1531 CALL abort_gcm("guide_loc_mod","stopped",1) 1529 1532 endif 1530 1533 gamma=log(0.5)/log(gamma) -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/iniacademic_loc.F90
r4143 r4482 5 5 6 6 USE filtreg_mod, ONLY: inifilr 7 USE infotrac, ONLY: nqtot, niso, tnat, alpha_ideal, iqIsoPha, tracers7 USE infotrac, ONLY: nqtot, niso, iqIsoPha, tracers, getKey, isoName 8 8 USE control_mod, ONLY: day_step,planet_type 9 9 use exner_hyb_m, only: exner_hyb … … 19 19 USE comconst_mod, ONLY: cpp, kappa, g, daysec, dtvr, pi, im, jm 20 20 USE logic_mod, ONLY: iflag_phys, read_start 21 USE comvert_mod, ONLY: ap, bp, preff, p resnivs, pressure_exner21 USE comvert_mod, ONLY: ap, bp, preff, pa, presnivs, pressure_exner 22 22 USE temps_mod, ONLY: annee_ref, day_ini, day_ref 23 23 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 24 24 USE readTracFiles_mod, ONLY: addPhase 25 use netcdf, only : NF90_NOWRITE,NF90_OPEN,NF90_NOERR,NF90_INQ_VARID 26 use netcdf, only : NF90_CLOSE, NF90_GET_VAR 27 25 28 26 29 ! Author: Frederic Hourdin original: 15/01/93 … … 68 71 INTEGER i,j,l,lsup,ij, iq, iName, iPhase, iqParent 69 72 73 integer :: nid_relief,varid,ierr 74 real, dimension(iip1,jjp1) :: relief 75 76 70 77 REAL teta0,ttp,delt_y,delt_z,eps ! Constantes pour profil de T 71 78 REAL k_f,k_c_a,k_c_s ! Constantes de rappel … … 77 84 integer idum 78 85 79 REAL zdtvr 86 REAL zdtvr, tnat, alpha_ideal 80 87 81 88 character(len=*),parameter :: modname="iniacademic" … … 126 133 ! allocate global fields: 127 134 ! allocate(vcov_glo(ip1jm,llm)) 135 128 136 allocate(ucov_glo(ip1jmp1,llm)) 129 137 allocate(teta_glo(ip1jmp1,llm)) … … 133 141 134 142 ! surface pressure 135 if (iflag_phys>2) then 136 ! specific value for CMIP5 aqua/terra planets 137 ! "Specify the initial dry mass to be equivalent to 138 ! a global mean surface pressure (101325 minus 245) Pa." 139 ps_glo(:)=101080. 140 else 141 ! use reference surface pressure 142 ps_glo(:)=preff 143 ps_glo(:)=preff 144 145 !------------------------------------------------------------------ 146 ! Lecture eventuelle d'un fichier de relief interpollee sur la grille 147 ! du modele. 148 ! On suppose que le fichier relief_in.nc est stoké sur une grille 149 ! iim*jjp1 150 ! Facile a créer à partir de la commande 151 ! cdo remapcon,fichier_output_phys.nc Relief.nc relief_in.nc 152 !------------------------------------------------------------------ 153 154 relief=0. 155 ierr = NF90_OPEN ('relief_in.nc', NF90_NOWRITE,nid_relief) 156 if (ierr.EQ.NF90_NOERR) THEN 157 ierr=NF90_INQ_VARID(nid_relief,'RELIEF',varid) 158 if (ierr==NF90_NOERR) THEN 159 ierr=NF90_GET_VAR(nid_relief,varid,relief(1:iim,1:jjp1)) 160 relief(iip1,:)=relief(1,:) 161 else 162 CALL abort_gcm ('iniacademic','variable RELIEF pas la',1) 163 endif 143 164 endif 144 145 ! ground geopotential 146 phis_glo(:)=0. 165 ierr = NF90_CLOSE (nid_relief) 166 167 168 !------------------------------------------------------------------ 169 ! Initialisation du geopotentiel au sol et de la pression 170 !------------------------------------------------------------------ 171 172 print*,'relief=',minval(relief),maxval(relief),'g=',g 173 do j=1,jjp1 174 do i=1,iip1 175 phis_glo((j-1)*iip1+i)=g*relief(i,j) 176 enddo 177 enddo 178 print*,'phis=',minval(phis),maxval(phis),'g=',g 179 147 180 CALL pression ( ip1jmp1, ap, bp, ps_glo, p ) 148 181 if (pressure_exner) then … … 290 323 iqParent = tracers(iq)%iqParent 291 324 IF(tracers(iq)%iso_iZone == 0) THEN 292 q(ijb_u:ije_u,:,iq) = q(ijb_u:ije_u,:,iqParent)*tnat(iName) & 293 *(q(ijb_u:ije_u,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1.) 325 IF(getKey('tnat', tnat, isoName(iName)) .OR. getKey('alpha', alpha_ideal, isoName(iName))) & 326 CALL abort_gcm(TRIM(modname), 'missing isotopic parameters', 1) 327 q(ijb_u:ije_u,:,iq) = q(ijb_u:ije_u,:,iqParent)*tnat*(q(ijb_u:ije_u,:,iqParent)/30.e-3)**(alpha_ideal-1.) 294 328 ELSE 295 329 q(ijb_u:ije_u,:,iq) = q(ijb_u:ije_u,:,iqIsoPha(iName,iPhase)) -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/leapfrog_loc.F
r4203 r4482 1519 1519 1520 1520 #ifdef INCA 1521 if (ANY(types_trac == 'inca') .OR. 1522 & ANY(types_trac == 'inco')) CALL finalize_inca 1521 if (ANY(type_trac == ['inca','inco'])) CALL finalize_inca 1523 1522 #endif 1524 1523 #ifdef REPROBUS 1525 if ( ANY(types_trac == 'repr')) CALL finalize_reprobus1524 if (type_trac == 'repr') CALL finalize_reprobus 1526 1525 #endif 1527 1526 … … 1569 1568 1570 1569 #ifdef INCA 1571 if (ANY(types_trac == 'inca') .OR. 1572 & ANY(types_trac == 'inco')) CALL finalize_inca 1570 if (ANY(type_trac == ['inca','inco'])) CALL finalize_inca 1573 1571 #endif 1574 1572 #ifdef REPROBUS 1575 if ( ANY(types_trac == 'repr')) CALL finalize_reprobus1573 if (type_trac == 'repr') CALL finalize_reprobus 1576 1574 #endif 1577 1575 … … 1737 1735 1738 1736 #ifdef INCA 1739 if (ANY(types_trac == 'inca') .OR. 1740 & ANY(types_trac == 'inco')) CALL finalize_inca 1737 if (ANY(type_trac == ['inca','inco'])) CALL finalize_inca 1741 1738 #endif 1742 1739 #ifdef REPROBUS 1743 if ( ANY(types_trac == 'repr')) CALL finalize_reprobus1740 if (type_trac == 'repr') CALL finalize_reprobus 1744 1741 #endif 1745 1742 … … 1845 1842 1846 1843 #ifdef INCA 1847 if (ANY(types_trac == 'inca') .OR. 1848 & ANY(types_trac == 'inco')) CALL finalize_inca 1844 if (ANY(type_trac == ['inca','inco'])) CALL finalize_inca 1849 1845 #endif 1850 1846 #ifdef REPROBUS 1851 if ( ANY(types_trac == 'repr')) CALL finalize_reprobus1847 if (type_trac == 'repr') CALL finalize_reprobus 1852 1848 #endif 1853 1849 -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/mod_filtreg_p.F
r2125 r4482 85 85 86 86 INTEGER :: sdd1_type, sdd2_type 87 CHARACTER (LEN=132) :: abort_message 87 88 88 89 IF (first) THEN … … 103 104 104 105 IF(ifiltre.EQ.1.or.ifiltre.EQ.-1) 105 & STOP'Pas de transformee simple dans cette version' 106 & CALL abort_gcm("mod_filtreg_p",'Pas de transformee 107 &simple dans cette version',1) 106 108 107 109 IF( iter.EQ. 2 ) THEN 108 110 PRINT *,' Pas d iteration du filtre dans cette version !' 109 111 & , ' Utiliser old_filtreg et repasser !' 110 STOP112 CALL abort_gcm("mod_filtreg_p","stopped",1) 111 113 ENDIF 112 114 … … 114 116 PRINT *,' Cette routine ne calcule le filtre inverse que ' 115 117 & , ' sur la grille des scalaires !' 116 STOP118 CALL abort_gcm("mod_filtreg_p","stopped",1) 117 119 ENDIF 118 120 … … 120 122 PRINT *,' Probleme dans filtreg car ifiltre NE 2 et NE -2' 121 123 & , ' corriger et repasser !' 122 STOP124 CALL abort_gcm("mod_filtreg_p","stopped",1) 123 125 ENDIF 124 126 c … … 130 132 IF( griscal ) THEN 131 133 IF( nlat. NE. jjp1 ) THEN 132 PRINT 1111 133 STOP 134 CALL abort_gcm("mod_filtreg_p"," nlat. NE. jjp1",1) 134 135 ELSE 135 136 c … … 149 150 ELSE 150 151 IF( nlat.NE.jjm ) THEN 151 PRINT 2222 152 STOP 152 CALL abort_gcm("mod_filtreg_p"," nlat. NE. jjm",1) 153 153 ELSE 154 154 c -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/mod_hallo.F90
r2620 r4482 154 154 if (Buffer_pos(Index_pos)+Size>MaxBufferSize) then 155 155 print *,'STOP :: La taille de MaxBufferSize dans mod_hallo.F90 est trop petite !!!!' 156 stop156 CALL abort_gcm("mod_hallo","stopped",1) 157 157 endif 158 158 159 159 if (Index_pos>=ListSize) then 160 160 print *,'STOP :: La taille de ListSize dans mod_hallo.F90 est trop petite !!!!' 161 stop161 CALL abort_gcm("mod_hallo","stopped",1) 162 162 endif 163 163 … … 1416 1416 IF (.NOT.using_mpi) THEN 1417 1417 PRINT *,'Erreur, echange MPI en mode sequentiel !!!' 1418 STOP1418 CALL abort_gcm("mod_hallo","stopped",1) 1419 1419 ENDIF 1420 1420 ! PRINT *,"-------------------------------------------------------------------" … … 1459 1459 IF (.NOT.using_mpi) THEN 1460 1460 PRINT *,'Erreur, echange MPI en mode sequentiel !!!' 1461 STOP1461 CALL abort_gcm("mod_hallo","stopped",1) 1462 1462 ENDIF 1463 1463 -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/mod_xios_dyn3dmem.F90
r4146 r4482 29 29 MODULE PROCEDURE writefield_dyn1d_v, writefield_dyn2d_v 30 30 END INTERFACE writefield_dyn_v 31 32 REAL, ALLOCATABLE, SAVE :: NewField_U(:,:,:), NewField_V(:,:,:) 31 33 32 34 … … 63 65 ! 0 Initialisations 64 66 pi = 4. * ATAN (1.) 67 ! allocation of fields passed to xios 68 !$OMP BARRIER 69 !$OMP MASTER 70 allocate(NewField_U(iip1, jj_begin:jj_end, llm)) 71 allocate(NewField_V(iip1, jj_begin:jj_end, llm)) 72 !$OMP END MASTER 73 !$OMP BARRIER 65 74 66 75 ! 1 Context initialisation … … 151 160 CHARACTER(LEN=*) :: name 152 161 REAL, DIMENSION(ij_begin:ij_end,llm) :: Field 153 REAL, DIMENSION(iip1, jj_begin:jj_end,llm) :: NewField 162 ! REAL, ALLOCATABLE, SAVE :: NewField(:,:,:) 154 163 INTEGER :: i,j,l, count 155 164 156 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 165 !!!!!$OMP BARRIER 166 !!!!!$OMP MASTER 167 !!!! allocate(NewField(iip1, jj_begin:jj_end, llm)) 168 !!!!!$OMP END MASTER 169 !!!!!$OMP BARRIER 170 171 172 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 157 173 DO l = 1, llm 158 NewField (:,jj_begin:jj_end,l)=reshape(Field(ij_begin:ij_end,l),(/iip1,jj_nb/))174 NewField_U(:,jj_begin:jj_end,l)=reshape(Field(ij_begin:ij_end,l),(/iip1,jj_nb/)) 159 175 ENDDO 160 176 !$OMP ENDDO … … 162 178 163 179 !$OMP MASTER 164 !! write(14,*)'iip1,ij_begin,ij_end,llm,jj_begin,jj_end,jj_nb ',iip1,ij_begin,ij_end,llm,jj_begin,jj_end,jj_nb 165 166 CALL xios_send_field(name, NewField) 167 !$OMP END MASTER180 CALL xios_send_field(name, NewField_U) 181 !!!! DEALLOCATE(NewField) 182 !$OMP END MASTER 183 !$OMP BARRIER 168 184 169 185 END SUBROUTINE writefield_dyn2d_u … … 207 223 CHARACTER(LEN=*) :: name 208 224 REAL, DIMENSION(ij_begin:ij_end,llm) :: Field 209 REAL, DIMENSION(iip1, jj_begin:jj_end,llm) :: NewField 225 !!!! REAL, ALLOCATABLE, SAVE :: NewField(:,:,:) 210 226 INTEGER :: l, jje, ije, jjn 227 228 !!!!!$OMP BARRIER 229 !!!!!$OMP MASTER 230 !!!! allocate(NewField(iip1, jj_begin:jj_end,llm)) 231 !!!!!$OMP END MASTER 232 !!!!!$OMP BARRIER 211 233 212 234 IF (pole_sud) THEN … … 223 245 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 224 246 DO l = 1, llm 225 NewField (:,jj_begin:jje,l)=reshape(Field(ij_begin:ije,l),(/iip1,jjn/))247 NewField_V(:,jj_begin:jje,l)=reshape(Field(ij_begin:ije,l),(/iip1,jjn/)) 226 248 ENDDO 227 249 !$OMP ENDDO 228 229 250 !$OMP BARRIER 230 !$OMP MASTER 231 CALL xios_send_field(name, NewField(:,jj_begin:jje,:)) 232 !$OMP END MASTER 251 252 !$OMP MASTER 253 CALL xios_send_field(name, NewField_V(:,jj_begin:jje,:)) 254 !!!! DEALLOCATE(NewField) 255 !$OMP END MASTER 256 !$OMP BARRIER 233 257 234 258 END SUBROUTINE writefield_dyn2d_v -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/parallel_lmdz.F90
r3995 r4482 676 676 else 677 677 write(lunout,*)ij 678 stop 'erreur dans Gather_Field'678 CALL abort_gcm("parallel_lmdz","erreur dans Gather_Field",1) 679 679 endif 680 680 … … 690 690 Recv_count(i)=(min(jj_end_para(i),jjm)-jj_begin_para(i)+1)*ll*iip1 691 691 else 692 stop 'erreur dans Gather_Field'692 CALL abort_gcm("parallel_lmdz","erreur dans Gather_Field",1) 693 693 endif 694 694 -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/qminimum_loc.F
r4143 r4482 55 55 c 56 56 57 c$OMP BARRIER 58 57 59 !write(lunout,*) 'qminimum 52: entree' 58 60 IF(first) THEN … … 66 68 ije=ij_end 67 69 68 zx_defau_diag(ijb:ije,:,:)=0.0 69 q_follow(ijb:ije,:,1:2)=q(ijb:ije,:,1:2) 70 DO k = 1, llm 71 c$OMP DO SCHEDULE(STATIC) 72 DO i = ijb, ije 73 zx_defau_diag(i,k,1)=0.0 74 zx_defau_diag(i,k,2)=0.0 75 q_follow(i,k,1)=q(i,k,1) 76 q_follow(i,k,2)=q(i,k,2) 77 ENDDO 78 c$OMP END DO NOWAIT 79 ENDDO 70 80 71 81 !write(lunout,*) 'qminimum 57' 72 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)73 82 DO 1000 k = 1, llm 83 c$OMP DO SCHEDULE(STATIC) 74 84 DO 1040 i = ijb, ije 75 85 if (seuil_liq - q(i,k,iq_liq) .gt. 0.d0 ) then … … 82 92 endif 83 93 1040 CONTINUE 94 c$OMP END DO NOWAIT 84 95 1000 CONTINUE 85 c$OMP END DO NOWAIT86 c$OMP BARRIER87 c ---> SYNCHRO OPENMP ICI88 89 96 90 97 c … … 113 120 c$OMP END DO NOWAIT 114 121 ENDDO 115 c$OMP BARRIER116 122 117 123 c … … 130 136 ENDIF 131 137 ENDDO 132 c$OMP END DO 138 c$OMP END DO NOWAIT 133 139 ! pompe = SSUM(ije-ijb+1,zx_pump(ijb),1) 134 140 … … 162 168 endif !if (zx_pump(i).gt.0.0) then 163 169 enddo !DO i = ijb, ije 164 c$OMP END DO 170 c$OMP END DO NOWAIT 165 171 166 172 ! 2) transfert de vap vers les couches plus hautes … … 206 212 write(*,*) 'q(i,k-1,iqIsoPha(ixt,iq_vap))=', 207 213 : q(i,k-1,iqIsoPha(ixt,iq_vap)) 208 stop214 CALL abort_gcm("qminimum_loc","stopped",1) 209 215 endif 210 216 endif … … 231 237 write(*,*) 'q(i,k-1,iqIsoPha(ixt,iq_vap))=', 232 238 : q(i,k-1,iqIsoPha(ixt,iq_vap)) 233 stop239 CALL abort_gcm("qminimum_loc","stopped",1) 234 240 endif 235 241 endif … … 243 249 endif !if (zx_defau_diag(i,k,iq_vap).gt.0.0) then 244 250 enddo !DO i = 1, ip1jmp1 245 c$OMP END DO 251 c$OMP END DO NOWAIT 246 252 enddo !do k=2,llm 247 253 … … 272 278 endif !if (zx_defau_diag(i,k,iq_vap).gt.0.0) then 273 279 enddo !DO i = ijb, ije 274 c$OMP END DO 280 c$OMP END DO NOWAIT 275 281 enddo !do k=2,llm 276 282 … … 279 285 endif !if (niso > 0) then 280 286 !write(*,*) 'qminimum 188' 287 c$OMP BARRIER 288 281 289 c 282 290 RETURN -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/times.F90
r1907 r4482 55 55 56 56 if (timer_state(no_timer)/=stopped) then 57 stop 'start_timer :: timer is already running or suspended'57 CALL abort_gcm("times","start_timer :: timer is already running or suspended",1) 58 58 else 59 59 timer_state(no_timer)=running … … 73 73 if (AllTimer_IsActive) then 74 74 if (timer_state(no_timer)/=running) then 75 stop 'suspend_timer :: timer is not running'75 CALL abort_gcm("times","suspend_timer :: timer is not running",1) 76 76 else 77 77 timer_state(no_timer)=suspended … … 90 90 if (AllTimer_IsActive) then 91 91 if (timer_state(no_timer)/=suspended) then 92 stop 'resume_timer :: timer is not suspended'92 CALL abort_gcm("times","resume_timer :: timer is not suspended",1) 93 93 else 94 94 timer_state(no_timer)=running … … 110 110 111 111 if (timer_state(no_timer)/=running) then 112 stop 'stop_timer :: timer is not running'112 CALL abort_gcm("times","stop_timer :: timer is not running",1) 113 113 else 114 114 timer_state(no_timer)=stopped -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/vlsplt_loc.F
r4143 r4482 210 210 c$OMP END DO NOWAIT 211 211 #endif 212 c stop213 212 214 213 c go to 9999 … … 351 350 c$OMP END DO NOWAIT 352 351 enddo !do ifils=1,tracers(iq)%nqDescen 353 do ifils=1,tracers(iq)%nqChild s352 do ifils=1,tracers(iq)%nqChildren 354 353 iq2=tracers(iq)%iqDescen(ifils) 355 354 call vlx_loc(Ratio,pente_max,masse,u_mq,ijb_x,ije_x,iq2) … … 726 725 ! CRisi: appel récursif de l'advection sur les fils. 727 726 ! Il faut faire ça avant d'avoir mis à jour q et masse 728 !write(*,*) 'vly 689: iq,nqChilds(iq)=',iq,tracers(iq)%nqChilds 727 ! write(*,*)'vly 689: iq,nqChildren(iq)=',iq,tracers(iq)%nqChildren 729 728 730 729 ijb=ij_begin-2*iip1 … … 761 760 enddo 762 761 763 do ifils=1,tracers(iq)%nqChild s762 do ifils=1,tracers(iq)%nqChildren 764 763 iq2=tracers(iq)%iqDescen(ifils) 765 764 call vly_loc(Ratio,pente_max,masse,qbyv,iq2) … … 1148 1147 ! CRisi: appel récursif de l'advection sur les fils. 1149 1148 ! Il faut faire ça avant d'avoir mis à jour q et masse 1150 !write(*,*) 'vlsplt 942: iq,nqChilds(iq)=',iq,tracers(iq)%nqChilds 1149 ! write(*,*)'vlsplt 942: iq,nqChildren(iq)=',iq,tracers(iq)%nqChildren 1151 1150 do ifils=1,tracers(iq)%nqDescen 1152 1151 iq2=tracers(iq)%iqDescen(ifils) … … 1169 1168 c$OMP BARRIER 1170 1169 1171 do ifils=1,tracers(iq)%nqChild s1170 do ifils=1,tracers(iq)%nqChildren 1172 1171 iq2=tracers(iq)%iqDescen(ifils) 1173 1172 call vlz_loc(Ratio,pente_max,masse,w,ijb_x,ije_x,iq2) -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/vlspltgen_loc.F
r4143 r4482 1 ! 1 2 ! 2 3 ! $Header$ 3 4 ! … … 259 260 c$OMP END MASTER 260 261 CASE DEFAULT 261 stop 'vlspltgen_p : schema non parallelise' 262 262 CALL abort_gcm("vlspltgen_loc","schema non parallelise",1) 263 263 END SELECT 264 264 … … 302 302 #endif 303 303 CASE DEFAULT 304 stop 'vlspltgen_p : schema non parallelise' 305 304 CALL abort_gcm("vlspltgen_p","schema non parallelise",1) 306 305 END SELECT 307 306 … … 346 345 CASE(14); call vlyqs_loc(zq,pente_max,zm,mv,qsat,iq) 347 346 CASE DEFAULT 348 stop 'vlspltgen_p : schema non parallelise'347 CALL abort_gcm("vlspltgen_p","schema non parallelise",1) 349 348 END SELECT 350 349 … … 392 391 c$OMP BARRIER 393 392 CASE DEFAULT 394 stop 'vlspltgen_p : schema non parallelise'395 396 END SELECT393 394 CALL abort_gcm("vlspltgen_p","schema non parallelise",1) 395 END SELECT 397 396 398 397 enddo … … 429 428 c$OMP BARRIER 430 429 CASE DEFAULT 431 stop 'vlspltgen_p : schema non parallelise'430 CALL abort_gcm("vlspltgen_p","schema non parallelise",1) 432 431 END SELECT 433 432 … … 466 465 CASE(10); call vly_loc(zq,pente_max,zm,mv, iq) 467 466 CASE(14); call vlyqs_loc(zq,pente_max,zm,mv,qsat,iq) 468 CASE DEFAULT; stop 'vlspltgen_p : schema non parallelise' 467 CASE DEFAULT 468 CALL abort_gcm("vlspltgen_p","schema non parallelise",1) 469 469 END SELECT 470 470 … … 486 486 CASE(14); call vlxqs_loc(zq,pente_max,zm,mu, 487 487 & qsat, ij_begin,ij_end,iq) 488 CASE DEFAULT; stop 'vlspltgen_p : schema non parallelise' 488 CASE DEFAULT 489 CALL abort_gcm("vlspltgen_p","schema non parallelise",1) 489 490 END SELECT 490 491 -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/vlspltqs_loc.F
r4143 r4482 74 74 DO ij=ijb,ije-1 75 75 dxqu(ij)=q(ij+1,l,iq)-q(ij,l,iq) 76 c IF(u_m(ij,l).lt.0.) stop'limx n admet pas les U<0'77 c sigu(ij)=u_m(ij,l)/masse(ij,l,iq)78 76 ENDDO 79 77 DO ij=ijb+iip1-1,ije,iip1 … … 337 335 ! CRisi: appel recursif de l'advection sur les fils. 338 336 ! Il faut faire ca avant d'avoir mis a jour q et masse 339 !write(*,*) 'vlspltqs 336: iq,ijb_x,nqChild s(iq)=',340 ! & iq,ijb_x,tracers(iq)%nqChild s337 !write(*,*) 'vlspltqs 336: iq,ijb_x,nqChildren(iq)=', 338 ! & iq,ijb_x,tracers(iq)%nqChildren 341 339 342 340 do ifils=1,tracers(iq)%nqDescen … … 356 354 c$OMP END DO NOWAIT 357 355 enddo 358 do ifils=1,tracers(iq)%nqChild s356 do ifils=1,tracers(iq)%nqChildren 359 357 iq2=tracers(iq)%iqDescen(ifils) 360 358 !write(*,*) 'vlxqs 349: on appelle vlx pour iq2=',iq2 … … 729 727 ! CRisi: appel recursif de l'advection sur les fils. 730 728 ! Il faut faire ca avant d'avoir mis a jour q et masse 731 !write(*,*) 'vlyqs 689: iq,nqChilds(iq)=',iq,tracers(iq)%nqChilds 729 ! write(*,*)'vlyqs 689: iq,nqChildren(iq)=',iq, 730 ! & tracers(iq)%nqChildren 732 731 733 732 ijb=ij_begin-2*iip1 … … 767 766 c$OMP END DO NOWAIT 768 767 enddo 769 do ifils=1,tracers(iq)%nqChild s768 do ifils=1,tracers(iq)%nqChildren 770 769 iq2=tracers(iq)%iqDescen(ifils) 771 770 !write(lunout,*) 'vly: appel recursiv vly iq2=',iq2 -
LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/wrgrads.F
r1907 r4482 76 76 print*,'nvar ',nvar(if) 77 77 print*,'vars ',(var(iv,if),iv=1,nvar(if)) 78 79 stop 78 CALL abort_gcm("wrgrads","problem",1) 80 79 endif 81 80 endif
Note: See TracChangeset
for help on using the changeset viewer.