Changeset 26099
- Timestamp:
- 03/15/21 21:27:31 (4 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 3 added
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/m4/analyses.m4
r26047 r26099 10 10 [ 11 11 12 dnl with-HydrologyTws{{{ 13 14 AC_ARG_WITH([HydrologyTws], 15 16 AS_HELP_STRING([--with-HydrologyTws = YES], [compile with HydrologyTws capabilities (default is yes)]), 17 18 [HYDROLOGYTWS=$withval],[HYDROLOGYTWS=yes]) 19 20 AC_MSG_CHECKING(for HydrologyTws capability compilation) 21 22 23 HAVE_HYDROLOGYTWS=no 24 25 if test "x$HYDROLOGYTWS" = "xyes"; then 26 27 HAVE_HYDROLOGYTWS=yes 28 29 AC_DEFINE([_HAVE_HYDROLOGYTWS_],[1],[with HydrologyTws capability]) 30 31 fi 32 33 AM_CONDITIONAL([HYDROLOGYTWS], [test x$HAVE_HYDROLOGYTWS = xyes]) 34 35 AC_MSG_RESULT($HAVE_HYDROLOGYTWS) 36 37 dnl }}} 12 38 dnl with-AdjointBalancethickness2{{{ 39 13 40 AC_ARG_WITH([AdjointBalancethickness2], 41 14 42 AS_HELP_STRING([--with-AdjointBalancethickness2 = YES], [compile with AdjointBalancethickness2 capabilities (default is yes)]), 43 15 44 [ADJOINTBALANCETHICKNESS2=$withval],[ADJOINTBALANCETHICKNESS2=yes]) 45 16 46 AC_MSG_CHECKING(for AdjointBalancethickness2 capability compilation) 17 47 48 18 49 HAVE_ADJOINTBALANCETHICKNESS2=no 50 19 51 if test "x$ADJOINTBALANCETHICKNESS2" = "xyes"; then 52 20 53 HAVE_ADJOINTBALANCETHICKNESS2=yes 54 21 55 AC_DEFINE([_HAVE_ADJOINTBALANCETHICKNESS2_],[1],[with AdjointBalancethickness2 capability]) 22 fi 56 57 fi 58 23 59 AM_CONDITIONAL([ADJOINTBALANCETHICKNESS2], [test x$HAVE_ADJOINTBALANCETHICKNESS2 = xyes]) 60 24 61 AC_MSG_RESULT($HAVE_ADJOINTBALANCETHICKNESS2) 62 25 63 dnl }}} 26 64 dnl with-AdjointBalancethickness{{{ 65 27 66 AC_ARG_WITH([AdjointBalancethickness], 67 28 68 AS_HELP_STRING([--with-AdjointBalancethickness = YES], [compile with AdjointBalancethickness capabilities (default is yes)]), 69 29 70 [ADJOINTBALANCETHICKNESS=$withval],[ADJOINTBALANCETHICKNESS=yes]) 71 30 72 AC_MSG_CHECKING(for AdjointBalancethickness capability compilation) 31 73 74 32 75 HAVE_ADJOINTBALANCETHICKNESS=no 76 33 77 if test "x$ADJOINTBALANCETHICKNESS" = "xyes"; then 78 34 79 HAVE_ADJOINTBALANCETHICKNESS=yes 80 35 81 AC_DEFINE([_HAVE_ADJOINTBALANCETHICKNESS_],[1],[with AdjointBalancethickness capability]) 36 fi 82 83 fi 84 37 85 AM_CONDITIONAL([ADJOINTBALANCETHICKNESS], [test x$HAVE_ADJOINTBALANCETHICKNESS = xyes]) 86 38 87 AC_MSG_RESULT($HAVE_ADJOINTBALANCETHICKNESS) 88 39 89 dnl }}} 40 90 dnl with-AdjointHoriz{{{ 91 41 92 AC_ARG_WITH([AdjointHoriz], 93 42 94 AS_HELP_STRING([--with-AdjointHoriz = YES], [compile with AdjointHoriz capabilities (default is yes)]), 95 43 96 [ADJOINTHORIZ=$withval],[ADJOINTHORIZ=yes]) 97 44 98 AC_MSG_CHECKING(for AdjointHoriz capability compilation) 45 99 100 46 101 HAVE_ADJOINTHORIZ=no 102 47 103 if test "x$ADJOINTHORIZ" = "xyes"; then 104 48 105 HAVE_ADJOINTHORIZ=yes 106 49 107 AC_DEFINE([_HAVE_ADJOINTHORIZ_],[1],[with AdjointHoriz capability]) 50 fi 108 109 fi 110 51 111 AM_CONDITIONAL([ADJOINTHORIZ], [test x$HAVE_ADJOINTHORIZ = xyes]) 112 52 113 AC_MSG_RESULT($HAVE_ADJOINTHORIZ) 114 53 115 dnl }}} 54 116 dnl with-Balancethickness2{{{ 117 55 118 AC_ARG_WITH([Balancethickness2], 119 56 120 AS_HELP_STRING([--with-Balancethickness2 = YES], [compile with Balancethickness2 capabilities (default is yes)]), 121 57 122 [BALANCETHICKNESS2=$withval],[BALANCETHICKNESS2=yes]) 123 58 124 AC_MSG_CHECKING(for Balancethickness2 capability compilation) 59 125 126 60 127 HAVE_BALANCETHICKNESS2=no 128 61 129 if test "x$BALANCETHICKNESS2" = "xyes"; then 130 62 131 HAVE_BALANCETHICKNESS2=yes 132 63 133 AC_DEFINE([_HAVE_BALANCETHICKNESS2_],[1],[with Balancethickness2 capability]) 64 fi 134 135 fi 136 65 137 AM_CONDITIONAL([BALANCETHICKNESS2], [test x$HAVE_BALANCETHICKNESS2 = xyes]) 138 66 139 AC_MSG_RESULT($HAVE_BALANCETHICKNESS2) 140 67 141 dnl }}} 68 142 dnl with-Balancethickness{{{ 143 69 144 AC_ARG_WITH([Balancethickness], 145 70 146 AS_HELP_STRING([--with-Balancethickness = YES], [compile with Balancethickness capabilities (default is yes)]), 147 71 148 [BALANCETHICKNESS=$withval],[BALANCETHICKNESS=yes]) 149 72 150 AC_MSG_CHECKING(for Balancethickness capability compilation) 73 151 152 74 153 HAVE_BALANCETHICKNESS=no 154 75 155 if test "x$BALANCETHICKNESS" = "xyes"; then 156 76 157 HAVE_BALANCETHICKNESS=yes 158 77 159 AC_DEFINE([_HAVE_BALANCETHICKNESS_],[1],[with Balancethickness capability]) 78 fi 160 161 fi 162 79 163 AM_CONDITIONAL([BALANCETHICKNESS], [test x$HAVE_BALANCETHICKNESS = xyes]) 164 80 165 AC_MSG_RESULT($HAVE_BALANCETHICKNESS) 166 81 167 dnl }}} 82 168 dnl with-BalancethicknessSoft{{{ 169 83 170 AC_ARG_WITH([BalancethicknessSoft], 171 84 172 AS_HELP_STRING([--with-BalancethicknessSoft = YES], [compile with BalancethicknessSoft capabilities (default is yes)]), 173 85 174 [BALANCETHICKNESSSOFT=$withval],[BALANCETHICKNESSSOFT=yes]) 175 86 176 AC_MSG_CHECKING(for BalancethicknessSoft capability compilation) 87 177 178 88 179 HAVE_BALANCETHICKNESSSOFT=no 180 89 181 if test "x$BALANCETHICKNESSSOFT" = "xyes"; then 182 90 183 HAVE_BALANCETHICKNESSSOFT=yes 184 91 185 AC_DEFINE([_HAVE_BALANCETHICKNESSSOFT_],[1],[with BalancethicknessSoft capability]) 92 fi 186 187 fi 188 93 189 AM_CONDITIONAL([BALANCETHICKNESSSOFT], [test x$HAVE_BALANCETHICKNESSSOFT = xyes]) 190 94 191 AC_MSG_RESULT($HAVE_BALANCETHICKNESSSOFT) 192 95 193 dnl }}} 96 194 dnl with-Balancevelocity{{{ 195 97 196 AC_ARG_WITH([Balancevelocity], 197 98 198 AS_HELP_STRING([--with-Balancevelocity = YES], [compile with Balancevelocity capabilities (default is yes)]), 199 99 200 [BALANCEVELOCITY=$withval],[BALANCEVELOCITY=yes]) 201 100 202 AC_MSG_CHECKING(for Balancevelocity capability compilation) 101 203 204 102 205 HAVE_BALANCEVELOCITY=no 206 103 207 if test "x$BALANCEVELOCITY" = "xyes"; then 208 104 209 HAVE_BALANCEVELOCITY=yes 210 105 211 AC_DEFINE([_HAVE_BALANCEVELOCITY_],[1],[with Balancevelocity capability]) 106 fi 212 213 fi 214 107 215 AM_CONDITIONAL([BALANCEVELOCITY], [test x$HAVE_BALANCEVELOCITY = xyes]) 216 108 217 AC_MSG_RESULT($HAVE_BALANCEVELOCITY) 218 109 219 dnl }}} 110 220 dnl with-DamageEvolution{{{ 221 111 222 AC_ARG_WITH([DamageEvolution], 223 112 224 AS_HELP_STRING([--with-DamageEvolution = YES], [compile with DamageEvolution capabilities (default is yes)]), 225 113 226 [DAMAGEEVOLUTION=$withval],[DAMAGEEVOLUTION=yes]) 227 114 228 AC_MSG_CHECKING(for DamageEvolution capability compilation) 115 229 230 116 231 HAVE_DAMAGEEVOLUTION=no 232 117 233 if test "x$DAMAGEEVOLUTION" = "xyes"; then 234 118 235 HAVE_DAMAGEEVOLUTION=yes 236 119 237 AC_DEFINE([_HAVE_DAMAGEEVOLUTION_],[1],[with DamageEvolution capability]) 120 fi 238 239 fi 240 121 241 AM_CONDITIONAL([DAMAGEEVOLUTION], [test x$HAVE_DAMAGEEVOLUTION = xyes]) 242 122 243 AC_MSG_RESULT($HAVE_DAMAGEEVOLUTION) 244 123 245 dnl }}} 124 246 dnl with-DepthAverage{{{ 247 125 248 AC_ARG_WITH([DepthAverage], 249 126 250 AS_HELP_STRING([--with-DepthAverage = YES], [compile with DepthAverage capabilities (default is yes)]), 251 127 252 [DEPTHAVERAGE=$withval],[DEPTHAVERAGE=yes]) 253 128 254 AC_MSG_CHECKING(for DepthAverage capability compilation) 129 255 256 130 257 HAVE_DEPTHAVERAGE=no 258 131 259 if test "x$DEPTHAVERAGE" = "xyes"; then 260 132 261 HAVE_DEPTHAVERAGE=yes 262 133 263 AC_DEFINE([_HAVE_DEPTHAVERAGE_],[1],[with DepthAverage capability]) 134 fi 264 265 fi 266 135 267 AM_CONDITIONAL([DEPTHAVERAGE], [test x$HAVE_DEPTHAVERAGE = xyes]) 268 136 269 AC_MSG_RESULT($HAVE_DEPTHAVERAGE) 270 137 271 dnl }}} 138 272 dnl with-Enthalpy{{{ 273 139 274 AC_ARG_WITH([Enthalpy], 275 140 276 AS_HELP_STRING([--with-Enthalpy = YES], [compile with Enthalpy capabilities (default is yes)]), 277 141 278 [ENTHALPY=$withval],[ENTHALPY=yes]) 279 142 280 AC_MSG_CHECKING(for Enthalpy capability compilation) 143 281 282 144 283 HAVE_ENTHALPY=no 284 145 285 if test "x$ENTHALPY" = "xyes"; then 286 146 287 HAVE_ENTHALPY=yes 288 147 289 AC_DEFINE([_HAVE_ENTHALPY_],[1],[with Enthalpy capability]) 148 fi 290 291 fi 292 149 293 AM_CONDITIONAL([ENTHALPY], [test x$HAVE_ENTHALPY = xyes]) 294 150 295 AC_MSG_RESULT($HAVE_ENTHALPY) 296 151 297 dnl }}} 152 298 dnl with-Esa{{{ 299 153 300 AC_ARG_WITH([Esa], 301 154 302 AS_HELP_STRING([--with-Esa = YES], [compile with Esa capabilities (default is yes)]), 303 155 304 [ESA=$withval],[ESA=yes]) 305 156 306 AC_MSG_CHECKING(for Esa capability compilation) 157 307 308 158 309 HAVE_ESA=no 310 159 311 if test "x$ESA" = "xyes"; then 312 160 313 HAVE_ESA=yes 314 161 315 AC_DEFINE([_HAVE_ESA_],[1],[with Esa capability]) 162 fi 316 317 fi 318 163 319 AM_CONDITIONAL([ESA], [test x$HAVE_ESA = xyes]) 320 164 321 AC_MSG_RESULT($HAVE_ESA) 322 165 323 dnl }}} 166 324 dnl with-Extrapolation{{{ 325 167 326 AC_ARG_WITH([Extrapolation], 327 168 328 AS_HELP_STRING([--with-Extrapolation = YES], [compile with Extrapolation capabilities (default is yes)]), 329 169 330 [EXTRAPOLATION=$withval],[EXTRAPOLATION=yes]) 331 170 332 AC_MSG_CHECKING(for Extrapolation capability compilation) 171 333 334 172 335 HAVE_EXTRAPOLATION=no 336 173 337 if test "x$EXTRAPOLATION" = "xyes"; then 338 174 339 HAVE_EXTRAPOLATION=yes 340 175 341 AC_DEFINE([_HAVE_EXTRAPOLATION_],[1],[with Extrapolation capability]) 176 fi 342 343 fi 344 177 345 AM_CONDITIONAL([EXTRAPOLATION], [test x$HAVE_EXTRAPOLATION = xyes]) 346 178 347 AC_MSG_RESULT($HAVE_EXTRAPOLATION) 348 179 349 dnl }}} 180 350 dnl with-ExtrudeFromBase{{{ 351 181 352 AC_ARG_WITH([ExtrudeFromBase], 353 182 354 AS_HELP_STRING([--with-ExtrudeFromBase = YES], [compile with ExtrudeFromBase capabilities (default is yes)]), 355 183 356 [EXTRUDEFROMBASE=$withval],[EXTRUDEFROMBASE=yes]) 357 184 358 AC_MSG_CHECKING(for ExtrudeFromBase capability compilation) 185 359 360 186 361 HAVE_EXTRUDEFROMBASE=no 362 187 363 if test "x$EXTRUDEFROMBASE" = "xyes"; then 364 188 365 HAVE_EXTRUDEFROMBASE=yes 366 189 367 AC_DEFINE([_HAVE_EXTRUDEFROMBASE_],[1],[with ExtrudeFromBase capability]) 190 fi 368 369 fi 370 191 371 AM_CONDITIONAL([EXTRUDEFROMBASE], [test x$HAVE_EXTRUDEFROMBASE = xyes]) 372 192 373 AC_MSG_RESULT($HAVE_EXTRUDEFROMBASE) 374 193 375 dnl }}} 194 376 dnl with-ExtrudeFromTop{{{ 377 195 378 AC_ARG_WITH([ExtrudeFromTop], 379 196 380 AS_HELP_STRING([--with-ExtrudeFromTop = YES], [compile with ExtrudeFromTop capabilities (default is yes)]), 381 197 382 [EXTRUDEFROMTOP=$withval],[EXTRUDEFROMTOP=yes]) 383 198 384 AC_MSG_CHECKING(for ExtrudeFromTop capability compilation) 199 385 386 200 387 HAVE_EXTRUDEFROMTOP=no 388 201 389 if test "x$EXTRUDEFROMTOP" = "xyes"; then 390 202 391 HAVE_EXTRUDEFROMTOP=yes 392 203 393 AC_DEFINE([_HAVE_EXTRUDEFROMTOP_],[1],[with ExtrudeFromTop capability]) 204 fi 394 395 fi 396 205 397 AM_CONDITIONAL([EXTRUDEFROMTOP], [test x$HAVE_EXTRUDEFROMTOP = xyes]) 398 206 399 AC_MSG_RESULT($HAVE_EXTRUDEFROMTOP) 400 207 401 dnl }}} 208 402 dnl with-FreeSurfaceBase{{{ 403 209 404 AC_ARG_WITH([FreeSurfaceBase], 405 210 406 AS_HELP_STRING([--with-FreeSurfaceBase = YES], [compile with FreeSurfaceBase capabilities (default is yes)]), 407 211 408 [FREESURFACEBASE=$withval],[FREESURFACEBASE=yes]) 409 212 410 AC_MSG_CHECKING(for FreeSurfaceBase capability compilation) 213 411 412 214 413 HAVE_FREESURFACEBASE=no 414 215 415 if test "x$FREESURFACEBASE" = "xyes"; then 416 216 417 HAVE_FREESURFACEBASE=yes 418 217 419 AC_DEFINE([_HAVE_FREESURFACEBASE_],[1],[with FreeSurfaceBase capability]) 218 fi 420 421 fi 422 219 423 AM_CONDITIONAL([FREESURFACEBASE], [test x$HAVE_FREESURFACEBASE = xyes]) 424 220 425 AC_MSG_RESULT($HAVE_FREESURFACEBASE) 426 221 427 dnl }}} 222 428 dnl with-FreeSurfaceTop{{{ 429 223 430 AC_ARG_WITH([FreeSurfaceTop], 431 224 432 AS_HELP_STRING([--with-FreeSurfaceTop = YES], [compile with FreeSurfaceTop capabilities (default is yes)]), 433 225 434 [FREESURFACETOP=$withval],[FREESURFACETOP=yes]) 435 226 436 AC_MSG_CHECKING(for FreeSurfaceTop capability compilation) 227 437 438 228 439 HAVE_FREESURFACETOP=no 440 229 441 if test "x$FREESURFACETOP" = "xyes"; then 442 230 443 HAVE_FREESURFACETOP=yes 444 231 445 AC_DEFINE([_HAVE_FREESURFACETOP_],[1],[with FreeSurfaceTop capability]) 232 fi 446 447 fi 448 233 449 AM_CONDITIONAL([FREESURFACETOP], [test x$HAVE_FREESURFACETOP = xyes]) 450 234 451 AC_MSG_RESULT($HAVE_FREESURFACETOP) 452 235 453 dnl }}} 236 454 dnl with-GLheightadvection{{{ 455 237 456 AC_ARG_WITH([GLheightadvection], 457 238 458 AS_HELP_STRING([--with-GLheightadvection = YES], [compile with GLheightadvection capabilities (default is yes)]), 459 239 460 [GLHEIGHTADVECTION=$withval],[GLHEIGHTADVECTION=yes]) 461 240 462 AC_MSG_CHECKING(for GLheightadvection capability compilation) 241 463 464 242 465 HAVE_GLHEIGHTADVECTION=no 466 243 467 if test "x$GLHEIGHTADVECTION" = "xyes"; then 468 244 469 HAVE_GLHEIGHTADVECTION=yes 470 245 471 AC_DEFINE([_HAVE_GLHEIGHTADVECTION_],[1],[with GLheightadvection capability]) 246 fi 472 473 fi 474 247 475 AM_CONDITIONAL([GLHEIGHTADVECTION], [test x$HAVE_GLHEIGHTADVECTION = xyes]) 476 248 477 AC_MSG_RESULT($HAVE_GLHEIGHTADVECTION) 249 dnl }}} 250 dnl with-Gia{{{ 251 AC_ARG_WITH([Gia], 252 AS_HELP_STRING([--with-Gia= YES], [compile with Gia capabilities (default is yes)]), 253 [GIA=$withval],[GIA=yes]) 254 AC_MSG_CHECKING(for Gia capability compilation) 255 256 HAVE_GIA=no 257 if test "x$GIA" = "xyes"; then 258 HAVE_GIA=yes 259 AC_DEFINE([_HAVE_GIA_],[1],[with Giacapability]) 260 fi 261 AM_CONDITIONAL([GIA], [test x$HAVE_GIA = xyes]) 262 AC_MSG_RESULT($HAVE_GIA) 478 263 479 dnl }}} 264 480 dnl with-HydrologyDCEfficient{{{ 481 265 482 AC_ARG_WITH([HydrologyDCEfficient], 483 266 484 AS_HELP_STRING([--with-HydrologyDCEfficient = YES], [compile with HydrologyDCEfficient capabilities (default is yes)]), 485 267 486 [HYDROLOGYDCEFFICIENT=$withval],[HYDROLOGYDCEFFICIENT=yes]) 487 268 488 AC_MSG_CHECKING(for HydrologyDCEfficient capability compilation) 269 489 490 270 491 HAVE_HYDROLOGYDCEFFICIENT=no 492 271 493 if test "x$HYDROLOGYDCEFFICIENT" = "xyes"; then 494 272 495 HAVE_HYDROLOGYDCEFFICIENT=yes 496 273 497 AC_DEFINE([_HAVE_HYDROLOGYDCEFFICIENT_],[1],[with HydrologyDCEfficient capability]) 274 fi 498 499 fi 500 275 501 AM_CONDITIONAL([HYDROLOGYDCEFFICIENT], [test x$HAVE_HYDROLOGYDCEFFICIENT = xyes]) 502 276 503 AC_MSG_RESULT($HAVE_HYDROLOGYDCEFFICIENT) 504 277 505 dnl }}} 278 506 dnl with-HydrologyDCInefficient{{{ 507 279 508 AC_ARG_WITH([HydrologyDCInefficient], 509 280 510 AS_HELP_STRING([--with-HydrologyDCInefficient = YES], [compile with HydrologyDCInefficient capabilities (default is yes)]), 511 281 512 [HYDROLOGYDCINEFFICIENT=$withval],[HYDROLOGYDCINEFFICIENT=yes]) 513 282 514 AC_MSG_CHECKING(for HydrologyDCInefficient capability compilation) 283 515 516 284 517 HAVE_HYDROLOGYDCINEFFICIENT=no 518 285 519 if test "x$HYDROLOGYDCINEFFICIENT" = "xyes"; then 520 286 521 HAVE_HYDROLOGYDCINEFFICIENT=yes 522 287 523 AC_DEFINE([_HAVE_HYDROLOGYDCINEFFICIENT_],[1],[with HydrologyDCInefficient capability]) 288 fi 524 525 fi 526 289 527 AM_CONDITIONAL([HYDROLOGYDCINEFFICIENT], [test x$HAVE_HYDROLOGYDCINEFFICIENT = xyes]) 528 290 529 AC_MSG_RESULT($HAVE_HYDROLOGYDCINEFFICIENT) 530 531 dnl }}} 532 dnl with-HydrologyGlaDS{{{ 533 534 AC_ARG_WITH([HydrologyGlaDS], 535 536 AS_HELP_STRING([--with-HydrologyGlaDS = YES], [compile with HydrologyGlaDS capabilities (default is yes)]), 537 538 [HYDROLOGYGLADS=$withval],[HYDROLOGYGLADS=yes]) 539 540 AC_MSG_CHECKING(for HydrologyGlaDS capability compilation) 541 542 543 HAVE_HYDROLOGYGLADS=no 544 545 if test "x$HYDROLOGYGLADS" = "xyes"; then 546 547 HAVE_HYDROLOGYGLADS=yes 548 549 AC_DEFINE([_HAVE_HYDROLOGYGLADS_],[1],[with HydrologyGlaDS capability]) 550 551 fi 552 553 AM_CONDITIONAL([HYDROLOGYGLADS], [test x$HAVE_HYDROLOGYGLADS = xyes]) 554 555 AC_MSG_RESULT($HAVE_HYDROLOGYGLADS) 556 557 dnl }}} 558 dnl with-HydrologyPism{{{ 559 560 AC_ARG_WITH([HydrologyPism], 561 562 AS_HELP_STRING([--with-HydrologyPism = YES], [compile with HydrologyPism capabilities (default is yes)]), 563 564 [HYDROLOGYPISM=$withval],[HYDROLOGYPISM=yes]) 565 566 AC_MSG_CHECKING(for HydrologyPism capability compilation) 567 568 569 HAVE_HYDROLOGYPISM=no 570 571 if test "x$HYDROLOGYPISM" = "xyes"; then 572 573 HAVE_HYDROLOGYPISM=yes 574 575 AC_DEFINE([_HAVE_HYDROLOGYPISM_],[1],[with HydrologyPism capability]) 576 577 fi 578 579 AM_CONDITIONAL([HYDROLOGYPISM], [test x$HAVE_HYDROLOGYPISM = xyes]) 580 581 AC_MSG_RESULT($HAVE_HYDROLOGYPISM) 582 583 dnl }}} 584 dnl with-HydrologyShakti{{{ 585 586 AC_ARG_WITH([HydrologyShakti], 587 588 AS_HELP_STRING([--with-HydrologyShakti = YES], [compile with HydrologyShakti capabilities (default is yes)]), 589 590 [HYDROLOGYSHAKTI=$withval],[HYDROLOGYSHAKTI=yes]) 591 592 AC_MSG_CHECKING(for HydrologyShakti capability compilation) 593 594 595 HAVE_HYDROLOGYSHAKTI=no 596 597 if test "x$HYDROLOGYSHAKTI" = "xyes"; then 598 599 HAVE_HYDROLOGYSHAKTI=yes 600 601 AC_DEFINE([_HAVE_HYDROLOGYSHAKTI_],[1],[with HydrologyShakti capability]) 602 603 fi 604 605 AM_CONDITIONAL([HYDROLOGYSHAKTI], [test x$HAVE_HYDROLOGYSHAKTI = xyes]) 606 607 AC_MSG_RESULT($HAVE_HYDROLOGYSHAKTI) 608 291 609 dnl }}} 292 610 dnl with-HydrologyShreve{{{ 611 293 612 AC_ARG_WITH([HydrologyShreve], 613 294 614 AS_HELP_STRING([--with-HydrologyShreve = YES], [compile with HydrologyShreve capabilities (default is yes)]), 615 295 616 [HYDROLOGYSHREVE=$withval],[HYDROLOGYSHREVE=yes]) 617 296 618 AC_MSG_CHECKING(for HydrologyShreve capability compilation) 297 619 620 298 621 HAVE_HYDROLOGYSHREVE=no 622 299 623 if test "x$HYDROLOGYSHREVE" = "xyes"; then 624 300 625 HAVE_HYDROLOGYSHREVE=yes 626 301 627 AC_DEFINE([_HAVE_HYDROLOGYSHREVE_],[1],[with HydrologyShreve capability]) 302 fi 628 629 fi 630 303 631 AM_CONDITIONAL([HYDROLOGYSHREVE], [test x$HAVE_HYDROLOGYSHREVE = xyes]) 632 304 633 AC_MSG_RESULT($HAVE_HYDROLOGYSHREVE) 305 dnl }}} 306 dnl with-HydrologyTws{{{ 307 AC_ARG_WITH([HydrologyTws], 308 AS_HELP_STRING([--with-HydrologyTws = YES], [compile with HydrologyTws capabilities (default is yes)]), 309 [HYDROLOGYTWS=$withval],[HYDROLOGYTWS=yes]) 310 AC_MSG_CHECKING(for HydrologyTws capability compilation) 311 312 HAVE_HYDROLOGYTWS=no 313 if test "x$HYDROLOGYTWS" = "xyes"; then 314 HAVE_HYDROLOGYTWS=yes 315 AC_DEFINE([_HAVE_HYDROLOGYTWS_],[1],[with HydrologyTws capability]) 316 fi 317 AM_CONDITIONAL([HYDROLOGYTWS], [test x$HAVE_HYDROLOGYTWS = xyes]) 318 AC_MSG_RESULT($HAVE_HYDROLOGYTWS) 319 dnl }}} 320 dnl with-HydrologyGlaDS{{{ 321 AC_ARG_WITH([HydrologyGlaDS], 322 AS_HELP_STRING([--with-HydrologyGlaDS = YES], [compile with HydrologyGlaDS capabilities (default is yes)]), 323 [HYDROLOGYGLADS=$withval],[HYDROLOGYGLADS=yes]) 324 AC_MSG_CHECKING(for HydrologyGlaDS capability compilation) 325 326 HAVE_HYDROLOGYGLADS=no 327 if test "x$HYDROLOGYGLADS" = "xyes"; then 328 HAVE_HYDROLOGYGLADS=yes 329 AC_DEFINE([_HAVE_HYDROLOGYGLADS_],[1],[with HydrologyGlaDS capability]) 330 fi 331 AM_CONDITIONAL([HYDROLOGYGLADS], [test x$HAVE_HYDROLOGYGLADS = xyes]) 332 AC_MSG_RESULT($HAVE_HYDROLOGYGLADS) 333 dnl }}} 334 dnl with-HydrologyShakti{{{ 335 AC_ARG_WITH([HydrologyShakti], 336 AS_HELP_STRING([--with-HydrologyShakti = YES], [compile with HydrologyShakti capabilities (default is yes)]), 337 [HYDROLOGYSHAKTI=$withval],[HYDROLOGYSHAKTI=yes]) 338 AC_MSG_CHECKING(for HydrologyShakti capability compilation) 339 340 HAVE_HYDROLOGYSHAKTI=no 341 if test "x$HYDROLOGYSHAKTI" = "xyes"; then 342 HAVE_HYDROLOGYSHAKTI=yes 343 AC_DEFINE([_HAVE_HYDROLOGYSHAKTI_],[1],[with HydrologyShakti capability]) 344 fi 345 AM_CONDITIONAL([HYDROLOGYSHAKTI], [test x$HAVE_HYDROLOGYSHAKTI = xyes]) 346 AC_MSG_RESULT($HAVE_HYDROLOGYSHAKTI) 347 dnl }}} 348 dnl with-HydrologyPism{{{ 349 AC_ARG_WITH([HydrologyPism], 350 AS_HELP_STRING([--with-HydrologyPism = YES], [compile with HydrologyPism capabilities (default is yes)]), 351 [HYDROLOGYPISM=$withval],[HYDROLOGYPISM=yes]) 352 AC_MSG_CHECKING(for HydrologyPism capability compilation) 353 354 HAVE_HYDROLOGYPISM=no 355 if test "x$HYDROLOGYPISM" = "xyes"; then 356 HAVE_HYDROLOGYPISM=yes 357 AC_DEFINE([_HAVE_HYDROLOGYPISM_],[1],[with HydrologyPism capability]) 358 fi 359 AM_CONDITIONAL([HYDROLOGYPISM], [test x$HAVE_HYDROLOGYPISM = xyes]) 360 AC_MSG_RESULT($HAVE_HYDROLOGYPISM) 634 361 635 dnl }}} 362 636 dnl with-L2ProjectionBase{{{ 637 363 638 AC_ARG_WITH([L2ProjectionBase], 639 364 640 AS_HELP_STRING([--with-L2ProjectionBase = YES], [compile with L2ProjectionBase capabilities (default is yes)]), 641 365 642 [L2PROJECTIONBASE=$withval],[L2PROJECTIONBASE=yes]) 643 366 644 AC_MSG_CHECKING(for L2ProjectionBase capability compilation) 367 645 646 368 647 HAVE_L2PROJECTIONBASE=no 648 369 649 if test "x$L2PROJECTIONBASE" = "xyes"; then 650 370 651 HAVE_L2PROJECTIONBASE=yes 652 371 653 AC_DEFINE([_HAVE_L2PROJECTIONBASE_],[1],[with L2ProjectionBase capability]) 372 fi 654 655 fi 656 373 657 AM_CONDITIONAL([L2PROJECTIONBASE], [test x$HAVE_L2PROJECTIONBASE = xyes]) 658 374 659 AC_MSG_RESULT($HAVE_L2PROJECTIONBASE) 660 375 661 dnl }}} 376 662 dnl with-L2ProjectionEPL{{{ 663 377 664 AC_ARG_WITH([L2ProjectionEPL], 665 378 666 AS_HELP_STRING([--with-L2ProjectionEPL = YES], [compile with L2ProjectionEPL capabilities (default is yes)]), 667 379 668 [L2PROJECTIONEPL=$withval],[L2PROJECTIONEPL=yes]) 669 380 670 AC_MSG_CHECKING(for L2ProjectionEPL capability compilation) 381 671 672 382 673 HAVE_L2PROJECTIONEPL=no 674 383 675 if test "x$L2PROJECTIONEPL" = "xyes"; then 676 384 677 HAVE_L2PROJECTIONEPL=yes 678 385 679 AC_DEFINE([_HAVE_L2PROJECTIONEPL_],[1],[with L2ProjectionEPL capability]) 386 fi 680 681 fi 682 387 683 AM_CONDITIONAL([L2PROJECTIONEPL], [test x$HAVE_L2PROJECTIONEPL = xyes]) 684 388 685 AC_MSG_RESULT($HAVE_L2PROJECTIONEPL) 686 389 687 dnl }}} 390 688 dnl with-Levelset{{{ 689 391 690 AC_ARG_WITH([Levelset], 691 392 692 AS_HELP_STRING([--with-Levelset = YES], [compile with Levelset capabilities (default is yes)]), 693 393 694 [LEVELSET=$withval],[LEVELSET=yes]) 695 394 696 AC_MSG_CHECKING(for Levelset capability compilation) 395 697 698 396 699 HAVE_LEVELSET=no 700 397 701 if test "x$LEVELSET" = "xyes"; then 702 398 703 HAVE_LEVELSET=yes 704 399 705 AC_DEFINE([_HAVE_LEVELSET_],[1],[with Levelset capability]) 400 fi 706 707 fi 708 401 709 AM_CONDITIONAL([LEVELSET], [test x$HAVE_LEVELSET = xyes]) 710 402 711 AC_MSG_RESULT($HAVE_LEVELSET) 712 403 713 dnl }}} 404 714 dnl with-Love{{{ 715 405 716 AC_ARG_WITH([Love], 717 406 718 AS_HELP_STRING([--with-Love = YES], [compile with Love capabilities (default is yes)]), 719 407 720 [LOVE=$withval],[LOVE=yes]) 721 408 722 AC_MSG_CHECKING(for Love capability compilation) 409 723 724 410 725 HAVE_LOVE=no 726 411 727 if test "x$LOVE" = "xyes"; then 728 412 729 HAVE_LOVE=yes 730 413 731 AC_DEFINE([_HAVE_LOVE_],[1],[with Love capability]) 414 fi 732 733 fi 734 415 735 AM_CONDITIONAL([LOVE], [test x$HAVE_LOVE = xyes]) 736 416 737 AC_MSG_RESULT($HAVE_LOVE) 738 417 739 dnl }}} 418 740 dnl with-Masstransport{{{ 741 419 742 AC_ARG_WITH([Masstransport], 743 420 744 AS_HELP_STRING([--with-Masstransport = YES], [compile with Masstransport capabilities (default is yes)]), 745 421 746 [MASSTRANSPORT=$withval],[MASSTRANSPORT=yes]) 747 422 748 AC_MSG_CHECKING(for Masstransport capability compilation) 423 749 750 424 751 HAVE_MASSTRANSPORT=no 752 425 753 if test "x$MASSTRANSPORT" = "xyes"; then 754 426 755 HAVE_MASSTRANSPORT=yes 756 427 757 AC_DEFINE([_HAVE_MASSTRANSPORT_],[1],[with Masstransport capability]) 428 fi 758 759 fi 760 429 761 AM_CONDITIONAL([MASSTRANSPORT], [test x$HAVE_MASSTRANSPORT = xyes]) 762 430 763 AC_MSG_RESULT($HAVE_MASSTRANSPORT) 431 dnl }}} 432 dnl with-Oceanmasstransport{{{ 433 AC_ARG_WITH([Oceanmasstransport], 434 AS_HELP_STRING([--with-Oceanmasstransport = YES], [compile with Oceanmasstransport capabilities (default is yes)]), 435 [OCEANMASSTRANSPORT=$withval],[OCEANMASSTRANSPORT=yes]) 436 AC_MSG_CHECKING(for Oceanmasstransport capability compilation) 437 438 HAVE_OCEANMASSTRANSPORT=no 439 if test "x$OCEANMASSTRANSPORT" = "xyes"; then 440 HAVE_OCEANMASSTRANSPORT=yes 441 AC_DEFINE([_HAVE_OCEANMASSTRANSPORT_],[1],[with Oceanmasstransport capability]) 442 fi 443 AM_CONDITIONAL([OCEANMASSTRANSPORT], [test x$HAVE_OCEANMASSTRANSPORT = xyes]) 444 AC_MSG_RESULT($HAVE_OCEANMASSTRANSPORT) 764 445 765 dnl }}} 446 766 dnl with-Melting{{{ 767 447 768 AC_ARG_WITH([Melting], 769 448 770 AS_HELP_STRING([--with-Melting = YES], [compile with Melting capabilities (default is yes)]), 771 449 772 [MELTING=$withval],[MELTING=yes]) 773 450 774 AC_MSG_CHECKING(for Melting capability compilation) 451 775 776 452 777 HAVE_MELTING=no 778 453 779 if test "x$MELTING" = "xyes"; then 780 454 781 HAVE_MELTING=yes 782 455 783 AC_DEFINE([_HAVE_MELTING_],[1],[with Melting capability]) 456 fi 784 785 fi 786 457 787 AM_CONDITIONAL([MELTING], [test x$HAVE_MELTING = xyes]) 788 458 789 AC_MSG_RESULT($HAVE_MELTING) 790 791 dnl }}} 792 dnl with-Oceantransport{{{ 793 794 AC_ARG_WITH([Oceantransport], 795 796 AS_HELP_STRING([--with-Oceantransport = YES], [compile with Oceantransport capabilities (default is yes)]), 797 798 [OCEANTRANSPORT=$withval],[OCEANTRANSPORT=yes]) 799 800 AC_MSG_CHECKING(for Oceantransport capability compilation) 801 802 803 HAVE_OCEANTRANSPORT=no 804 805 if test "x$OCEANTRANSPORT" = "xyes"; then 806 807 HAVE_OCEANTRANSPORT=yes 808 809 AC_DEFINE([_HAVE_OCEANTRANSPORT_],[1],[with Oceantransport capability]) 810 811 fi 812 813 AM_CONDITIONAL([OCEANTRANSPORT], [test x$HAVE_OCEANTRANSPORT = xyes]) 814 815 AC_MSG_RESULT($HAVE_OCEANTRANSPORT) 816 817 dnl }}} 818 dnl with-Recovery{{{ 819 820 AC_ARG_WITH([Recovery], 821 822 AS_HELP_STRING([--with-Recovery = YES], [compile with Recovery capabilities (default is yes)]), 823 824 [RECOVERY=$withval],[RECOVERY=yes]) 825 826 AC_MSG_CHECKING(for Recovery capability compilation) 827 828 829 HAVE_RECOVERY=no 830 831 if test "x$RECOVERY" = "xyes"; then 832 833 HAVE_RECOVERY=yes 834 835 AC_DEFINE([_HAVE_RECOVERY_],[1],[with Recovery capability]) 836 837 fi 838 839 AM_CONDITIONAL([RECOVERY], [test x$HAVE_RECOVERY = xyes]) 840 841 AC_MSG_RESULT($HAVE_RECOVERY) 842 459 843 dnl }}} 460 844 dnl with-Sampling{{{ … … 484 868 485 869 dnl }}} 486 dnl with-Sealevelrise{{{ 487 AC_ARG_WITH([Sealevelrise], 488 AS_HELP_STRING([--with-Sealevelrise = YES], [compile with Sealevelrise capabilities (default is yes)]), 489 [SEALEVELRISE=$withval],[SEALEVELRISE=yes]) 490 AC_MSG_CHECKING(for Sealevelrise capability compilation) 491 492 HAVE_SEALEVELRISE=no 493 if test "x$SEALEVELRISE" = "xyes"; then 494 HAVE_SEALEVELRISE=yes 495 AC_DEFINE([_HAVE_SEALEVELRISE_],[1],[with Sealevelrise capability]) 496 fi 497 AM_CONDITIONAL([SEALEVELRISE], [test x$HAVE_SEALEVELRISE = xyes]) 498 AC_MSG_RESULT($HAVE_SEALEVELRISE) 870 dnl with-Sealevelchange{{{ 871 872 AC_ARG_WITH([Sealevelchange], 873 874 AS_HELP_STRING([--with-Sealevelchange = YES], [compile with Sealevelchange capabilities (default is yes)]), 875 876 [SEALEVELCHANGE=$withval],[SEALEVELCHANGE=yes]) 877 878 AC_MSG_CHECKING(for Sealevelchange capability compilation) 879 880 881 HAVE_SEALEVELCHANGE=no 882 883 if test "x$SEALEVELCHANGE" = "xyes"; then 884 885 HAVE_SEALEVELCHANGE=yes 886 887 AC_DEFINE([_HAVE_SEALEVELCHANGE_],[1],[with Sealevelchange capability]) 888 889 fi 890 891 AM_CONDITIONAL([SEALEVELCHANGE], [test x$HAVE_SEALEVELCHANGE = xyes]) 892 893 AC_MSG_RESULT($HAVE_SEALEVELCHANGE) 894 499 895 dnl }}} 500 896 dnl with-Smb{{{ 897 501 898 AC_ARG_WITH([Smb], 899 502 900 AS_HELP_STRING([--with-Smb = YES], [compile with Smb capabilities (default is yes)]), 901 503 902 [SMB=$withval],[SMB=yes]) 903 504 904 AC_MSG_CHECKING(for Smb capability compilation) 505 905 906 506 907 HAVE_SMB=no 908 507 909 if test "x$SMB" = "xyes"; then 910 508 911 HAVE_SMB=yes 912 509 913 AC_DEFINE([_HAVE_SMB_],[1],[with Smb capability]) 510 fi 914 915 fi 916 511 917 AM_CONDITIONAL([SMB], [test x$HAVE_SMB = xyes]) 918 512 919 AC_MSG_RESULT($HAVE_SMB) 920 513 921 dnl }}} 514 922 dnl with-Smooth{{{ 923 515 924 AC_ARG_WITH([Smooth], 925 516 926 AS_HELP_STRING([--with-Smooth = YES], [compile with Smooth capabilities (default is yes)]), 927 517 928 [SMOOTH=$withval],[SMOOTH=yes]) 929 518 930 AC_MSG_CHECKING(for Smooth capability compilation) 519 931 932 520 933 HAVE_SMOOTH=no 934 521 935 if test "x$SMOOTH" = "xyes"; then 936 522 937 HAVE_SMOOTH=yes 938 523 939 AC_DEFINE([_HAVE_SMOOTH_],[1],[with Smooth capability]) 524 fi 940 941 fi 942 525 943 AM_CONDITIONAL([SMOOTH], [test x$HAVE_SMOOTH = xyes]) 944 526 945 AC_MSG_RESULT($HAVE_SMOOTH) 946 527 947 dnl }}} 528 948 dnl with-Stressbalance{{{ 949 529 950 AC_ARG_WITH([Stressbalance], 951 530 952 AS_HELP_STRING([--with-Stressbalance = YES], [compile with Stressbalance capabilities (default is yes)]), 953 531 954 [STRESSBALANCE=$withval],[STRESSBALANCE=yes]) 955 532 956 AC_MSG_CHECKING(for Stressbalance capability compilation) 533 957 958 534 959 HAVE_STRESSBALANCE=no 960 535 961 if test "x$STRESSBALANCE" = "xyes"; then 962 536 963 HAVE_STRESSBALANCE=yes 964 537 965 AC_DEFINE([_HAVE_STRESSBALANCE_],[1],[with Stressbalance capability]) 538 fi 966 967 fi 968 539 969 AM_CONDITIONAL([STRESSBALANCE], [test x$HAVE_STRESSBALANCE = xyes]) 970 540 971 AC_MSG_RESULT($HAVE_STRESSBALANCE) 972 541 973 dnl }}} 542 974 dnl with-StressbalanceSIA{{{ 975 543 976 AC_ARG_WITH([StressbalanceSIA], 977 544 978 AS_HELP_STRING([--with-StressbalanceSIA = YES], [compile with StressbalanceSIA capabilities (default is yes)]), 979 545 980 [STRESSBALANCESIA=$withval],[STRESSBALANCESIA=yes]) 981 546 982 AC_MSG_CHECKING(for StressbalanceSIA capability compilation) 547 983 984 548 985 HAVE_STRESSBALANCESIA=no 986 549 987 if test "x$STRESSBALANCESIA" = "xyes"; then 988 550 989 HAVE_STRESSBALANCESIA=yes 990 551 991 AC_DEFINE([_HAVE_STRESSBALANCESIA_],[1],[with StressbalanceSIA capability]) 552 fi 992 993 fi 994 553 995 AM_CONDITIONAL([STRESSBALANCESIA], [test x$HAVE_STRESSBALANCESIA = xyes]) 996 554 997 AC_MSG_RESULT($HAVE_STRESSBALANCESIA) 998 555 999 dnl }}} 556 1000 dnl with-StressbalanceVertical{{{ 1001 557 1002 AC_ARG_WITH([StressbalanceVertical], 1003 558 1004 AS_HELP_STRING([--with-StressbalanceVertical = YES], [compile with StressbalanceVertical capabilities (default is yes)]), 1005 559 1006 [STRESSBALANCEVERTICAL=$withval],[STRESSBALANCEVERTICAL=yes]) 1007 560 1008 AC_MSG_CHECKING(for StressbalanceVertical capability compilation) 561 1009 1010 562 1011 HAVE_STRESSBALANCEVERTICAL=no 1012 563 1013 if test "x$STRESSBALANCEVERTICAL" = "xyes"; then 1014 564 1015 HAVE_STRESSBALANCEVERTICAL=yes 1016 565 1017 AC_DEFINE([_HAVE_STRESSBALANCEVERTICAL_],[1],[with StressbalanceVertical capability]) 566 fi 1018 1019 fi 1020 567 1021 AM_CONDITIONAL([STRESSBALANCEVERTICAL], [test x$HAVE_STRESSBALANCEVERTICAL = xyes]) 1022 568 1023 AC_MSG_RESULT($HAVE_STRESSBALANCEVERTICAL) 1024 569 1025 dnl }}} 570 1026 dnl with-Thermal{{{ 1027 571 1028 AC_ARG_WITH([Thermal], 1029 572 1030 AS_HELP_STRING([--with-Thermal = YES], [compile with Thermal capabilities (default is yes)]), 1031 573 1032 [THERMAL=$withval],[THERMAL=yes]) 1033 574 1034 AC_MSG_CHECKING(for Thermal capability compilation) 575 1035 1036 576 1037 HAVE_THERMAL=no 1038 577 1039 if test "x$THERMAL" = "xyes"; then 1040 578 1041 HAVE_THERMAL=yes 1042 579 1043 AC_DEFINE([_HAVE_THERMAL_],[1],[with Thermal capability]) 580 fi 1044 1045 fi 1046 581 1047 AM_CONDITIONAL([THERMAL], [test x$HAVE_THERMAL = xyes]) 1048 582 1049 AC_MSG_RESULT($HAVE_THERMAL) 1050 583 1051 dnl }}} 584 1052 dnl with-UzawaPressure{{{ 1053 585 1054 AC_ARG_WITH([UzawaPressure], 1055 586 1056 AS_HELP_STRING([--with-UzawaPressure = YES], [compile with UzawaPressure capabilities (default is yes)]), 1057 587 1058 [UZAWAPRESSURE=$withval],[UZAWAPRESSURE=yes]) 1059 588 1060 AC_MSG_CHECKING(for UzawaPressure capability compilation) 589 1061 1062 590 1063 HAVE_UZAWAPRESSURE=no 1064 591 1065 if test "x$UZAWAPRESSURE" = "xyes"; then 1066 592 1067 HAVE_UZAWAPRESSURE=yes 1068 593 1069 AC_DEFINE([_HAVE_UZAWAPRESSURE_],[1],[with UzawaPressure capability]) 594 fi 1070 1071 fi 1072 595 1073 AM_CONDITIONAL([UZAWAPRESSURE], [test x$HAVE_UZAWAPRESSURE = xyes]) 1074 596 1075 AC_MSG_RESULT($HAVE_UZAWAPRESSURE) 1076 597 1077 dnl }}} 598 1078 -
issm/trunk-jpl/src/c/Makefile.am
r26051 r26099 212 212 ./modules/NodalValuex/NodalValuex.cpp \ 213 213 ./modules/VertexCoordinatesx/VertexCoordinatesx.cpp \ 214 ./modules/ElementCoordinatesx/ElementCoordinatesx.cpp \ 214 215 ./modules/OutputResultsx/OutputResultsx.cpp \ 215 216 ./modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp \ … … 480 481 issm_sources += ./analyses/MasstransportAnalysis.cpp 481 482 endif 482 if OCEAN MASSTRANSPORT483 if OCEANTRANSPORT 483 484 issm_sources += ./analyses/OceantransportAnalysis.cpp 484 485 endif … … 517 518 endif 518 519 #}}} 519 #Gia sources (only if have fortran){{{ 520 if GIA 520 #Love sources (only if have fortran){{{ 521 if LOVE 522 if FORTRAN 523 issm_sources += \ 524 ./cores/love_core.cpp \ 525 ./analyses/LoveAnalysis.cpp \ 526 ./modules/FourierLoveCorex/FourierLoveCorex.cpp \ 527 ./modules/FourierLoveCorex/lnb_param.f90 \ 528 ./modules/FourierLoveCorex/model.f90 \ 529 ./modules/FourierLoveCorex/util.f90 \ 530 ./modules/FourierLoveCorex/lovenb_sub.f90 \ 531 ./modules/FourierLoveCorex/love_numbers.f90 532 endif 533 endif 534 #}}} 535 #Esa sources {{{ 536 if ESA 537 issm_sources += \ 538 ./cores/esa_core.cpp \ 539 ./analyses/EsaAnalysis.cpp 540 endif 541 #}}} 542 #Oceansources {{{ 543 if OCEAN 544 issm_sources += ./modules/OceanExchangeDatax/OceanExchangeDatax.cpp 545 endif 546 #}}} 547 #Sampling sources {{{ 548 if SAMPLING 549 issm_sources += \ 550 ./cores/sampling_core.cpp \ 551 ./analyses/SamplingAnalysis.cpp 552 endif 553 # }}} 554 #Slc sources {{{ 555 if SEALEVELCHANGE 556 issm_sources += \ 557 ./cores/sealevelchange_core.cpp \ 558 ./analyses/SealevelchangeAnalysis.cpp 559 560 #gia ivins physics (only if have fortran) 521 561 if FORTRAN 522 562 issm_sources += \ … … 530 570 ./modules/GiaDeflectionCorex/what0.f 531 571 endif 532 endif 533 #}}} 534 #Love sources (only if have fortran){{{ 535 if LOVE 536 if FORTRAN 537 issm_sources += \ 538 ./cores/love_core.cpp \ 539 ./analyses/LoveAnalysis.cpp \ 540 ./modules/FourierLoveCorex/FourierLoveCorex.cpp \ 541 ./modules/FourierLoveCorex/lnb_param.f90 \ 542 ./modules/FourierLoveCorex/model.f90 \ 543 ./modules/FourierLoveCorex/util.f90 \ 544 ./modules/FourierLoveCorex/lovenb_sub.f90 \ 545 ./modules/FourierLoveCorex/love_numbers.f90 546 endif 547 endif 548 #}}} 549 #Esa sources {{{ 550 if ESA 551 issm_sources += \ 552 ./cores/esa_core.cpp \ 553 ./analyses/EsaAnalysis.cpp 554 endif 555 #}}} 556 #Oceansources {{{ 557 if OCEAN 558 issm_sources += ./modules/OceanExchangeDatax/OceanExchangeDatax.cpp 559 endif 560 #}}} 561 #Sampling sources {{{ 562 if SAMPLING 563 issm_sources += \ 564 ./cores/sampling_core.cpp \ 565 ./analyses/SamplingAnalysis.cpp 566 endif 567 # }}} 568 #Slc sources {{{ 569 if SEALEVELRISE 570 issm_sources += \ 571 ./cores/sealevelchange_core.cpp \ 572 ./analyses/SealevelchangeAnalysis.cpp 572 573 573 endif 574 574 #}}} -
issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp
r26047 r26099 14 14 15 15 switch(analysis_enum){ 16 #ifdef _HAVE_HYDROLOGYTWS_ 17 case HydrologyTwsAnalysisEnum : return new HydrologyTwsAnalysis(); 18 #endif 16 19 #ifdef _HAVE_ADJOINTBALANCETHICKNESS2_ 17 20 case AdjointBalancethickness2AnalysisEnum : return new AdjointBalancethickness2Analysis(); … … 71 74 case HydrologyDCInefficientAnalysisEnum : return new HydrologyDCInefficientAnalysis(); 72 75 #endif 73 #ifdef _HAVE_HYDROLOGYSHREVE_74 case HydrologyShreveAnalysisEnum : return new HydrologyShreveAnalysis();75 #endif76 76 #ifdef _HAVE_HYDROLOGYGLADS_ 77 77 case HydrologyGlaDSAnalysisEnum : return new HydrologyGlaDSAnalysis(); 78 #endif 79 #ifdef _HAVE_HYDROLOGYPISM_ 80 case HydrologyPismAnalysisEnum : return new HydrologyPismAnalysis(); 78 81 #endif 79 82 #ifdef _HAVE_HYDROLOGYSHAKTI_ 80 83 case HydrologyShaktiAnalysisEnum : return new HydrologyShaktiAnalysis(); 81 84 #endif 82 #ifdef _HAVE_HYDROLOGY PISM_83 case Hydrology PismAnalysisEnum : return new HydrologyPismAnalysis();85 #ifdef _HAVE_HYDROLOGYSHREVE_ 86 case HydrologyShreveAnalysisEnum : return new HydrologyShreveAnalysis(); 84 87 #endif 85 88 #ifdef _HAVE_L2PROJECTIONBASE_ … … 101 104 case MeltingAnalysisEnum : return new MeltingAnalysis(); 102 105 #endif 106 #ifdef _HAVE_OCEANTRANSPORT_ 107 case OceantransportAnalysisEnum : return new OceantransportAnalysis(); 108 #endif 103 109 #ifdef _HAVE_SAMPLING_ 104 110 case SamplingAnalysisEnum : return new SamplingAnalysis(); 105 111 #endif 106 #ifdef _HAVE_SEALEVEL RISE_112 #ifdef _HAVE_SEALEVELCHANGE_ 107 113 case SealevelchangeAnalysisEnum : return new SealevelchangeAnalysis(); 108 114 #endif -
issm/trunk-jpl/src/c/analyses/OceantransportAnalysis.cpp
r26076 r26099 18 18 }/*}}}*/ 19 19 int OceantransportAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/ 20 return 1;20 return 3; 21 21 }/*}}}*/ 22 22 void OceantransportAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/ … … 59 59 iomodel->ConstantToInput(inputs,elements,0.,OldAccumulatedDeltaBottomPressureEnum,P1Enum); 60 60 iomodel->FetchDataToInput(inputs,elements,"md.initialization.bottompressure",BottomPressureEnum); 61 iomodel->FetchDataToInput(inputs,elements,"md.initialization.dsl",DslEnum); 62 iomodel->FetchDataToInput(inputs,elements,"md.initialization.str",StrEnum); 61 63 62 64 -
issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp
r26047 r26099 110 110 IssmDouble* partitionice=NULL; 111 111 IssmDouble* partitionhydro=NULL; 112 IssmDouble* partitionocean=NULL; 112 113 IssmDouble* bslcice_partition=NULL; 113 114 IssmDouble* bslchydro_partition=NULL; 114 int npartice,nparthydro,nel; 115 IssmDouble* bslcocean_partition=NULL; 116 int npartice,nparthydro,npartocean,nel; 115 117 116 118 … … 159 161 xDelete<IssmDouble>(partitionice); 160 162 } 163 161 164 iomodel->FetchData(&nparthydro,"md.solidearth.nparthydro"); 162 165 parameters->AddObject(new IntParam(SolidearthNpartHydroEnum,nparthydro)); … … 168 171 parameters->AddObject(new DoubleMatParam(CumBslcHydroPartitionEnum,bslchydro_partition,nparthydro,1)); 169 172 xDelete<IssmDouble>(partitionhydro); 173 } 174 175 iomodel->FetchData(&npartocean,"md.solidearth.npartocean"); 176 parameters->AddObject(new IntParam(SolidearthNpartOceanEnum,npartocean)); 177 if(npartocean){ 178 iomodel->FetchData(&partitionocean,&nel,NULL,"md.solidearth.partitionocean"); 179 parameters->AddObject(new DoubleMatParam(SolidearthPartitionOceanEnum,partitionocean,nel,1)); 180 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.npartocean",SolidearthNpartOceanEnum)); 181 bslcocean_partition=xNewZeroInit<IssmDouble>(npartocean); 182 parameters->AddObject(new DoubleMatParam(CumBslcOceanPartitionEnum,bslcocean_partition,npartocean,1)); 183 xDelete<IssmDouble>(partitionocean); 170 184 } 171 185 -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r26090 r26099 238 238 virtual void ElementResponse(IssmDouble* presponse,int response_enum)=0; 239 239 virtual void ElementSizes(IssmDouble* phx,IssmDouble* phy,IssmDouble* phz)=0; 240 virtual void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,bool spherical=false)=0; 240 241 virtual int FiniteElement(void)=0; 241 242 virtual IssmDouble FloatingArea(bool scaled)=0; … … 374 375 virtual void EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz)=0; 375 376 #endif 376 #ifdef _HAVE_SEALEVEL RISE_377 #ifdef _HAVE_SEALEVELCHANGE_ 377 378 virtual void SetSealevelMasks(SealevelMasks* masks)=0; 378 379 virtual IssmDouble GetArea3D(void)=0; … … 383 384 virtual IssmDouble SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks,Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea)=0; 384 385 virtual void SealevelchangeBarystaticBottomPressure(IssmDouble* Sgi, SealevelMasks* masks)=0; 385 virtual void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz)=0; 386 virtual void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, 387 IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze)=0; 386 388 virtual void SealevelchangeSal(IssmDouble* Sgo, IssmDouble* Sg_old,SealevelMasks* mask)=0; 387 389 virtual void DeformationFromSurfaceLoads(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r26090 r26099 70 70 void CreateInputTimeAverage(int transientinput_enum,int averagedinput_enum,IssmDouble start_time,IssmDouble end_time,int averaging_method); 71 71 void ElementResponse(IssmDouble* presponse,int response_enum); 72 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,bool spherical=false){_error_("not implemented yet");}; 72 73 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); 73 74 int FiniteElement(void); … … 214 215 void EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){_error_("not implemented yet!");}; 215 216 #endif 216 #ifdef _HAVE_SEALEVEL RISE_217 #ifdef _HAVE_SEALEVELCHANGE_ 217 218 IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");}; 218 219 void SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");}; 219 220 void SealevelchangeMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 220 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");}; 221 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, 222 IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze){_error_("not implemented yet!");}; 221 223 IssmDouble SealevelchangeBarystaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");}; 222 224 IssmDouble SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");}; -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r26090 r26099 54 54 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp){_error_("not implemented yet");}; 55 55 void ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");}; 56 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,bool spherical=false){_error_("not implemented yet");}; 56 57 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){_error_("not implemented yet");}; 57 58 int FiniteElement(void); … … 169 170 void EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){_error_("not implemented yet!");}; 170 171 #endif 171 #ifdef _HAVE_SEALEVEL RISE_172 #ifdef _HAVE_SEALEVELCHANGE_ 172 173 void SealevelchangeMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 173 174 void SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");}; 174 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");}; 175 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, 176 IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze){_error_("not implemented yet!");}; 175 177 IssmDouble SealevelchangeBarystaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");}; 176 178 IssmDouble SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r26090 r26099 53 53 IssmDouble DragCoefficientAbsGradient(void){_error_("not implemented yet");}; 54 54 void ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");}; 55 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,bool spherical=false){_error_("not implemented yet");}; 55 56 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); 56 57 void FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3); … … 176 177 void EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){_error_("not implemented yet!");}; 177 178 #endif 178 #ifdef _HAVE_SEALEVEL RISE_179 #ifdef _HAVE_SEALEVELCHANGE_ 179 180 void SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");}; 180 181 void SealevelchangeMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 181 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");}; 182 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, 183 IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze){_error_("not implemented yet!");}; 182 184 IssmDouble SealevelchangeBarystaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");}; 183 185 IssmDouble SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r26090 r26099 5411 5411 /*}}}*/ 5412 5412 #endif 5413 #ifdef _HAVE_SEALEVEL RISE_5413 #ifdef _HAVE_SEALEVELCHANGE_ 5414 5414 IssmDouble Tria::OceanAverage(IssmDouble* Sg, SealevelMasks* masks){ /*{{{*/ 5415 5415 … … 5541 5541 } 5542 5542 /*}}}*/ 5543 void Tria::SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){ /*{{{*/ 5543 void Tria::SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze){ /*{{{*/ 5544 5544 5545 /*diverse:*/ 5545 5546 int gsize; … … 5684 5685 5685 5686 /*Add in inputs:*/ 5686 this->inputs->SetArrayInput(SealevelchangeIndicesEnum,this->lid,indices,gsize);5687 5687 this->inputs->SetArrayInput(SealevelchangeGEnum,this->lid,G,gsize); 5688 5688 if(computeelastic){ … … 6219 6219 } 6220 6220 /*}}}*/ 6221 void Tria::ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, bool spherical){/*{{{*/ 6222 6223 /*Look for x,y,z coordinates:*/ 6224 IssmDouble xyz_list[NUMVERTICES][3]; 6225 IssmDouble xe,ye,ze; 6226 6227 /*Element XYZ list*/ 6228 ::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES); 6229 6230 /*Find centroid:*/ 6231 xe=(xyz_list[0][0]+xyz_list[1][0]+xyz_list[2][0])/3.0; 6232 ye=(xyz_list[0][1]+xyz_list[1][1]+xyz_list[2][1])/3.0; 6233 ze=(xyz_list[0][2]+xyz_list[1][2]+xyz_list[2][2])/3.0; 6234 6235 if(!spherical){ 6236 vxe->SetValue(this->sid,xe,INS_VAL); 6237 vye->SetValue(this->sid,ye,INS_VAL); 6238 vze->SetValue(this->sid,ze,INS_VAL); 6239 } 6240 else _error_("spherical coordinates not supported yet!"); 6241 return; 6242 } 6243 /*}}}*/ 6244 6245 //new logic 6246 void Tria::SealevelchangeGeometryOptim(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze){ /*{{{*/ 6247 6248 /*diverse:*/ 6249 int nel; 6250 bool spherical=true; 6251 IssmDouble llr_list[NUMVERTICES][3]; 6252 IssmDouble xyz_list[NUMVERTICES][3]; 6253 IssmDouble area,planetarea,planetradius; 6254 IssmDouble I; //change in ice thickness or water level(Farrel and Clarke, Equ. 4) 6255 IssmDouble rho_earth; 6256 IssmDouble lati,longi; 6257 IssmDouble constant; 6258 IssmDouble x,y,z,dx,dy,dz,N_azim,E_azim; 6259 int sidlist[NUMVERTICES]; 6260 6261 #ifdef _HAVE_RESTRICT_ 6262 IssmDouble* __restrict__ G=NULL; 6263 IssmDouble* __restrict__ GU=NULL; 6264 IssmDouble* __restrict__ GN=NULL; 6265 IssmDouble* __restrict__ GE=NULL; 6266 IssmDouble* __restrict__ G_elastic_precomputed=NULL; 6267 IssmDouble* __restrict__ G_rigid_precomputed=NULL; 6268 IssmDouble* __restrict__ U_elastic_precomputed=NULL; 6269 IssmDouble* __restrict__ H_elastic_precomputed=NULL; 6270 IssmDouble* __restrict__ lates=NULL; 6271 IssmDouble* __restrict__ longes=NULL; 6272 #else 6273 IssmDouble* G=NULL; 6274 IssmDouble* GU=NULL; 6275 IssmDouble* GN=NULL; 6276 IssmDouble* GE=NULL; 6277 IssmDouble* G_elastic_precomputed=NULL; 6278 IssmDouble* G_rigid_precomputed=NULL; 6279 IssmDouble* U_elastic_precomputed=NULL; 6280 IssmDouble* H_elastic_precomputed=NULL; 6281 IssmDouble* lates=NULL; 6282 IssmDouble* longes=NULL; 6283 #endif 6284 6285 /*elastic green function:*/ 6286 int index; 6287 int M; 6288 6289 /*Computational flags:*/ 6290 bool computerigid = false; 6291 bool computeelastic = false; 6292 int horiz; 6293 6294 /*recover parameters: */ 6295 rho_earth=FindParam(MaterialsEarthDensityEnum); 6296 this->parameters->FindParam(&computerigid,SolidearthSettingsRigidEnum); 6297 this->parameters->FindParam(&computeelastic,SolidearthSettingsElasticEnum); 6298 this->parameters->FindParam(&nel,MeshNumberofelementsEnum); 6299 this->parameters->FindParam(&planetarea,SolidearthPlanetAreaEnum); 6300 this->parameters->FindParam(&planetradius,SolidearthPlanetRadiusEnum); 6301 this->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum); 6302 6303 /*compute area and add to inputs:*/ 6304 area=GetAreaSpherical(); 6305 this->inputs->SetDoubleInput(AreaEnum,this->lid,area); 6306 this->AddInput(SealevelAreaEnum,&area,P0Enum); 6307 if(!computerigid)return; 6308 6309 /*recover precomputed green function kernels:*/ 6310 DoubleVecParam* parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGRigidEnum)); _assert_(parameter); 6311 parameter->GetParameterValueByPointer((IssmDouble**)&G_rigid_precomputed,&M); 6312 6313 /*allocate arrays:*/ 6314 G=xNewZeroInit<IssmDouble>(3*nel); 6315 longes=xNewZeroInit<IssmDouble>(nel); 6316 lates=xNewZeroInit<IssmDouble>(nel); 6317 6318 if(computeelastic){ 6319 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGElasticEnum)); _assert_(parameter); 6320 parameter->GetParameterValueByPointer((IssmDouble**)&G_elastic_precomputed,&M); 6321 6322 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeHElasticEnum)); _assert_(parameter); 6323 parameter->GetParameterValueByPointer((IssmDouble**)&H_elastic_precomputed,&M); 6324 6325 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeUElasticEnum)); _assert_(parameter); 6326 parameter->GetParameterValueByPointer((IssmDouble**)&U_elastic_precomputed,&M); 6327 6328 GU=xNewZeroInit<IssmDouble>(3*nel); 6329 if(horiz){ 6330 GN=xNewZeroInit<IssmDouble>(3*nel); 6331 GE=xNewZeroInit<IssmDouble>(3*nel); 6332 } 6333 } 6334 6335 /*retrieve coordinates: */ 6336 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 6337 6338 /*compute centroids of all elements:*/ 6339 for(int i=0;i<nel;i++){ 6340 lates[i]= asin(zze[i]/planetradius); 6341 longes[i]= atan2(yye[i],xxe[i]); 6342 } 6343 6344 constant=3/rho_earth*area/planetarea; 6345 6346 /*Recover vertex absolute id: */ 6347 this->GetVerticesSidList(&sidlist[0]); 6348 6349 for(int e=0;e<nel;e++){ 6350 for (int i=0;i<3;i++){ 6351 IssmDouble alpha; 6352 IssmDouble delPhi,delLambda; 6353 /*recover info for this element and vertex:*/ 6354 IssmDouble late=lates[e]; 6355 IssmDouble longe=longes[e]; 6356 int sid=sidlist[i]; 6357 6358 /*Compute alpha angle between centroid and current vertex and index into precomputed tables: */ 6359 lati=latitude[sid]/180.*M_PI; longi=longitude[sid]/180.*M_PI; 6360 delPhi=fabs(lati-late); delLambda=fabs(longi-longe); if (delLambda>M_PI)delLambda=2*M_PI-delLambda; 6361 alpha=2.*asin(sqrt(pow(sin(delPhi/2),2)+cos(lati)*cos(late)*pow(sin(delLambda/2),2))); 6362 index=reCast<int,IssmDouble>( alpha/M_PI*reCast<IssmDouble,int>(M-1) ); 6363 6364 /*Rigid earth gravitational perturbation: */ 6365 G[i*nel+e]+=G_rigid_precomputed[index]; 6366 6367 if(computeelastic){ 6368 G[i*nel+e]+=G_elastic_precomputed[index]; 6369 } 6370 G[i*nel+e]=G[i*nel+e]*constant; 6371 6372 /*Elastic components:*/ 6373 if(computeelastic){ 6374 GU[i*nel+e] = constant * U_elastic_precomputed[index]; 6375 if(horiz){ 6376 /*Compute azimuths, both north and east components: */ 6377 x = xx[sid]; y = yy[sid]; z = zz[sid]; 6378 if(latitude[sid]==90){ 6379 x=1e-12; y=1e-12; 6380 } 6381 if(latitude[sid]==-90){ 6382 x=1e-12; y=1e-12; 6383 } 6384 dx = xxe[e]-x; dy = yye[e]-y; dz = zze[e]-z; 6385 N_azim = (-z*x*dx-z*y*dy+(pow(x,2)+pow(y,2))*dz) /pow((pow(x,2)+pow(y,2))*(pow(x,2)+pow(y,2)+pow(z,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5); 6386 E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5); 6387 6388 GN[i*nel+e] = constant*H_elastic_precomputed[index]*N_azim; 6389 GE[i*nel+e] = constant*H_elastic_precomputed[index]*E_azim; 6390 } 6391 } 6392 } 6393 } 6394 6395 /*Add in inputs:*/ 6396 this->inputs->SetArrayInput(SealevelchangeGEnum,this->lid,G,nel*3); 6397 if(computeelastic){ 6398 this->inputs->SetArrayInput(SealevelchangeGUEnum,this->lid,GU,nel*3); 6399 if(horiz){ 6400 this->inputs->SetArrayInput(SealevelchangeGNEnum,this->lid,GN,nel*3); 6401 this->inputs->SetArrayInput(SealevelchangeGEEnum,this->lid,GE,nel*3); 6402 } 6403 } 6404 this->inputs->SetDoubleInput(AreaEnum,this->lid,area); 6405 this->AddInput(SealevelAreaEnum,&area,P0Enum); 6406 6407 /*Free allocations:*/ 6408 #ifdef _HAVE_RESTRICT_ 6409 delete G; 6410 if(computeelastic){ 6411 delete GU; 6412 if(horiz){ 6413 delete GN; 6414 delete GE; 6415 } 6416 } 6417 delete lates; 6418 delete longes; 6419 #else 6420 xDelete(G); 6421 if(computeelastic){ 6422 xDelete(GU); 6423 if(horiz){ 6424 xDelete(GN); 6425 xDelete(GE); 6426 } 6427 } 6428 delete lates; 6429 delete longes; 6430 #endif 6431 6432 return; 6433 } 6434 /*}}}*/ 6435 void Tria::SealevelchangeBarystaticLoads(IssmDouble* barystatic_contribution,IssmDouble* localloads, SealevelMasks* masks, Matrix<IssmDouble>* barystatic_contribution_onpartition, IssmDouble* partition, IssmDouble oceanarea){ /*{{{*/ 6436 6437 /*diverse:*/ 6438 IssmDouble area; 6439 IssmDouble phi_ice=1.0; //WARNING: do not touch this, default is entire elemnt contributes barystatic 6440 IssmDouble phi_water=1.0; //WARNING: do not touch this, default is entire elemnt contributes barystatic 6441 IssmDouble I,W,BP; //change in ice thickness, water column or bottom pressure (Farrel and Clarke, Equ. 4) 6442 bool notfullygrounded=false; 6443 bool scaleoceanarea= false; 6444 bool computerigid= false; 6445 int glfraction=1; 6446 int npartice,nparthydro,npartocean; 6447 6448 /*flags:*/ 6449 bool isocean=false; 6450 bool ishydro=false; 6451 bool isice=false; 6452 6453 /*output: */ 6454 IssmDouble bslcice=0; 6455 IssmDouble bslchydro=0; 6456 IssmDouble bslcbp=0; 6457 6458 /*ice properties: */ 6459 IssmDouble rho_ice,rho_water,rho_freshwater; 6460 6461 /*constants:*/ 6462 IssmDouble constant=0; 6463 6464 /*recover parameters:*/ 6465 this->parameters->FindParam(&isice,TransientIsmasstransportEnum); 6466 this->parameters->FindParam(&isocean,TransientIsoceantransportEnum); 6467 this->parameters->FindParam(&ishydro,TransientIshydrologyEnum); 6468 6469 /*early return if we are not on an ice cap, and we are not requesting 6470 *hydrology or bottom pressure loads :*/ 6471 if(!isocean && !ishydro){ 6472 if(!masks->isiceonly[this->lid]){ 6473 #ifdef _ISSM_DEBUG_ 6474 constant=0; this->AddInput(SealevelBarystaticMaskEnum,&constant,P0Enum); 6475 #endif 6476 /*barystatic_contribution[0]+=0; 6477 barystatic_contribution[1]+=0; 6478 barystatic_contribution[2]+=0;*/ 6479 return; 6480 } 6481 } 6482 6483 /*early return if we are fully floating and we are not doing bottom pressure loads:*/ 6484 if(!isocean){ 6485 if (masks->isfullyfloating[this->lid]){ 6486 constant=0; 6487 #ifdef _ISSM_DEBUG_ 6488 this->AddInput(SealevelBarystaticMaskEnum,&constant,P0Enum); 6489 #endif 6490 /*barystatic_contribution[0]+=0; 6491 barystatic_contribution[1]+=0; 6492 barystatic_contribution[2]+=0;*/ 6493 return; 6494 } 6495 } 6496 6497 /*early return if we are not on the ocean and we are not doing ice mass transport of 6498 * hydrology:*/ 6499 if(!isice && !ishydro){ 6500 if(!masks->isoceanin[this->lid]){ 6501 /*barystatic_contribution[0]+=0; 6502 barystatic_contribution[1]+=0; 6503 barystatic_contribution[2]+=0;*/ 6504 return; 6505 } 6506 6507 } 6508 6509 /*if we are an ice shelf, are we fully grounded or not? (used later):*/ 6510 if (masks->notfullygrounded[this->lid]) notfullygrounded=true; //used later on. 6511 6512 /*recover some parameters:*/ 6513 rho_ice=FindParam(MaterialsRhoIceEnum); 6514 rho_water=FindParam(MaterialsRhoSeawaterEnum); 6515 this->parameters->FindParam(&computerigid,SolidearthSettingsRigidEnum); 6516 this->parameters->FindParam(&scaleoceanarea,SolidearthSettingsOceanAreaScalingEnum); 6517 this->parameters->FindParam(&glfraction,SolidearthSettingsGlfractionEnum); 6518 this->parameters->FindParam(&npartice,SolidearthNpartIceEnum); 6519 this->parameters->FindParam(&nparthydro,SolidearthNpartHydroEnum); 6520 6521 /*Get area of element: precomputed in the sealevelchange_geometry:*/ 6522 this->Element::GetInputValue(&area,AreaEnum); 6523 6524 /*Deal with ice loads if we are on grounded ice:*/ 6525 if(masks->isiceonly[this->lid] && !masks->isfullyfloating[this->lid]){ /*{{{*/ 6526 6527 /*Compute fraction of the element that is grounded: */ 6528 if(notfullygrounded){ 6529 IssmDouble xyz_list[NUMVERTICES][3]; 6530 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 6531 6532 phi_ice=this->GetGroundedPortion(&xyz_list[0][0]); //watch out, this only works because of the Thales theorem! We are in 3D, but this routine is inherently for 2D trias 6533 if(glfraction==0)phi_ice=1; 6534 #ifdef _ISSM_DEBUG_ 6535 this->AddInput(SealevelBarystaticMaskEnum,&phi_ice,P0Enum); 6536 #endif 6537 } 6538 else phi_ice=1.0; 6539 6540 /*Inform mask: */ 6541 constant+=100; //1 for ice. 6542 #ifdef _ISSM_DEBUG_ 6543 this->AddInput(SealevelBarystaticMaskEnum,&constant,P0Enum); 6544 #endif 6545 6546 /*Retrieve surface load for ice: */ 6547 Input* deltathickness_input=this->GetInput(DeltaIceThicknessEnum); 6548 if (!deltathickness_input)_error_("delta thickness input needed to compute sea level change!"); 6549 6550 /*/Average ice thickness over grounded area of the element only: {{{*/ 6551 if(!notfullygrounded)deltathickness_input->GetInputAverage(&I); 6552 else{ 6553 IssmDouble total_weight=0; 6554 bool mainlyfloating = true; 6555 int point1; 6556 IssmDouble fraction1,fraction2; 6557 6558 /*Recover portion of element that is grounded*/ 6559 this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating); 6560 Gauss* gauss = this->NewGauss(point1,fraction1,fraction2,mainlyfloating,2); 6561 6562 /* Start looping on the number of gaussian points and average over these gaussian points: */ 6563 total_weight=0; 6564 I=0; 6565 while(gauss->next()){ 6566 IssmDouble Ig=0; 6567 deltathickness_input->GetInputValue(&Ig,gauss); 6568 I+=Ig*gauss->weight; 6569 total_weight+=gauss->weight; 6570 } 6571 I=I/total_weight; 6572 delete gauss; 6573 } 6574 /*}}}*/ 6575 6576 /*Compute barystatic contribution:*/ 6577 _assert_(oceanarea>0.); 6578 if(scaleoceanarea) oceanarea=3.619e+14; // use true ocean area, m^2 6579 bslcice = rho_ice*area*I/(oceanarea*rho_water); 6580 _assert_(!xIsNan<IssmDouble>(bslcice)); 6581 6582 /*Transfer thickness change into kg/m^2:*/ 6583 I=I*rho_ice*phi_ice; 6584 } /*}}}*/ 6585 6586 /*Deal with water loads if we are on ground:*/ 6587 if(!masks->isfullyfloating[this->lid]){ 6588 6589 /*Retrieve water height at vertices: */ 6590 Input* deltathickness_input=this->GetInput(DeltaTwsEnum); 6591 if (!deltathickness_input)_error_("DeltaTwsEnum input needed to compute sea level change!"); 6592 deltathickness_input->GetInputAverage(&W); 6593 6594 /*Compute barystatic component:*/ 6595 _assert_(oceanarea>0.); 6596 if(scaleoceanarea) oceanarea=3.619e+14; // use true ocean area, m^2 6597 bslchydro = rho_freshwater*area*phi_water*W/(oceanarea*rho_water); 6598 _assert_(!xIsNan<IssmDouble>(bslchydro)); 6599 6600 /*convert from m to kg/m^2:*/ 6601 W=W*rho_freshwater*phi_water; 6602 } 6603 6604 /*Deal with ocean bottom pressures:*/ 6605 if(masks->isoceanin[this->lid]){ 6606 6607 /*Retrieve bottom pressure change and average over the element: */ 6608 Input* bottompressure_change_input=this->GetInput(DeltaBottomPressureEnum); 6609 if (!bottompressure_change_input)_error_("DeltaBottomPressureEnum pressure input needed to compute sea level change fingerprint!"); 6610 bottompressure_change_input->GetInputAverage(&BP); 6611 6612 /*Compute barystatic component:*/ 6613 bslcbp = rho_water*area*BP/(oceanarea*rho_water); 6614 6615 /*convert from m to kg/m^2:*/ 6616 BP=BP*rho_water; 6617 } 6618 6619 /*Plug all loads into total load vector:*/ 6620 localloads[this->lid]+=I+W+BP; 6621 6622 /*Plug bslcice into barystatic contribution vector:*/ 6623 if(barystatic_contribution_onpartition){ 6624 int idi=reCast<int>(partition[this->Sid()])+1; 6625 int idj=0; 6626 idj=0;barystatic_contribution_onpartition->SetValues(1,&idi,1,&idj,&bslcice,ADD_VAL); 6627 idj=1;barystatic_contribution_onpartition->SetValues(1,&idi,1,&idj,&bslchydro,ADD_VAL); 6628 idj=2;barystatic_contribution_onpartition->SetValues(1,&idi,1,&idj,&bslcbp,ADD_VAL); 6629 } 6630 6631 barystatic_contribution[0]+=bslcice; 6632 barystatic_contribution[1]+=bslchydro; 6633 barystatic_contribution[2]+=bslcbp; 6634 6635 } 6636 /*}}}*/ 6637 IssmDouble Tria::SealevelchangeConvolution(IssmDouble* loads){ /*{{{*/ 6638 6639 /*sal green function:*/ 6640 IssmDouble* G=NULL; 6641 IssmDouble Sealevel[NUMVERTICES]={0,0,0}; 6642 6643 bool sal = false; 6644 int size; 6645 int nel; 6646 6647 this->parameters->FindParam(&sal,SolidearthSettingsRigidEnum); 6648 this->parameters->FindParam(&nel,MeshNumberofelementsEnum); 6649 if(sal){ 6650 this->inputs->GetArrayPtr(SealevelchangeGEnum,this->lid,&G,&size); 6651 6652 for(int i=0;i<NUMVERTICES;i++) { 6653 for (int e=0;e<nel;e++){ 6654 Sealevel[i]+=G[i*nel+e]*loads[e]; 6655 } 6656 } 6657 6658 this->AddInput(SealevelRSLEnum,Sealevel,P1Enum); 6659 } 6660 6661 } /*}}}*/ 6662 6221 6663 #endif 6222 6664 -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r26090 r26099 70 70 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp); 71 71 void CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum); 72 void ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,bool spherical=false); 72 73 int EdgeOnBaseIndex(); 73 74 void EdgeOnBaseIndices(int* pindex1,int* pindex); … … 160 161 void EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz); 161 162 #endif 162 #ifdef _HAVE_SEALEVEL RISE_163 #ifdef _HAVE_SEALEVELCHANGE_ 163 164 IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks); 164 165 void SealevelchangeMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,SealevelMasks* masks); 165 166 void SetSealevelMasks(SealevelMasks* masks); 166 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz); 167 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze); 168 void SealevelchangeGeometryOptim(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze); 169 167 170 IssmDouble SealevelchangeBarystaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea); 168 171 IssmDouble SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea); … … 170 173 void SealevelchangeSal(IssmDouble* Sgo,IssmDouble* Sg_old,SealevelMasks* masks); 171 174 void DeformationFromSurfaceLoads(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks); 172 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y); 175 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y); 176 void SealevelchangeBarystaticLoads(IssmDouble* barystatic_contribution,IssmDouble* localloads, SealevelMasks* masks, Matrix<IssmDouble>* barystatic_contribution_onpartition, IssmDouble* partition, IssmDouble oceanarea); 177 IssmDouble SealevelchangeConvolution(IssmDouble* loads); 173 178 #endif 174 179 /*}}}*/ -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r26091 r26099 844 844 case TransientSolutionEnum:{ 845 845 /*We have multiple analyses here, process one by one*/ 846 bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,is groundingline,isstressbalance,ismovingfront,ishydrology,isdamage,issmb,isslc,isesa,issampling;846 bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isoceantransport,isgroundingline,isstressbalance,ismovingfront,ishydrology,isdamage,issmb,isslc,isesa,issampling; 847 847 iomodel->FindConstant(&isthermal,"md.transient.isthermal"); 848 848 iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront"); 849 849 iomodel->FindConstant(&ismasstransport,"md.transient.ismasstransport"); 850 iomodel->FindConstant(&isoceantransport,"md.transient.isoceantransport"); 850 851 iomodel->FindConstant(&isstressbalance,"md.transient.isstressbalance"); 851 852 iomodel->FindConstant(&isgroundingline,"md.transient.isgroundingline"); … … 892 893 if(isdamage){ 893 894 analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum; 895 } 896 if(isoceantransport){ 897 analyses_temp[numanalyses++]=OceantransportAnalysisEnum; 894 898 } 895 899 if(isslc){ … … 4744 4748 /*}}}*/ 4745 4749 #endif 4746 #ifdef _HAVE_SEALEVEL RISE_4750 #ifdef _HAVE_SEALEVELCHANGE_ 4747 4751 void FemModel::SealevelchangeBarystatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslc,IssmDouble* pbslcice, IssmDouble* pbslchydro, IssmDouble** pbslcice_partition,IssmDouble** pbslchydro_partition,SealevelMasks* masks) { /*{{{*/ 4748 4752 … … 4756 4760 IssmDouble oceanarea_cpu = 0.; 4757 4761 int bp_compute_fingerprints= 0; 4762 bool isoceantransport=false; 4758 4763 4759 4764 Vector<IssmDouble>* bslcice_partition=NULL; … … 4765 4770 IssmDouble* bslchydro_partition_serial=NULL; 4766 4771 IssmDouble* partitionhydro=NULL; 4772 bool istws=0; 4767 4773 int nparthydro; 4768 bool istws; 4769 4774 4775 int npartocean; 4776 Vector<IssmDouble>* bslcocean_partition=NULL; 4777 IssmDouble* bslcocean_partition_serial=NULL; 4778 IssmDouble* partitionocean=NULL; 4770 4779 4771 4780 /*Initialize temporary vector that will be used to sum barystatic components … … 4800 4809 bslchydro_partition= new Vector<IssmDouble>(nparthydro); 4801 4810 } 4811 4812 this->parameters->FindParam(&npartocean,SolidearthNpartOceanEnum); 4813 if(npartocean){ 4814 this->parameters->FindParam(&partitionocean,&nel,NULL,SolidearthPartitionOceanEnum); 4815 bslchydro_partition= new Vector<IssmDouble>(npartocean); 4816 } 4817 /*For later: 4818 npartbarystatic=npartice; 4819 if(nparthydro>npartbarystatic)npartbarystatic=nparthydro; 4820 if(npartocean>npartbarystatic)npartbarystatic=npartocean; 4821 bslc_partition=new Matrix(IssmDouble>(npartbarystatic,3); 4822 4823 bslc_cpu[0]=0; bslc_cpu[1]=0; bslc_cpu[2]=0; 4824 for(Object* & object : this->elements->objects){ 4825 Element* element = xDynamicCast<Element*>(object); 4826 element->SealevelchangeBarystaticLoads(&bslc_cpu[0], localloads,masks, bslcice_partition,partitionice,oceanarea); 4827 } 4828 MPI Bcast localloads -> loads 4829 4830 for(Object* & object : this->elements->objects){ 4831 Element* element = xDynamicCast<Element*>(object); 4832 element->SealevelchangeConvolution(loads); 4833 } 4834 */ 4835 4836 4837 4802 4838 4803 4839 … … 4821 4857 /*Call the barystatic sea level change core for bottom pressures: */ 4822 4858 this->parameters->FindParam(&bp_compute_fingerprints,SolidearthSettingsComputeBpGrdEnum); 4823 if(bp_compute_fingerprints){ 4859 this->parameters->FindParam(&isoceantransport,TransientIsoceantransportEnum); 4860 if(bp_compute_fingerprints && isoceantransport){ 4824 4861 for(int i=0;i<elements->Size();i++){ 4825 4862 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); … … 5108 5145 element->GiaDeflection(wg,dwgdt, matlitho, x,y); 5109 5146 } 5147 5148 /*Assemble parallel vector:*/ 5149 dwgdt->Assemble(); 5150 wg->Assemble(); 5110 5151 } 5111 5152 /*}}}*/ -
issm/trunk-jpl/src/c/classes/FemModel.h
r26049 r26099 163 163 void EsaGeodetic3D(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz); 164 164 #endif 165 #ifdef _HAVE_SEALEVEL RISE_165 #ifdef _HAVE_SEALEVELCHANGE_ 166 166 void SealevelchangeBarystatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslc,IssmDouble* pbslcice, IssmDouble* pbslchydro, IssmDouble** pbslcice_partition,IssmDouble** pbslchydro_partition, SealevelMasks* masks); 167 167 void SealevelchangeSal(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, SealevelMasks* masks,bool verboseconvolution); -
issm/trunk-jpl/src/c/classes/Inputs/Inputs.cpp
r26072 r26099 82 82 int index= EnumToIndex(enum_in); 83 83 if(this->inputs[index])this->inputs[index]->DeepEcho(); 84 return; 85 } 86 /*}}}*/ 87 void Inputs::Echo(int enum_in){/*{{{*/ 88 _printf_("Inputs Echo:\n"); 89 int index= EnumToIndex(enum_in); 90 if(this->inputs[index])this->inputs[index]->Echo(); 84 91 return; 85 92 } -
issm/trunk-jpl/src/c/classes/Inputs/Inputs.h
r26071 r26099 50 50 void DeepEcho(int enum_in); 51 51 void Echo(void); 52 void Echo(int enum_in); 52 53 bool Exist(int enum_type); 53 54 void GetInputsInterpolations(int* pnuminputs,int** pinterpolations,int** penum); -
issm/trunk-jpl/src/c/cores/oceantransport_core.cpp
r26076 r26099 21 21 bool dakota_analysis; 22 22 int solution_type; 23 Vector<IssmDouble>* ug = NULL; 23 24 24 25 /*activate configuration*/ … … 41 42 * and OceantransportSpcstrEnum inputs in each element, assemble into a vector and feed to 42 43 * InputUpdateFromSolutionx which will deal with accumulating such inputs:*/ 43 Vector<IssmDouble>* ug = NULL;44 44 GetSolutionFromInputsx(&ug,femmodel); 45 45 InputUpdateFromSolutionx(femmodel,ug); 46 46 47 delete ug;47 SolidEarthOceanUpdates(femmodel); 48 48 49 49 if(solution_type==OceantransportSolutionEnum)femmodel->RequestedDependentsx(); … … 51 51 /*profiler*/ 52 52 femmodel->profiler->Stop(OCEANTRANSPORTCORE); 53 54 /*free ressources:*/ 55 delete ug; 56 53 57 } /*}}}*/ 54 58 void SolidEarthOceanUpdates(FemModel* femmodel){ /*{{{*/ -
issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp
r26051 r26099 267 267 /*get some of the updates into elements:*/ 268 268 InputUpdateFromVectorx(femmodel,U_grd,SealevelUGrdEnum,VertexSIdEnum); 269 InputUpdateFromVectorx(femmodel,N_grd,SealevelEnum,VertexSIdEnum); 269 270 InputUpdateFromVectorx(femmodel,N_grd,SealevelNGrdEnum,VertexSIdEnum); 270 271 if(RSLg)InputUpdateFromVectorx(femmodel,RSLg,SealevelRSLEnum,VertexSIdEnum); … … 306 307 int step; 307 308 int computesealevel=0; 309 bool isocean=false; 308 310 IssmDouble time; 309 311 … … 316 318 femmodel->parameters->FindParam(&computesealevel,SolidearthSettingsComputesealevelchangeEnum); 317 319 if (!computesealevel)return; 320 321 /*early return if we have no ocean transport:*/ 322 femmodel->parameters->FindParam(&isocean,TransientIsoceantransportEnum); 323 if(!isocean)return; 318 324 319 325 /*Verbose: */ … … 406 412 IssmDouble *yy = NULL; 407 413 IssmDouble *zz = NULL; 414 IssmDouble *xxe = NULL; 415 IssmDouble *yye = NULL; 416 IssmDouble *zze = NULL; 417 408 418 int horiz; 409 419 bool geometrydone = false; 420 bool optim=false; 410 421 411 422 … … 424 435 /*first, recover lat,long and radius vectors from vertices: */ 425 436 VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); 437 ElementCoordinatesx(&xxe,&yye,&zze,femmodel->elements); 426 438 if(horiz) VertexCoordinatesx(&xx,&yy,&zz,femmodel->vertices); 427 439 … … 430 442 for(Object* & object : femmodel->elements->objects){ 431 443 Element* element=xDynamicCast<Element*>(object); 432 element->SealevelchangeGeometry(latitude,longitude,radius,xx,yy,zz); 444 element->SealevelchangeGeometry(latitude,longitude,radius,xx,yy,zz,xxe,yye,zze); 445 //if(optim) element->SealevelchangeGeometryOptim(latitude,longitude,radius,xx,yy,zz,xxe,yye,zze); 433 446 } 434 447 -
issm/trunk-jpl/src/c/modules/modules.h
r26047 r26099 103 103 #include "./UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h" 104 104 #include "./VertexCoordinatesx/VertexCoordinatesx.h" 105 #include "./ElementCoordinatesx/ElementCoordinatesx.h" 105 106 106 107 #ifdef _HAVE_OCEAN_ -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r26047 r26099 113 113 syn keyword cConstant CumBslcIceEnum 114 114 syn keyword cConstant CumBslcHydroEnum 115 syn keyword cConstant CumBslcOceanEnum 115 116 syn keyword cConstant CumBslcIcePartitionEnum 116 117 syn keyword cConstant CumBslcHydroPartitionEnum 118 syn keyword cConstant CumBslcOceanPartitionEnum 117 119 syn keyword cConstant CumGmtslcEnum 118 120 syn keyword cConstant CumGmslcEnum … … 290 292 syn keyword cConstant MeshNumberoflayersEnum 291 293 syn keyword cConstant MeshNumberofverticesEnum 294 syn keyword cConstant MeshNumberofelementsEnum 292 295 syn keyword cConstant MigrationMaxEnum 293 296 syn keyword cConstant ModelIdEnum … … 338 341 syn keyword cConstant SolidearthPartitionIceEnum 339 342 syn keyword cConstant SolidearthPartitionHydroEnum 343 syn keyword cConstant SolidearthPartitionOceanEnum 340 344 syn keyword cConstant SolidearthNpartIceEnum 345 syn keyword cConstant SolidearthNpartOceanEnum 341 346 syn keyword cConstant SolidearthNpartHydroEnum 342 347 syn keyword cConstant SolidearthPlanetRadiusEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r26047 r26099 107 107 CumBslcIceEnum, 108 108 CumBslcHydroEnum, 109 CumBslcOceanEnum, 109 110 CumBslcIcePartitionEnum, 110 111 CumBslcHydroPartitionEnum, 112 CumBslcOceanPartitionEnum, 111 113 CumGmtslcEnum, 112 114 CumGmslcEnum, … … 284 286 MeshNumberoflayersEnum, 285 287 MeshNumberofverticesEnum, 288 MeshNumberofelementsEnum, 286 289 MigrationMaxEnum, 287 290 ModelIdEnum, … … 332 335 SolidearthPartitionIceEnum, 333 336 SolidearthPartitionHydroEnum, 337 SolidearthPartitionOceanEnum, 334 338 SolidearthNpartIceEnum, 339 SolidearthNpartOceanEnum, 335 340 SolidearthNpartHydroEnum, 336 341 SolidearthPlanetRadiusEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r26047 r26099 115 115 case CumBslcIceEnum : return "CumBslcIce"; 116 116 case CumBslcHydroEnum : return "CumBslcHydro"; 117 case CumBslcOceanEnum : return "CumBslcOcean"; 117 118 case CumBslcIcePartitionEnum : return "CumBslcIcePartition"; 118 119 case CumBslcHydroPartitionEnum : return "CumBslcHydroPartition"; 120 case CumBslcOceanPartitionEnum : return "CumBslcOceanPartition"; 119 121 case CumGmtslcEnum : return "CumGmtslc"; 120 122 case CumGmslcEnum : return "CumGmslc"; … … 292 294 case MeshNumberoflayersEnum : return "MeshNumberoflayers"; 293 295 case MeshNumberofverticesEnum : return "MeshNumberofvertices"; 296 case MeshNumberofelementsEnum : return "MeshNumberofelements"; 294 297 case MigrationMaxEnum : return "MigrationMax"; 295 298 case ModelIdEnum : return "ModelId"; … … 340 343 case SolidearthPartitionIceEnum : return "SolidearthPartitionIce"; 341 344 case SolidearthPartitionHydroEnum : return "SolidearthPartitionHydro"; 345 case SolidearthPartitionOceanEnum : return "SolidearthPartitionOcean"; 342 346 case SolidearthNpartIceEnum : return "SolidearthNpartIce"; 347 case SolidearthNpartOceanEnum : return "SolidearthNpartOcean"; 343 348 case SolidearthNpartHydroEnum : return "SolidearthNpartHydro"; 344 349 case SolidearthPlanetRadiusEnum : return "SolidearthPlanetRadius"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r26047 r26099 115 115 else if (strcmp(name,"CumBslcIce")==0) return CumBslcIceEnum; 116 116 else if (strcmp(name,"CumBslcHydro")==0) return CumBslcHydroEnum; 117 else if (strcmp(name,"CumBslcOcean")==0) return CumBslcOceanEnum; 117 118 else if (strcmp(name,"CumBslcIcePartition")==0) return CumBslcIcePartitionEnum; 118 119 else if (strcmp(name,"CumBslcHydroPartition")==0) return CumBslcHydroPartitionEnum; 120 else if (strcmp(name,"CumBslcOceanPartition")==0) return CumBslcOceanPartitionEnum; 119 121 else if (strcmp(name,"CumGmtslc")==0) return CumGmtslcEnum; 120 122 else if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum; … … 135 137 else if (strcmp(name,"DamageStressUBound")==0) return DamageStressUBoundEnum; 136 138 else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum; 137 else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;138 else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"DslModel")==0) return DslModelEnum; 142 if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum; 143 else if (strcmp(name,"DomainType")==0) return DomainTypeEnum; 144 else if (strcmp(name,"DslModel")==0) return DslModelEnum; 143 145 else if (strcmp(name,"DslModelid")==0) return DslModelidEnum; 144 146 else if (strcmp(name,"DslNummodels")==0) return DslNummodelsEnum; … … 258 260 else if (strcmp(name,"LoveAllowLayerDeletion")==0) return LoveAllowLayerDeletionEnum; 259 261 else if (strcmp(name,"LoveForcingType")==0) return LoveForcingTypeEnum; 260 else if (strcmp(name,"LoveFrequencies")==0) return LoveFrequenciesEnum;261 else if (strcmp(name,"LoveG0")==0) return LoveG0Enum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"LoveKernels")==0) return LoveKernelsEnum; 265 if (strcmp(name,"LoveFrequencies")==0) return LoveFrequenciesEnum; 266 else if (strcmp(name,"LoveG0")==0) return LoveG0Enum; 267 else if (strcmp(name,"LoveKernels")==0) return LoveKernelsEnum; 266 268 else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum; 267 269 else if (strcmp(name,"LoveNfreq")==0) return LoveNfreqEnum; … … 298 300 else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum; 299 301 else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum; 302 else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum; 300 303 else if (strcmp(name,"MigrationMax")==0) return MigrationMaxEnum; 301 304 else if (strcmp(name,"ModelId")==0) return ModelIdEnum; … … 346 349 else if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum; 347 350 else if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum; 351 else if (strcmp(name,"SolidearthPartitionOcean")==0) return SolidearthPartitionOceanEnum; 348 352 else if (strcmp(name,"SolidearthNpartIce")==0) return SolidearthNpartIceEnum; 353 else if (strcmp(name,"SolidearthNpartOcean")==0) return SolidearthNpartOceanEnum; 349 354 else if (strcmp(name,"SolidearthNpartHydro")==0) return SolidearthNpartHydroEnum; 350 355 else if (strcmp(name,"SolidearthPlanetRadius")==0) return SolidearthPlanetRadiusEnum; … … 378 383 else if (strcmp(name,"SolidearthSettingsRigid")==0) return SolidearthSettingsRigidEnum; 379 384 else if (strcmp(name,"SolidearthSettingsRotation")==0) return SolidearthSettingsRotationEnum; 380 else if (strcmp(name,"SealevelchangeRunCount")==0) return SealevelchangeRunCountEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SealevelchangeRunCount")==0) return SealevelchangeRunCountEnum; 381 389 else if (strcmp(name,"SealevelchangeTransitions")==0) return SealevelchangeTransitionsEnum; 382 390 else if (strcmp(name,"SealevelchangeUElastic")==0) return SealevelchangeUElasticEnum; 383 391 else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum; 384 392 else if (strcmp(name,"SettingsNumResultsOnNodes")==0) return SettingsNumResultsOnNodesEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum; 393 else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum; 389 394 else if (strcmp(name,"SettingsCheckpointFrequency")==0) return SettingsCheckpointFrequencyEnum; 390 395 else if (strcmp(name,"SettingsResultsOnNodes")==0) return SettingsResultsOnNodesEnum; … … 501 506 else if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum; 502 507 else if (strcmp(name,"TransientIsoceantransport")==0) return TransientIsoceantransportEnum; 503 else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum; 504 512 else if (strcmp(name,"TransientIsoceancoupling")==0) return TransientIsoceancouplingEnum; 505 513 else if (strcmp(name,"TransientIssampling")==0) return TransientIssamplingEnum; 506 514 else if (strcmp(name,"TransientIsslc")==0) return TransientIsslcEnum; 507 515 else if (strcmp(name,"TransientIssmb")==0) return TransientIssmbEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum; 516 else if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum; 512 517 else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum; 513 518 else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum; … … 624 629 else if (strcmp(name,"EplHeadTransient")==0) return EplHeadTransientEnum; 625 630 else if (strcmp(name,"EsaEmotion")==0) return EsaEmotionEnum; 626 else if (strcmp(name,"EsaNmotion")==0) return EsaNmotionEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"EsaNmotion")==0) return EsaNmotionEnum; 627 635 else if (strcmp(name,"EsaRotationrate")==0) return EsaRotationrateEnum; 628 636 else if (strcmp(name,"EsaStrainratexx")==0) return EsaStrainratexxEnum; 629 637 else if (strcmp(name,"EsaStrainratexy")==0) return EsaStrainratexyEnum; 630 638 else if (strcmp(name,"EsaStrainrateyy")==0) return EsaStrainrateyyEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"EsaUmotion")==0) return EsaUmotionEnum; 639 else if (strcmp(name,"EsaUmotion")==0) return EsaUmotionEnum; 635 640 else if (strcmp(name,"EsaXmotion")==0) return EsaXmotionEnum; 636 641 else if (strcmp(name,"EsaYmotion")==0) return EsaYmotionEnum; … … 747 752 else if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum; 748 753 else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum; 749 else if (strcmp(name,"Sample")==0) return SampleEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"Sample")==0) return SampleEnum; 750 758 else if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum; 751 759 else if (strcmp(name,"SamplingKappa")==0) return SamplingKappaEnum; 752 760 else if (strcmp(name,"Sealevel")==0) return SealevelEnum; 753 761 else if (strcmp(name,"SealevelBarystaticMask")==0) return SealevelBarystaticMaskEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"SealevelBarystaticOceanMask")==0) return SealevelBarystaticOceanMaskEnum; 762 else if (strcmp(name,"SealevelBarystaticOceanMask")==0) return SealevelBarystaticOceanMaskEnum; 758 763 else if (strcmp(name,"SealevelNEsa")==0) return SealevelNEsaEnum; 759 764 else if (strcmp(name,"SealevelNEsaRate")==0) return SealevelNEsaRateEnum; … … 870 875 else if (strcmp(name,"SmbSzaValue")==0) return SmbSzaValueEnum; 871 876 else if (strcmp(name,"SmbT")==0) return SmbTEnum; 872 else if (strcmp(name,"SmbTa")==0) return SmbTaEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"SmbTa")==0) return SmbTaEnum; 873 881 else if (strcmp(name,"SmbTeValue")==0) return SmbTeValueEnum; 874 882 else if (strcmp(name,"SmbTemperaturesAnomaly")==0) return SmbTemperaturesAnomalyEnum; 875 883 else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum; 876 884 else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"SmbTemperaturesReconstructed")==0) return SmbTemperaturesReconstructedEnum; 885 else if (strcmp(name,"SmbTemperaturesReconstructed")==0) return SmbTemperaturesReconstructedEnum; 881 886 else if (strcmp(name,"SmbTini")==0) return SmbTiniEnum; 882 887 else if (strcmp(name,"SmbTmean")==0) return SmbTmeanEnum; … … 993 998 else if (strcmp(name,"Outputdefinition33")==0) return Outputdefinition33Enum; 994 999 else if (strcmp(name,"Outputdefinition34")==0) return Outputdefinition34Enum; 995 else if (strcmp(name,"Outputdefinition35")==0) return Outputdefinition35Enum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition35")==0) return Outputdefinition35Enum; 996 1004 else if (strcmp(name,"Outputdefinition36")==0) return Outputdefinition36Enum; 997 1005 else if (strcmp(name,"Outputdefinition37")==0) return Outputdefinition37Enum; 998 1006 else if (strcmp(name,"Outputdefinition38")==0) return Outputdefinition38Enum; 999 1007 else if (strcmp(name,"Outputdefinition39")==0) return Outputdefinition39Enum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition3")==0) return Outputdefinition3Enum; 1008 else if (strcmp(name,"Outputdefinition3")==0) return Outputdefinition3Enum; 1004 1009 else if (strcmp(name,"Outputdefinition40")==0) return Outputdefinition40Enum; 1005 1010 else if (strcmp(name,"Outputdefinition41")==0) return Outputdefinition41Enum; … … 1116 1121 else if (strcmp(name,"Constraints")==0) return ConstraintsEnum; 1117 1122 else if (strcmp(name,"Contact")==0) return ContactEnum; 1118 else if (strcmp(name,"Contour")==0) return ContourEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"Contour")==0) return ContourEnum; 1119 1127 else if (strcmp(name,"Contours")==0) return ContoursEnum; 1120 1128 else if (strcmp(name,"ControlInput")==0) return ControlInputEnum; 1121 1129 else if (strcmp(name,"ControlInputGrad")==0) return ControlInputGradEnum; 1122 1130 else if (strcmp(name,"ControlInputMaxs")==0) return ControlInputMaxsEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"ControlInputMins")==0) return ControlInputMinsEnum; 1131 else if (strcmp(name,"ControlInputMins")==0) return ControlInputMinsEnum; 1127 1132 else if (strcmp(name,"ControlInputValues")==0) return ControlInputValuesEnum; 1128 1133 else if (strcmp(name,"CrouzeixRaviart")==0) return CrouzeixRaviartEnum; … … 1239 1244 else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum; 1240 1245 else if (strcmp(name,"LambdaS")==0) return LambdaSEnum; 1241 else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum; 1242 1250 else if (strcmp(name,"LevelsetfunctionPicard")==0) return LevelsetfunctionPicardEnum; 1243 1251 else if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum; 1244 1252 else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum; 1245 1253 else if (strcmp(name,"Loads")==0) return LoadsEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum; 1254 else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum; 1250 1255 else if (strcmp(name,"LoveHi")==0) return LoveHiEnum; 1251 1256 else if (strcmp(name,"LoveHr")==0) return LoveHrEnum; … … 1362 1367 else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum; 1363 1368 else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum; 1364 else if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum; 1365 1373 else if (strcmp(name,"Scaled")==0) return ScaledEnum; 1366 1374 else if (strcmp(name,"SealevelAbsolute")==0) return SealevelAbsoluteEnum; 1367 1375 else if (strcmp(name,"SealevelEmotion")==0) return SealevelEmotionEnum; 1368 1376 else if (strcmp(name,"SealevelInertiaTensorXZ")==0) return SealevelInertiaTensorXZEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"SealevelInertiaTensorYZ")==0) return SealevelInertiaTensorYZEnum; 1377 else if (strcmp(name,"SealevelInertiaTensorYZ")==0) return SealevelInertiaTensorYZEnum; 1373 1378 else if (strcmp(name,"SealevelInertiaTensorZZ")==0) return SealevelInertiaTensorZZEnum; 1374 1379 else if (strcmp(name,"SealevelNmotion")==0) return SealevelNmotionEnum; -
issm/trunk-jpl/src/c/shared/Enum/Synchronize.sh
r25627 r26099 17 17 18 18 #Deal with Analyses 19 if false ; then19 if true ; then 20 20 #Build EnumToAnalysis.cpp {{{ 21 21 #Header … … 39 39 #core 40 40 cat temp | grep [a-zA-Z0-9]Analysis | \ 41 grep -v DefaultAnalysis | grep -v FlaimAnalysis | grep -v SurfaceSlopeAnalysis | grep -v BedSlopeAnalysis | \41 grep -v DefaultAnalysis | grep -v RecoveryAnalysis | grep -v FlaimAnalysis | grep -v SurfaceSlopeAnalysis | grep -v BedSlopeAnalysis | \ 42 42 awk '{print "\t\t#ifdef _HAVE_"toupper(substr($1,1,length($1)-12))"_\n\t\t" "case " $1" : return new " substr($1,1,length($1)-4) "();\n\t\t#endif"}' \ 43 43 >> $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp -
issm/trunk-jpl/src/m/classes/initialization.m
r26059 r26099 22 22 sealevel = NaN; 23 23 bottompressure = NaN; 24 dsl = NaN; 25 str = NaN; 24 26 sample = NaN; 25 27 end … … 39 41 self.sealevel=project3d(md,'vector',self.sealevel,'type','node','layer',1); 40 42 self.bottompressure=project3d(md,'vector',self.bottompressure,'type','node','layer',1); 43 self.dsl=project3d(md,'vector',self.dsl,'type','node','layer',1); 44 self.str=project3d(md,'vector',self.str,'type','node','layer',1); 41 45 42 46 %Lithostatic pressure by default … … 66 70 if ismember('OceantransportAnalysis',analyses) 67 71 if strcmp(solution,'TransientSolution') & md.transient.isslc & md.transient.isoceantransport, 68 md = checkfield(md,'fieldname','initialization.bottompressure','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]); 72 md = checkfield(md,'fieldname','initialization.bottompressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]); 73 md = checkfield(md,'fieldname','initialization.dsl','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]); 74 md = checkfield(md,'fieldname','initialization.str','NaN',1,'Inf',1,'size',[1 1]); 69 75 end 70 76 end … … 156 162 fielddisplay(self,'channelarea','subglacial water channel area (for GlaDS) [m2]'); 157 163 fielddisplay(self,'sample','Realization of a Gaussian random field'); 164 fielddisplay(self,'bottompressure','Bottom pressures'); 165 fielddisplay(self,'dsl','Dynamic sea level.'); 166 fielddisplay(self,'str','Steric sea level.'); 158 167 end % }}} 159 168 function marshall(self,prefix,md,fid) % {{{ … … 167 176 WriteData(fid,prefix,'object',self,'fieldname','sealevel','format','DoubleMat','mattype',1); 168 177 WriteData(fid,prefix,'object',self,'fieldname','bottompressure','format','DoubleMat','mattype',1); 178 WriteData(fid,prefix,'object',self,'fieldname','str','format','DoubleMat','mattype',1); 179 WriteData(fid,prefix,'object',self,'fieldname','dsl','format','DoubleMat','mattype',1); 169 180 WriteData(fid,prefix,'object',self,'fieldname','temperature','format','DoubleMat','mattype',1); 170 181 WriteData(fid,prefix,'object',self,'fieldname','waterfraction','format','DoubleMat','mattype',1); -
issm/trunk-jpl/src/m/classes/solidearth.m
r26047 r26099 15 15 partitionice = []; 16 16 partitionhydro = []; 17 partitionocean = []; 17 18 end 18 19 methods (Static) … … 55 56 self.partitionice=[]; 56 57 self.partitionhydro=[]; 58 self.partitionocean=[]; 57 59 58 60 %no external solutions by default: … … 94 96 fielddisplay(self,'partitionice','ice partition vector for barystatic contribution'); 95 97 fielddisplay(self,'partitionhydro','hydro partition vector for barystatic contribution'); 98 fielddisplay(self,'partitionocean','ocean partition vector for barystatic contribution'); 96 99 if isempty(self.external), fielddisplay(self,'external','external solution, of the type solidearthsolution'); end 97 100 self.settings.disp(); … … 118 121 nparthydro=0; 119 122 end 123 if ~isempty(self.partitionocean), 124 npartocean=max(self.partitionocean)+2; 125 else 126 npartocean=0; 127 end 128 120 129 121 130 … … 124 133 WriteData(fid,prefix,'object',self,'fieldname','partitionhydro','mattype',1,'format','DoubleMat'); 125 134 WriteData(fid,prefix,'data',nparthydro,'format','Integer','name','md.solidearth.nparthydro'); 135 WriteData(fid,prefix,'object',self,'fieldname','partitionocean','mattype',1,'format','DoubleMat'); 136 WriteData(fid,prefix,'data',npartocean,'format','Integer','name','md.solidearth.npartocean'); 126 137 127 138 self.settings.marshall(prefix,md,fid); -
issm/trunk-jpl/test/NightlyRun/test2002.m
r26077 r26099 5 5 md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %700 km resolution mesh 6 6 7 %Geometry for the bed, arbitrary thickness of 1000: 8 md.geometry.bed=-ones(md.mesh.numberofvertices,1); 9 md.geometry.base=md.geometry.bed; 10 md.geometry.thickness=1000*ones(md.mesh.numberofvertices,1); 11 md.geometry.surface=md.geometry.bed+md.geometry.thickness; 12 13 7 14 %parameterize solidearth solution: 8 15 %solidearth loading: {{{ 9 md.masstransport.spcthickness=zeros(md.mesh.numberofelements+1,1); 10 md.initialization.sealevel=zeros(md.mesh.numberofvertices,1); 16 md.masstransport.spcthickness=[md.geometry.thickness;0]; 11 17 md.dsl.global_average_thermosteric_sea_level=[0;0]; 12 18 md.dsl.sea_surface_height_above_geoid=zeros(md.mesh.numberofvertices+1,1); 13 19 md.dsl.sea_water_pressure_at_sea_floor=zeros(md.mesh.numberofvertices+1,1); 20 md.smb.mass_balance=zeros(md.mesh.numberofvertices,1); 14 21 %antarctica 15 22 late=sum(md.mesh.lat(md.mesh.elements),2)/3; 16 23 longe=sum(md.mesh.long(md.mesh.elements),2)/3; 17 24 pos=find(late < -80); 18 md.masstransport.spcthickness( pos)=-100;25 md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100; 19 26 %greenland 20 27 pos=find(late>70 & late<80 & longe>-60 & longe<-30); 21 md.masstransport.spcthickness( pos)=-100;28 md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100; 22 29 23 30 %elastic loading from love numbers: … … 35 42 md.mask.ocean_levelset=-icemask; 36 43 37 %make sure that the elements that have loads are fully grounded:38 pos=find(md.masstransport.spcthickness);39 md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;40 44 41 45 %make sure wherever there is an ice load, that the mask is set to ice: 42 pos=find(md.masstransport.spcthickness );46 pos=find(md.masstransport.spcthickness(1:end-1)); 43 47 md.mask.ice_levelset(md.mesh.elements(pos,:))=-1; 44 48 % }}} 45 49 46 %Geometry for the bed, arbitrary: 47 md.geometry.bed=-ones(md.mesh.numberofvertices,1); 48 md.geometry.thickness=zeros(md.mesh.numberofvertices,1); 49 md.geometry.surface=zeros(md.mesh.numberofvertices,1); 50 md.geometry.base=zeros(md.mesh.numberofvertices,1); 50 %time stepping: 51 md.timestepping.start_time=0; 52 md.timestepping.time_step=1; 53 md.timestepping.final_time=1; 51 54 52 55 … … 55 58 md.initialization.vx=zeros(md.mesh.numberofvertices,1); 56 59 md.initialization.vy=zeros(md.mesh.numberofvertices,1); 60 md.initialization.sealevel=zeros(md.mesh.numberofvertices,1); 61 md.initialization.bottompressure=zeros(md.mesh.numberofvertices,1); 62 md.initialization.dsl=zeros(md.mesh.numberofvertices,1); 63 md.initialization.str=0; 57 64 58 65 %Materials: … … 76 83 md.transient.isthermal=0; 77 84 md.transient.ismasstransport=1; 85 md.transient.isoceantransport=1; 78 86 md.transient.isslc=1; 87 md.solidearth.requested_outputs={'Sealevel'}; 79 88 80 89 … … 100 109 md.solidearth.settings.elastic=1; 101 110 md.solidearth.settings.rotation=0; 111 md.solidearth.requested_outputs={'Sealevel'}; 102 112 md=solve(md,'tr'); 103 113 Selastic=md.results.TransientSolution.Sealevel;
Note:
See TracChangeset
for help on using the changeset viewer.