Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@

*.egg-info/
*.egg-info
*.dat
*.pyc
*.inp
.vscode/
12 changes: 0 additions & 12 deletions phreeqcinwt.egg-info/PKG-INFO

This file was deleted.

49 changes: 0 additions & 49 deletions phreeqcinwt.egg-info/SOURCES.txt

This file was deleted.

1 change: 0 additions & 1 deletion phreeqcinwt.egg-info/dependency_links.txt

This file was deleted.

4 changes: 0 additions & 4 deletions phreeqcinwt.egg-info/requires.txt

This file was deleted.

1 change: 0 additions & 1 deletion phreeqcinwt.egg-info/top_level.txt

This file was deleted.

8 changes: 0 additions & 8 deletions src/phreeqcinwt.egg-info/PKG-INFO

This file was deleted.

75 changes: 0 additions & 75 deletions src/phreeqcinwt.egg-info/SOURCES.txt

This file was deleted.

1 change: 0 additions & 1 deletion src/phreeqcinwt.egg-info/dependency_links.txt

This file was deleted.

4 changes: 0 additions & 4 deletions src/phreeqcinwt.egg-info/requires.txt

This file was deleted.

1 change: 0 additions & 1 deletion src/phreeqcinwt.egg-info/top_level.txt

This file was deleted.

59 changes: 6 additions & 53 deletions src/phreeqcinwt/core/solution_state_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,15 @@


class solution_utils:
def _process_activities(self, result):

@avdudchenko avdudchenko May 24, 2026

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So we are completely dropping reporting activity coefficients for phases/species?
Osmotic pressure use this - hence the dependence (we get activities for all specie/h2o) and then use h2o to get osmotic pressure.

I think it is fine to drop all of this as I do not seem many/any use cases (I only added as I tried to see if useing raw activites would make better surrogates -it did not...)

# print(result)
activities = {}
for element, name in self.return_dict.items():
idx = np.where("la_" + element == np.array(result[0]))[0]
if len(idx) > 0:
activities[element] = {
"value": 10 ** result[1][idx[0]],
"units": "dimensionless",
}
activities["log10_{}".format(element)] = {
"value": result[1][idx[0]],
"units": "dimensionless",
}
else:
activities[element] = {"value": None, "units": "dimensionless"}
activities["log10_{}".format(element)] = {
"value": None,
"units": "dimensionless",
}
idx = np.where("la_H2O" == np.array(result[0]))[0]
# print(idx)
activities["H2O"] = {"value": 10 ** result[1][idx[0]], "units": "dimensionless"}
activities["log10_{}".format("H2O")] = {
"value": result[1][idx[0]],
"units": "dimensionless",
}
# print(activities)
return activities

def _get_osmotic_pressure(self, result, solution_state, activities):
def _get_osmotic_pressure(self, result, solution_state):
idx = np.where("h2o_vm" == np.array(result[0]))[0]
activity_idx = np.where("la_H2O" == np.array(result[0]))[0]

if len(idx) == 0 or len(activity_idx) == 0:
return {"units": "Pa", "value": None}

vm = result[1][idx[0]] # cm3/mol
activity = activities["H2O"]["value"]
activity = 10 ** result[1][activity_idx[0]]
R = 8.31446261815324 # m3⋅Pa⋅K−1⋅mol−1
T = solution_state["Temperature"]["value"] + 273.15
if vm == 0:
Expand Down Expand Up @@ -103,27 +77,6 @@ def _get_solution_comp(
}
return aque_species_comp

def _get_diffusion_transfer_number(
self,
result,
):
transport_data = {"diffusion": {}, "transfer_number": {}}
for i in range(len(result[1])):
if isinstance(result[1][i], str) and "diffusion" in result[1][i]:
species = result[1][i].split(" ")[1]
transport_data["diffusion"][species] = {
"value": result[1][i + 1],
"units": "m2/s",
}
for i in range(len(result[1])):
if isinstance(result[1][i], str) and "transfer_number" in result[1][i]:
species = result[1][i].split(" ")[1]
transport_data["transfer_number"][species] = {
"value": result[1][i + 1],
"units": "unitless",
}
return transport_data

def _get_scaling_tendencies(self, result, report=False):
result_dict = {}
for i in range(len(result[1])):
Expand Down
61 changes: 1 addition & 60 deletions src/phreeqcinwt/phreeqc_wt_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,7 @@ def get_solution_state(
command += " -charge_balance true\n"
command += " -water true\n"
command += " -percent_error true\n"
command += " -activities H2O\n"
command += " -user_punch true\n"

command += "\n"
Expand All @@ -477,47 +478,13 @@ def get_solution_state(
solution_composition["composition"] = self._get_solution_comp(
result,
)

command = "USE SOLUTION {}\n".format(str(solution_number))

command += "EQUILIBRIUM_PHASES\n"
command += "USER_PUNCH\n"
command += "-start\n"
cur_count = 10
for element in solution_composition["composition"]["species"].keys():
command += '{} PUNCH "diffusion\t{element}" DIFF_C("{element}")\n'.format(
cur_count, element=element
)
cur_count += 10
for element in solution_composition["composition"]["species"].keys():
command += (
'{} PUNCH "transfer_number\t{element}" T_SC("{element}")\n'.format(
cur_count, element=element
)
)
cur_count += 10
command += "-end\n"
command += "SELECTED_OUTPUT\n"
command += " -user_punch true\n"
command += " -activities "
for element in solution_composition["composition"]["species"].keys():
command += " {} ".format(element)
command += " H2O\n"
command += "\n"
command += "END\n"
self.run_string(command)

result2 = self.phreeqc.get_selected_output_array()
solution_composition["activities"] = self._process_activities(result2)
solution_composition["transport"] = self._get_diffusion_transfer_number(result2)
solution_composition["solution_state"].update(
self.get_total_concetration(solution_composition)
)
solution_composition["solution_state"]["Osmotic pressure"] = (
self._get_osmotic_pressure(
result,
solution_composition["solution_state"],
solution_composition["activities"],
)
)
self.current_state = solution_composition
Expand Down Expand Up @@ -554,32 +521,6 @@ def get_solution_state(
mass["mw (g/mol)"],
"g/mol",
)

print("activities------------------")
for scalant, SI in solution_composition["activities"].items():
print(
"\t",
scalant,
SI,
)

# print("diffusion------------------")
# for scalant, SI in solution_composition["transport"]["diffusion"].items():
# print(
# "\t",
# scalant,
# SI,
# )

# print("transfer number------------------")
# for scalant, SI in solution_composition["transport"][
# "transfer_number"
# ].items():
# print(
# "\t",
# scalant,
# SI,
# )
print("scaling tendendencies------------------")
for scalant, SI in solution_composition["scaling_tendencies"].items():
if scalant == "max":
Expand Down
Loading