Changeset 3623 for trunk/LMDZ.PLUTO/libf
- Timestamp:
- Feb 12, 2025, 7:09:35 PM (22 hours ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.PLUTO/libf/phypluto/writediagfi.F
r3184 r3623 1 1 subroutine writediagfi(ngrid,nom,titre,unite,dim,px) 2 2 3 ! Ecriture de variables diagnostiques au choix dans la physique 3 ! Ecriture de variables diagnostiques au choix dans la physique 4 4 ! dans un fichier NetCDF nomme 'diagfi'. Ces variables peuvent etre 5 5 ! 3d (ex : temperature), 2d (ex : temperature de surface), ou … … 7 7 ! solaire) 8 8 ! (ou encore 1d, dans le cas de testphys1d, pour sortir une colonne) 9 ! La periode d'ecriture est donnee par 9 ! La periode d'ecriture est donnee par 10 10 ! "ecritphy " regle dans le fichier de controle de run : run.def 11 11 ! … … 16 16 ! WARNING : les variables dynamique (u,v,t,q,ps) 17 17 ! sauvees par writediagfi avec une 18 ! date donnee sont legerement differentes que dans le fichier histoire car 18 ! date donnee sont legerement differentes que dans le fichier histoire car 19 19 ! on ne leur a pas encore ajoute de la dissipation et de la physique !!! 20 20 ! IL est RECOMMANDE d'ajouter les tendance physique a ces variables 21 21 ! avant l'ecriture dans diagfi (cf. physiq.F) 22 ! 22 ! 23 23 ! Modifs: Aug.2010 Ehouarn: enforce outputs to be real*4 24 24 ! Oct 2011 Francois: enable having a 'diagfi.def' file to select … … 30 30 ! (ngrid = 2+(jjm-1)*iim - 1/jjm) 31 31 ! (= nlon ou klon dans la physique terrestre) 32 ! 32 ! 33 33 ! unit : unite logique du fichier de sortie (toujours la meme) 34 34 ! nom : nom de la variable a sortir (chaine de caracteres) … … 99 99 logical,save :: firstcall=.true. 100 100 !$OMP THREADPRIVATE(firstcall) !diagfi_def,n_nom_def,nom_def read in diagfi.def 101 101 102 102 #ifdef CPP_PARA 103 103 ! Added to work in parallel mode … … 145 145 read(99,fmt='(a)',end=88) nom_def(n) 146 146 write(*,*) 'Output in diagfi: ', trim(nom_def(n)) 147 end do 147 if (nom_def(n).eq.'temp') then 148 write(*,*) 'WARNING: "temp" is outdated.' 149 write(*,*) 'Do you really have a "temp" variable?' 150 write(*,*) 'Otherwise use "temperature" instead.' 151 end if 152 end do 148 153 88 continue 149 154 if (n.ge.n_nom_def_max) then … … 151 156 call abort_physic("writediagfi", 152 157 & "n_nom_def_max too small",1) 153 end if 158 end if 154 159 n_nom_def=n-1 155 160 close(99) … … 185 190 call abort_physic("writediagfi","firstnom too short",1) 186 191 endif 187 192 188 193 zitau = -1 ! initialize zitau 189 194 … … 242 247 enddo 243 248 ENDIF 244 249 245 250 ! write "header" of file (longitudes, latitudes, geopotential, ...) 246 251 IF (klon_glo>1) THEN ! general 3D case … … 299 304 write(*,*) "***** PUT_VAR matter in writediagfi_nc" 300 305 write(*,*) "***** with time" 301 write(*,*) 'ierr=', ierr,": ",NF_STRERROR(ierr) 306 write(*,*) 'ierr=', ierr,": ",NF_STRERROR(ierr) 302 307 c call abort 303 308 endif … … 372 377 & trim(nom)//" already exists",1) 373 378 endif 374 endif 379 endif 375 380 376 381 corner(1)=1 … … 407 412 call abort_physic("writediagfi", 408 413 & "failed writing "//trim(nom),1) 409 endif 414 endif 410 415 411 416 endif !of if (is_master) … … 491 496 492 497 !#ifdef NC_DOUBLE 493 ! ierr = NF_PUT_VARA_DOUBLE (nid,varid,corner,edges,dx2) 494 !#else 498 ! ierr = NF_PUT_VARA_DOUBLE (nid,varid,corner,edges,dx2) 499 !#else 495 500 IF (klon_glo>1) THEN ! General case 496 501 ierr= NF_PUT_VARA_REAL(nid,varid,corner,edges,dx2) … … 498 503 ierr= NF_PUT_VARA_REAL(nid,varid,corner,edges,dx2_1d) 499 504 ENDIF 500 !#endif 505 !#endif 501 506 502 507 if (ierr.ne.NF_NOERR) then … … 506 511 call abort_physic("writediagfi", 507 512 & "failed writing "//trim(nom),1) 508 endif 513 endif 509 514 510 515 endif !of if (is_master) … … 525 530 dx1(l)=px(1,l) 526 531 enddo 527 532 528 533 ierr= NF_INQ_VARID(nid,nom,varid) 529 534 if (ierr /= NF_NOERR) then … … 538 543 539 544 call def_var(nid,nom,titre,unite,2,id,varid,ierr) 540 545 541 546 else 542 547 if (ntime==0) then … … 548 553 endif 549 554 endif 550 555 551 556 corner(1)=1 552 557 corner(2)=ntime 553 558 554 559 edges(1)=nbp_lev 555 560 edges(2)=1 … … 566 571 call abort_physic("writediagfi", 567 572 & "failed writing "//trim(nom),1) 568 endif 573 endif 569 574 570 575 !Case of a 0D variable (ie: a time-dependent scalar) … … 603 608 604 609 !#ifdef NC_DOUBLE 605 ! ierr = NF_PUT_VARA_DOUBLE (nid,varid,corner,edges,dx0) 610 ! ierr = NF_PUT_VARA_DOUBLE (nid,varid,corner,edges,dx0) 606 611 !#else 607 612 ierr= NF_PUT_VARA_REAL(nid,varid,corner,edges,dx0) … … 613 618 call abort_physic("writediagfi", 614 619 & "failed writing "//trim(nom),1) 615 endif 620 endif 616 621 617 622 endif !of if (is_master)
Note: See TracChangeset
for help on using the changeset viewer.