| 424 | |
| 425 | |
| 426 | void* OPS_ASDCoupledHinge3D() { |
| 427 | static bool first_done = false; |
| 428 | if (!first_done) { |
| 429 | opserr << "Using ASDCoupledHinge3D - Developed by: Diego Talledo, Massimo Petracca, Guido Camata, ASDEA Software Technology\n"; |
| 430 | first_done = true; |
| 431 | } |
| 432 | |
| 433 | if (OPS_GetNumRemainingInputArgs() < 5) { |
| 434 | opserr << "WARNING insufficient arguments\n" |
| 435 | "Want: section ASDCoupledHinge3D tag? Ktor? Kvy? Kvz? Kax? -initialFlexuralStiffness \"Ky?\" \"Kz?\"" |
| 436 | "<-simpleStrengthDomain Nmin? Nmax? MyMax? MzMax? NMMax?> <-strengthDomainByPoints nN? nTheta? {listN} {listMy} {listMz}> <-hardening as?>" |
| 437 | "-thetaP \"thetaPy?\" \"thetaPz?\" -thetaPC \"thetaPCy?\" \"thetaPCz?\"" |
| 438 | "<-hystereticParams rDispP? rForceP? uForceP? rDispN? rForceN? uForceN?>" |
| 439 | "<-damageUnloadStiffness gk1? gk2? gk3? gk4? gklim?>" |
| 440 | "<-damageReloadStiffness gd1? gd2? gd3? gd4? gdlim?>" |
| 441 | "<-damageForce gf1? gf2? gf3? gf4? gflim?>" |
| 442 | "<-damageType type? ge?>\n"; |
| 443 | return 0; |
| 444 | } |
| 445 | |
| 446 | int tag; |
| 447 | int numdata = 1; |
| 448 | if (OPS_GetIntInput(&numdata, &tag) < 0) { |
| 449 | opserr << "WARNING invalid ASDCoupledHinge3D tag" << endln; |
| 450 | return 0; |
| 451 | } |
| 452 | |
| 453 | numdata = 4; |
| 454 | double data[6]; |
| 455 | if (OPS_GetDoubleInput(&numdata, data) < 0) { |
| 456 | opserr << "WARNING invalid double inputs\n" |
| 457 | "section ASDCoupledHinge3D: " << tag << endln; |
| 458 | return 0; |
| 459 | } |
| 460 | double Ktor = data[0]; |
| 461 | double Kv_y = data[1]; |
| 462 | double Kv_z = data[2]; |
| 463 | double Kax = data[3]; |
| 464 | |
| 465 | //opserr << "Parsed mandatory data\n"; |
| 466 | |
| 467 | // start parsing all optional parameters: |
| 468 | // string tcl expression for initial stiffness: supported parameters for expressions: |
| 469 | // __N__ : committed axial load |
| 470 | // __Vy__ : commited shear load in local y direction |
| 471 | // __Vz__ : commited shear load in local z direction |
| 472 | // __My__ : commited moment in local y direciton |
| 473 | // __Mz__ : commited moment in local z direction |
| 474 | // __M__ : infers by itself the direction y or z |
| 475 | // __V__ : infers by itself the direction y or z |
| 476 | |
| 477 | // an expression for effective stiffness in y and z local directions |
| 478 | bool yieldStiffnessDefined = false; |
| 479 | std::string theRawInitialStiffnessExpressionY; |
| 480 | std::string theRawInitialStiffnessExpressionZ; |
| 481 | std::string theInitialStiffnessExpressionY; |
| 482 | std::string theInitialStiffnessExpressionZ; |
| 483 |
no test coverage detected