Changeset 1441 for trunk/LMDZ.COMMON/libf/misc
- Timestamp:
- Jun 4, 2015, 10:21:20 AM (10 years ago)
- Location:
- trunk/LMDZ.COMMON/libf/misc
- Files:
-
- 1 added
- 1 edited
- 7 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/misc/coefpoly_m.F90
r1440 r1441 1 ! 2 ! $Header$ 3 ! 4 SUBROUTINE coefpoly ( Xf1, Xf2, Xprim1, Xprim2, xtild1,xtild2 , 5 , a0,a1,a2,a3 ) 6 IMPLICIT NONE 7 c 8 c ... Auteur : P. Le Van ... 9 c 10 c 11 c Calcul des coefficients a0, a1, a2, a3 du polynome de degre 3 qui 12 c satisfait aux 4 equations suivantes : 1 module coefpoly_m 13 2 14 c a0 + a1*xtild1 + a2*xtild1*xtild1 + a3*xtild1*xtild1*xtild1 = Xf1 15 c a0 + a1*xtild2 + a2*xtild2*xtild2 + a3*xtild2*xtild2*xtild2 = Xf2 16 c a1 + 2.*a2*xtild1 + 3.*a3*xtild1*xtild1 = Xprim1 17 c a1 + 2.*a2*xtild2 + 3.*a3*xtild2*xtild2 = Xprim2 3 IMPLICIT NONE 18 4 19 c On en revient a resoudre un systeme de 4 equat.a 4 inconnues a0,a1,a2,a35 contains 20 6 21 REAL(KIND=8) Xf1, Xf2,Xprim1,Xprim2, xtild1,xtild2, xi 22 REAL(KIND=8) Xfout, Xprim 23 REAL(KIND=8) a1,a2,a3,a0, xtil1car, xtil2car,derr,x1x2car 7 SUBROUTINE coefpoly(xf1, xf2, xprim1, xprim2, xtild1, xtild2, a0, a1, a2, a3) 24 8 25 xtil1car = xtild1 * xtild1 26 xtil2car = xtild2 * xtild2 9 ! From LMDZ4/libf/dyn3d/coefpoly.F, version 1.1.1.1 2004/05/19 12:53:05 27 10 28 derr= 2. *(Xf2-Xf1)/( xtild1-xtild2)11 ! Author: P. Le Van 29 12 30 x1x2car = ( xtild1-xtild2)*(xtild1-xtild2) 13 ! Calcul des coefficients a0, a1, a2, a3 du polynôme de degré 3 qui 14 ! satisfait aux 4 équations suivantes : 31 15 32 a3 = (derr + Xprim1+Xprim2 )/x1x2car 33 a2 = ( Xprim1 - Xprim2 + 3.* a3 * ( xtil2car-xtil1car ) ) / 34 / ( 2.* ( xtild1 - xtild2 ) ) 16 ! a0 + a1 * xtild1 + a2 * xtild1**2 + a3 * xtild1**3 = Xf1 17 ! a0 + a1 * xtild2 + a2 * xtild2**2 + a3 * xtild2**3 = Xf2 18 ! a1 + 2. * a2 * xtild1 + 3. * a3 * xtild1**2 = Xprim1 19 ! a1 + 2. * a2 * xtild2 + 3. * a3 * xtild2**2 = Xprim2 35 20 36 a1 = Xprim1 -3.* a3 * xtil1car -2.* a2 * xtild137 a0 = Xf1 - a3 * xtild1* xtil1car -a2 * xtil1car - a1 *xtild121 ! (passe par les points (Xf(it), xtild(it)) et (Xf(it + 1), 22 ! xtild(it + 1)) 38 23 39 RETURN 40 END 24 ! On en revient à resoudre un système de 4 équations à 4 inconnues 25 ! a0, a1, a2, a3. 26 27 use nrtype, only: k8 28 29 REAL(K8), intent(in):: xf1, xf2, xprim1, xprim2, xtild1, xtild2 30 REAL(K8), intent(out):: a0, a1, a2, a3 31 32 ! Local: 33 REAL(K8) xtil1car, xtil2car, derr, x1x2car 34 35 !------------------------------------------------------------ 36 37 xtil1car = xtild1 * xtild1 38 xtil2car = xtild2 * xtild2 39 40 derr = 2. * (xf2-xf1)/(xtild1-xtild2) 41 42 x1x2car = (xtild1-xtild2) * (xtild1-xtild2) 43 44 a3 = (derr+xprim1+xprim2)/x1x2car 45 a2 = (xprim1-xprim2+3. * a3 * (xtil2car-xtil1car))/(2. * (xtild1-xtild2)) 46 47 a1 = xprim1 - 3. * a3 * xtil1car - 2. * a2 * xtild1 48 a0 = xf1 - a3 * xtild1 * xtil1car - a2 * xtil1car - a1 * xtild1 49 50 END SUBROUTINE coefpoly 51 52 end module coefpoly_m -
trunk/LMDZ.COMMON/libf/misc/wxios.F90
r1302 r1441 93 93 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 94 94 ! Routine d'initialisation !!!!!!!!!!!!! 95 ! A lancer juste apr ès mpi_init !!!!!!!!!!!!!95 ! A lancer juste après mpi_init !!!!!!!!!!!!! 96 96 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 97 97 … … 145 145 !Initialisation du contexte: 146 146 CALL xios_context_initialize(g_ctx_name, g_comm) 147 CALL xios_get_handle(g_ctx_name, xios_ctx) !R écupération147 CALL xios_get_handle(g_ctx_name, xios_ctx) !Récupération 148 148 CALL xios_set_current_context(xios_ctx) !Activation 149 149 g_ctx = xios_ctx … … 153 153 WRITE(lunout,*) " now call xios_solve_inheritance()" 154 154 ENDIF 155 !Une premi ère analyse des héritages:155 !Une première analyse des héritages: 156 156 CALL xios_solve_inheritance() 157 157 END SUBROUTINE wxios_context_init 158 158 159 159 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 160 ! Routine de param étrisation !!!!!!!!!!!!!!!!!!161 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 162 163 SUBROUTINE wxios_set_cal(pasdetemps, calendrier, annee, mois, jour, heure )164 IMPLICIT NONE 165 INCLUDE 'iniprint.h' 166 167 !Param ètres:160 ! Routine de paramétrisation !!!!!!!!!!!!!!!!!! 161 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 162 163 SUBROUTINE wxios_set_cal(pasdetemps, calendrier, annee, mois, jour, heure, ini_an, ini_mois, ini_jour, ini_heure) 164 IMPLICIT NONE 165 INCLUDE 'iniprint.h' 166 167 !Paramètres: 168 168 CHARACTER(len=*), INTENT(IN) :: calendrier 169 INTEGER, INTENT(IN) :: annee, mois, jour 170 REAL, INTENT(IN) :: pasdetemps, heure 169 INTEGER, INTENT(IN) :: annee, mois, jour, ini_an, ini_mois, ini_jour 170 REAL, INTENT(IN) :: pasdetemps, heure, ini_heure 171 171 172 172 !Variables: … … 181 181 mdtime = xios_time(0, 0, 0, 0, 0, pasdetemps) 182 182 183 !R églage du calendrier:183 !Réglage du calendrier: 184 184 SELECT CASE (calendrier) 185 185 CASE('earth_360d') … … 197 197 END SELECT 198 198 199 !Formatage de la date de départ: 200 WRITE(date, "(i4.4,'-',i2.2,'-',i2.2,' 00:00:00')") annee, mois, jour 201 202 IF (prt_level >= 10) WRITE(lunout,*) "wxios_set_cal: Initial time: ", date 203 204 CALL xios_set_context_attr_hdl(g_ctx, start_date= date) 199 !Formatage de la date d'origine: 200 WRITE(date, "(i4.4,'-',i2.2,'-',i2.2,' ',i2.2,':00:00')") annee, mois, jour, int(heure) 201 202 IF (prt_level >= 10) WRITE(lunout,*) "wxios_set_cal: Time origin: ", date 203 204 CALL xios_set_context_attr_hdl(g_ctx, time_origin = date) 205 206 !Formatage de la date de debut: 207 208 WRITE(date, "(i4.4,'-',i2.2,'-',i2.2,' ',i2.2,':00:00')") ini_an, ini_mois, ini_jour, int(ini_heure) 209 210 IF (prt_level >= 10) WRITE(lunout,*) "wxios_set_cal: Start date: ", date 211 212 CALL xios_set_context_attr_hdl(g_ctx, start_date = date) 205 213 206 214 !Et enfin,le pas de temps: … … 253 261 LOGICAL :: boool 254 262 255 !Masque pour les probl èmes de recouvrement MPI:263 !Masque pour les problèmes de recouvrement MPI: 256 264 LOGICAL :: mask(ni,nj) 257 265 258 !On r écupère le handle:266 !On récupère le handle: 259 267 CALL xios_get_domain_handle(dom_id, dom) 260 268 … … 285 293 286 294 CALL xios_is_defined_domain_attr_hdl(dom,ni_glo=boool) 287 !V érification:295 !Vérification: 288 296 IF (xios_is_valid_domain(dom_id)) THEN 289 297 IF (prt_level >= 10) WRITE(lunout,*) "wxios_domain_param: Domain initialized: ", trim(dom_id), boool … … 294 302 295 303 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 296 ! Pour d éclarer un axe vertical !!!!!!!!!!!!!!!304 ! Pour déclarer un axe vertical !!!!!!!!!!!!!!! 297 305 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 298 306 SUBROUTINE wxios_add_vaxis(axis_id, axis_size, axis_value) … … 315 323 ! axis_id=trim(axisgroup_id) 316 324 317 !On r écupère le groupe d'axes qui va bien:325 !On récupère le groupe d'axes qui va bien: 318 326 !CALL xios_get_axisgroup_handle(axisgroup_id, axgroup) 319 327 320 !On ajoute l'axe correspondant Ãce fichier:328 !On ajoute l'axe correspondant à ce fichier: 321 329 !CALL xios_add_axis(axgroup, ax, TRIM(ADJUSTL(axis_id))) 322 330 … … 327 335 CALL xios_set_axis_attr(trim(axis_id),size=axis_size,value=axis_value) 328 336 329 !V érification:337 !Vérification: 330 338 IF (xios_is_valid_axis(TRIM(ADJUSTL(axis_id)))) THEN 331 339 IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_vaxis: Axis created: ", TRIM(ADJUSTL(axis_id)) … … 338 346 339 347 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 340 ! Pour d éclarer un fichier !!!!!!!!!!!!!!!!!!!348 ! Pour déclarer un fichier !!!!!!!!!!!!!!!!!!! 341 349 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 342 350 SUBROUTINE wxios_add_file(fname, ffreq, flvl) … … 352 360 CHARACTER(len=100) :: nffreq 353 361 354 !On regarde si le fichier n'est pas d éfini par XML:362 !On regarde si le fichier n'est pas défini par XML: 355 363 IF (.NOT.xios_is_valid_file(fname)) THEN 356 !On cr ééle noeud:364 !On créé le noeud: 357 365 CALL xios_get_filegroup_handle("defile", x_fg) 358 366 CALL xios_add_file(x_fg, x_file, fname) 359 367 360 !On reformate la fr équence:368 !On reformate la fréquence: 361 369 CALL reformadate(ffreq, nffreq) 362 370 … … 376 384 ELSE 377 385 IF (prt_level >= 10) THEN 378 WRITE(lunout,*) "wxios_add_file: File ",trim(fname), " d éfined using XML."386 WRITE(lunout,*) "wxios_add_file: File ",trim(fname), " défined using XML." 379 387 ENDIF 380 388 ! Ehouarn: add an enable=.true. on top of xml definitions... why??? … … 384 392 385 393 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 386 ! Pour cr éer un champ !!!!!!!!!!!!!!!!!!!!394 ! Pour créer un champ !!!!!!!!!!!!!!!!!!!! 387 395 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 388 396 SUBROUTINE wxios_add_field(fieldname, fieldgroup, fieldlongname, fieldunit) … … 401 409 REAL(KIND=8) :: def 402 410 403 !La valeur par d éfaut des champs non définis:411 !La valeur par défaut des champs non définis: 404 412 def = nf90_fill_real 405 413 … … 414 422 !IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_field: ",fieldname,fieldgroup, fieldlongname, fieldunit 415 423 416 !On rentre ses param ètres:424 !On rentre ses paramètres: 417 425 CALL xios_set_field_attr_hdl(field, standard_name=fieldlongname, unit=newunit, default_value=def) 418 426 IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_field: Field ",trim(fieldname), "cree:" … … 422 430 423 431 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 424 ! Pour d éclarer un champ !!!!!!!!!!!!!!!!!425 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 426 SUBROUTINE wxios_add_field_to_file(fieldname, fdim, fid, fname, fieldlongname, fieldunit, field_level, op )432 ! Pour déclarer un champ !!!!!!!!!!!!!!!!! 433 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 434 SUBROUTINE wxios_add_field_to_file(fieldname, fdim, fid, fname, fieldlongname, fieldunit, field_level, op, nam_axvert) 427 435 IMPLICIT NONE 428 436 INCLUDE 'iniprint.h' … … 437 445 438 446 CHARACTER(len=20) :: axis_id ! Ehouarn: dangerous... 447 CHARACTER(len=20), INTENT(IN), OPTIONAL :: nam_axvert 439 448 CHARACTER(len=100) :: operation 440 449 TYPE(xios_file) :: f … … 451 460 axis_id="plev" 452 461 ENDIF 453 454 !on prépare le nom de l'opération: 462 463 IF (PRESENT(nam_axvert)) THEN 464 axis_id=nam_axvert 465 print*,'nam_axvert=',axis_id 466 ENDIF 467 468 !on prépare le nom de l'opération: 455 469 operation = reformaop(op) 456 470 … … 463 477 ENDIF 464 478 465 !On regarde si le champ à déjà été crééou non:479 !On regarde si le champ à déjà été créé ou non: 466 480 IF (xios_is_valid_field(fieldname) .AND. .NOT. g_field_name == fieldname) THEN 467 !Si ce champ existe via XML (ie, d ès le premier passage, ie g_field_name != fieldname) alors rien d'autre Ãfaire481 !Si ce champ existe via XML (ie, dès le premier passage, ie g_field_name != fieldname) alors rien d'autre à faire 468 482 IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_field_to_file: Field ", trim(fieldname), "exists via XML" 469 483 g_flag_xml = .TRUE. … … 471 485 472 486 ELSE IF (.NOT. g_field_name == fieldname) THEN 473 !Si premier pssage et champ ind éfini, alors on le créé487 !Si premier pssage et champ indéfini, alors on le créé 474 488 475 489 IF (prt_level >= 10) WRITE(lunout,*) "wxios_add_field_to_file: Field ", trim(fieldname), "does not exist" 476 490 477 !On le cr éé:491 !On le créé: 478 492 CALL wxios_add_field(fieldname, fieldgroup, fieldlongname, fieldunit) 479 493 IF (xios_is_valid_field(fieldname)) THEN … … 487 501 488 502 IF (.NOT. g_flag_xml) THEN 489 !Champ existe d éjÃ, mais pas XML, alors on l'ajoute503 !Champ existe déjà, mais pas XML, alors on l'ajoute 490 504 !On ajoute le champ: 491 505 CALL xios_get_file_handle(fname, f) … … 497 511 498 512 499 !On rentre ses param ètres:513 !On rentre ses paramètres: 500 514 CALL xios_set_field_attr_hdl(field, level=field_level, enabled=.TRUE.) 501 515 … … 550 564 SUBROUTINE wxios_closedef() 551 565 CALL xios_close_context_definition() 552 CALL xios_update_calendar(0)566 ! CALL xios_update_calendar(0) 553 567 END SUBROUTINE wxios_closedef 554 568 … … 559 573 END MODULE wxios 560 574 #endif 561
Note: See TracChangeset
for help on using the changeset viewer.